Adaptive Cards Mcp

io.github.VikrantSingh01由 GitHub 帳號 VikrantSingh01 發布v2.3.0更新於 Oct 24, 2026

Generate, validate, and optimize Adaptive Cards for Teams, Outlook, and Copilot.

已驗證STDIO僅桌面效率與工作流開發者工具

概覽

AI 產生的概覽

一個本機 MCP 伺服器,讓助理為 Teams、Outlook、Copilot 等 Microsoft 平台產生、驗證、最佳化並轉換 Adaptive Cards。

可以做什麼
依自然語言描述或原始資料產生 Adaptive Card,並自動選擇表格、事實集、圖表或清單等版面。驗證卡片的結構描述錯誤、無障礙評分與宿主相容性,並針對無障礙與效能進行最佳化。把靜態卡片轉為資料綁定的範本,並在不同結構描述版本與宿主設定之間升級或降級卡片。推薦版面模式,並執行產生、驗證、最佳化、範本化、轉換的多步驟流程。讀取 v1.6 結構描述、宿主相容性矩陣、範例卡片與版面模式等參考資源。
適用情境
當你為 Teams、Outlook、Copilot、Viva Connections 或 Webex 建置或維護 Adaptive Card,希望助理產出有效 JSON、修正轉譯或無障礙問題,或讓卡片適配特定宿主與結構描述版本時使用。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js,無需安裝步驟。透過 MCP 宿主使用時不需要 API 金鑰,智慧由宿主模型提供。選用設定包括 SSE 模式的 TRANSPORT 與 PORT、HTTP 驗證的 MCP_API_KEY 與 MCP_AUTH_MODE,以及獨立使用時所需的 ANTHROPIC_API_KEY、OPENAI_API_KEY 或 AZURE_OPENAI_API_KEY 等供應商金鑰。
安裝前請注意
遙測預設關閉;若透過 MCP_TELEMETRY 啟用,會將匿名使用指標(工具名稱、呼叫次數、耗時、作業系統、Node 與套件版本)傳送至 PostHog,POSTHOG_API_KEY 與 POSTHOG_HOST 用於設定該回報。供應商 API 金鑰僅在獨立或函式庫使用時需要,應避免放入共用設定。卡片輸出為 JSON,建議先審閱再貼到設計工具或正式流程。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Adaptive Cards Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Adaptive Cards MCP

[License: MIT] [TypeScript] [Adaptive Cards] [CI] [npm] [npm downloads] [MCP Registry] [GitHub stars]

[adaptive-cards-mcp — 9 tools, 21 patterns, 924 tests, 0 competitors]

An MCP server that helps AI assistants generate valid, accessible Adaptive Cards for Teams, Outlook, Copilot, and other Microsoft surfaces. 9 tools, 3 guided workflows, 924 tests.

Blog: I Built an MCP Server That Makes AI 10x Better at Adaptive Cards

Demo

Your browser does not support the video tag.

Quick Start

No install needed — npx downloads and runs it automatically.

1. Add to your AI assistant

Claude Code
bash
claude mcp add adaptive-cards-mcp -- npx adaptive-cards-mcp
GitHub Copilot (VS Code)

Add to .vscode/mcp.json:

json
{  "servers": {    "adaptive-cards-mcp": {      "command": "npx",      "args": ["adaptive-cards-mcp"]    }  }}
Cursor

Add to .cursor/mcp.json:

json
{  "mcpServers": {    "adaptive-cards-mcp": {      "command": "npx",      "args": ["adaptive-cards-mcp"]    }  }}
Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "adaptive-cards-mcp": {      "command": "npx",      "args": ["adaptive-cards-mcp"]    }  }}
Microsoft 365 Copilot / Copilot Studio (HTTP/SSE)
bash
TRANSPORT=sse PORT=3001 npx adaptive-cards-mcp
# With auth enabledTRANSPORT=sse MCP_API_KEY=your-secret npx adaptive-cards-mcp
  1. Open Copilot Studio → your agent → Tools → Add a tool → New tool → Model Context Protocol
  2. Enter your MCP server URL (e.g., https://your-server.azurewebsites.net/sse)
  3. Select the tools to expose
OpenAI ChatGPT
  1. Enable Developer mode in ChatGPT settings
  2. Go to Settings → Connectors → Create
  3. Enter your MCP server HTTPS URL

2. Start using it

Just ask your AI assistant in natural language:

> Create an expense approval card for Teams
> Convert this JSON data into an Adaptive Card table
> Validate this card and fix accessibility issues
> Make this card work on Outlook (v1.4)

The AI picks the right tools, generates a valid card, validates it, and returns production-ready JSON you can paste directly into the Adaptive Cards Designer to preview.

Usage

Natural language (recommended)

Describe what you need — the AI figures out which tools to call:

Approvals and workflows:

> Create an expense approval card for Teams with requester photo, amount,  category, line items, and approve/reject/comment buttons
> Build a time-off request card — employee name, dates, remaining PTO balance,  manager approval with optional rejection reason

Notifications and alerts:

> Create a CI/CD deployment notification: service name, environment, build number,  commit SHA, deploy status with rollback button
> Generate a PagerDuty-style incident alert card — severity P1, affected service,  start time, on-call engineer, acknowledge/escalate actions

Data and reports:

> Here's our Q1 sales data, turn it into a card:  [{"region":"APAC","revenue":1250000,"growth":"12%"},   {"region":"EMEA","revenue":980000,"growth":"8%"},   {"region":"Americas","revenue":2100000,"growth":"15%"}]
> Convert this CSV to a card:  Employee,Department,Start Date,Status  Jane Kim,Engineering,2026-01-15,Active  Bob Lee,Design,2026-02-01,Active  Carol Wu,PM,2026-03-10,Onboarding

Forms and input:

> Create an employee onboarding checklist — new hire name, start date,  assigned buddy, IT setup tasks with checkboxes, and a submit button
> Build a customer feedback survey card with a 1-5 star rating,  comment field, and NPS score dropdown

Profiles and status:

> Create a team member profile card with photo, name, title, department,  skills tags, and contact buttons for email/chat/calendar
> Build a service health dashboard card showing 5 microservices  with status indicators (healthy/degraded/down) and last check time

Cross-host and versioning:

> This card works in Teams but breaks in Outlook — fix it> Make this card work on Webex (v1.3 only, no Table, no Action.Execute)> Downgrade this v1.6 card to v1.4 for Viva Connections

Validation and optimization:

> Validate this card and tell me what's wrong — I'm getting render errors> Make this card accessible — it needs to work with screen readers> This card is too complex, optimize it for performance and compact layout
What you sayWhat the AI calls
"Create a leave approval card for Teams"generate_and_validate → optimized card with Approve/Reject actions
"Here's my API response, make it a card"data_to_card → auto-picks Table/FactSet/List based on data shape
"Is this card valid for Outlook?"validate_card → schema errors, accessibility score, host compatibility
"Make this card accessible"optimize_card → adds wrap, altText, speak, heading styles
"Convert this card to a reusable template"template_card → static values become ${expression} bindings
"This card needs to work on v1.3"transform_card → downgrades, removes unsupported features
"What layout should I use for a dashboard?"suggest_layout → pattern recommendation with rationale

Slash commands (MCP prompts)

For guided, multi-step workflows, use the built-in prompts directly:

Create a card:

> /adaptive-cards-mcp:create-adaptive-card  description: "Expense approval with requester photo, line items table, total amount,                and approve/reject buttons with comment field"  host: teams  intent: approval

Runs: generate → validate → optimize → host config

> /adaptive-cards-mcp:create-adaptive-card  description: "CI/CD deployment notification with service name, environment,                build number, status badge, and rollback action"  host: teams  intent: notification
> /adaptive-cards-mcp:create-adaptive-card  description: "Employee profile card with photo, name, title, department,                contact info, and skills tags"  host: outlook  intent: profile

Convert data to a card:

> /adaptive-cards-mcp:convert-data-to-card  data: [    { "task": "Review PR #482", "assignee": "Jane", "due": "2026-03-21", "status": "pending" },    { "task": "Deploy hotfix v2.1.3", "assignee": "Bob", "due": "2026-03-19", "status": "in-progress" },    { "task": "Update API docs", "assignee": "Carol", "due": "2026-03-22", "status": "done" }  ]  title: "Sprint Tasks"  presentation: table
> /adaptive-cards-mcp:convert-data-to-card  data: { "service": "api-gateway", "cpu": "92%", "memory": "78%", "requests": "12.4k/min",          "p99_latency": "245ms", "error_rate": "0.3%", "uptime": "99.97%" }  title: "Service Health — api-gateway"  presentation: facts

Runs: analyze data → pick best layout → validate output

Review an existing card:

> /adaptive-cards-mcp:review-adaptive-card  card: { "type": "AdaptiveCard", "version": "1.6", "body": [...your card...] }  host: outlook

Runs: validate schema + accessibility → auto-fix issues → summary report

npm library (programmatic)

For use in your own code (bots, APIs, CI pipelines), install the package:

bash
npm install adaptive-cards-mcp
typescript
import { generateCard, validateCardFull, dataToCard, optimizeCard } from 'adaptive-cards-mcp';
const result = await generateCard({  content: "Create a flight status card",  host: "teams",  intent: "display"});
console.log(result.card);       // Adaptive Card JSONconsole.log(result.cardId);     // Reference ID for subsequent callsconsole.log(result.validation); // Schema + accessibility + host compat

See the Library API reference for full details.

What you get back

Card-producing tools return two clean blocks — card JSON you can copy, and a metadata summary:

```json{  "type": "AdaptiveCard",  "version": "1.6",  "body": [ ... ],  "actions": [ ... ]}```
---
**Validation:** Valid**Accessibility Score:** 100/100**Elements:** 7 | **Nesting Depth:** 2 | **Version:** 1.6**Card ID:** card-abc123**Steps:** generate → validate → optimize**Try it out:** Paste the card JSON into the [Adaptive Cards Designer](https://adaptivecards.microsoft.com/designer)**Local Preview:** file:///tmp/ac-preview-xyz.html

Tools, Prompt and Usage

[9 MCP tools for Adaptive Cards]

[generate_card producing a leave approval card for Teams]

Reference

MCP Tools (9)

ToolDescription
generate_cardNatural language / data → valid Adaptive Card v1.6 JSON
validate_cardSchema validation + accessibility score + host compatibility + suggested fixes
data_to_cardAuto-select Table / FactSet / Chart / List from data shape
optimize_cardImprove accessibility, performance, modernize actions
template_cardStatic card → ${expression} data-bound template
transform_cardVersion upgrade/downgrade, host-config adaptation
suggest_layoutRecommend best layout pattern for a description
generate_and_validateGenerate + validate + optionally optimize in one call
card_workflowMulti-step pipeline: generate → optimize → template → transform

MCP Prompts (3)

PromptPipelineSlash command
create-adaptive-cardgenerate → validate → optimize → host config/adaptive-cards-mcp:create-adaptive-card
review-adaptive-cardvalidate → auto-fix → before/after report/adaptive-cards-mcp:review-adaptive-card
convert-data-to-cardanalyze data → pick presentation → validate/adaptive-cards-mcp:convert-data-to-card

MCP Resources (5) + Templates (2)

ResourceDescription
ac://schema/v1.6Complete JSON Schema for Adaptive Cards v1.6
ac://hostsHost compatibility matrix for all 7 hosts
ac://hosts/{hostName}Single host compatibility info
ac://examples36 curated example cards catalog
ac://examples/{intent}Examples filtered by intent
ac://patterns21 canonical layout patterns
ac://cardsSession card store (cards by cardId)

Host Compatibility

HostMax VersionNotes
Generic1.6Default — no host-specific constraints
Teams1.6Max 6 actions, Action.Execute preferred
Outlook1.4Limited elements, max 4 actions
Web Chat1.6Full support
Windows1.6Subset of elements
Viva Connections1.4SPFx-based ACE framework
Webex1.3No Table, no Action.Execute

Configuration

Environment VariableDescriptionDefault
TRANSPORTTransport mode: stdio or ssestdio
PORTHTTP port for SSE transport3001
MCP_API_KEYAPI key for HTTP auth(disabled)
MCP_AUTH_MODEAuth mode: bearer for token validation(disabled)
ANTHROPIC_API_KEYAnthropic Claude API key(deterministic mode)
OPENAI_API_KEYOpenAI API key(deterministic mode)
AZURE_OPENAI_API_KEYAzure OpenAI API key(disabled)
AZURE_OPENAI_ENDPOINTAzure OpenAI endpoint URL(disabled)
OLLAMA_BASE_URLOllama local model URL(disabled)
DEBUGEnable debug logging: adaptive-cards-mcp(disabled)
MCP_RATE_LIMITEnable rate limiting: truefalse
MCP_TELEMETRYEnable telemetry: true to opt-infalse
POSTHOG_API_KEYPostHog project API key for remote reporting(disabled)
POSTHOG_HOSTPostHog API hosthttps://eu.i.posthog.com

Note: When used via MCP (Claude Code, Copilot, Cursor), the host LLM provides the intelligence — no API key needed. Set an API key only for standalone/library usage.

Telemetry & Privacy

Telemetry is opt-in and disabled by default. When enabled, the server collects anonymous usage metrics and sends aggregated data to PostHog to help improve the project.

How to enable:

  • VS Code extension: A one-time consent prompt appears on first install. You can change it anytime in Settings → Adaptive Cards → Telemetry.
  • CLI / MCP server: Set MCP_TELEMETRY=true in your environment, or edit ~/.adaptive-cards-mcp/config.json and set "telemetry": true.

What is sent: Tool names, call counts, durations, error rates, platform (OS), Node version, package version, transport type.

What is never sent: Card content, user prompts, data payloads, IP addresses, file paths, environment variables.

A random session ID is generated each time the server starts — no persistent identifier is stored across sessions.

To disable: Set MCP_TELEMETRY=false or leave unconfigured (default is off).

Development

bash
cd packages/corenpm installnpm run build         # TypeScript + copy data filesnpm test              # 924 tests (vitest)npm run test:coverage # With coverage reportnpm run lint          # TypeScript type checknpm run lint:eslint   # ESLint checknpm run format        # Prettier formatting

Local Testing

Smoke test all tools and prompts:

bash
./test-mcp-tools.sh --local     # 28 tests — all 9 tools with real-world scenarios./test-mcp-prompts.sh --local   # 10 tests — all 3 prompts (guided workflows)./test-mcp-tools.sh             # same tests against published npm package./test-mcp-prompts.sh           # same tests against published npm package

MCP Inspector (visual UI):

bash
cd packages/core && npm run buildnpx @modelcontextprotocol/inspector node dist/server.js# Opens http://localhost:6274 — pick a tool, enter params, click Run

Terminal (stdio):

bash
cd packages/coreecho '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"generate_card","arguments":{"content":"expense approval card","intent":"approval","host":"teams"}}}' \  | node dist/server.js 2>/dev/null | tail -1 | python3 -m json.tool

SSE mode:

bash
TRANSPORT=sse PORT=3001 node packages/core/dist/server.jscurl http://localhost:3001/health

Architecture

packages/core/src/├── server.ts              # MCP server (stdio + SSE, 9 tools, 3 prompts)├── index.ts               # Library exports├── types/                 # TypeScript interfaces├── core/                  # Schema validator, analyzer, accessibility, host compat├── generation/            # 21 layout patterns, data analyzer, assembler, LLM client├── tools/                 # 9 tool handlers├── utils/                 # Logger, input guards, rate limiter, card store, auth, telemetry, preview└── data/                  # v1.6 schema, 36 examples, host configs

Ecosystem

PackageDescription
packages/coreMCP server + npm library (9 tools) — npm
packages/vscode-extensionVS Code extension — adaptive-cards-ai-vscode

What's New in v2.3.0

  • Accessibility 100/100 — All generated cards now include speak property automatically
  • No more broken JSON — Newlines in content sanitized, titles no longer truncate at version numbers
  • Host-aware generation — generate_and_validate auto-downgrades card version for Outlook (v1.4), Webex (v1.3)
  • CSV fix — CSV data correctly parsed before building FactSet/Table cards
  • Telemetry — /metrics endpoint with session tracking, per-tool call distribution, host/intent usage
  • MCP Registry — Listed on the official MCP Registry
  • E2E test suite — 28 tool tests + 10 prompt tests with quality gates (a11y score, element count)

See the full CHANGELOG for details.

Links

  • npm — Install and package details
  • GitHub — Source code, issues, and contributions
  • MCP Registry — Official MCP server listing

Related Projects

License

MIT

來源:README.md,提交 0e439bb

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v2.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分