|
| 1 | +## Summary |
| 2 | + |
| 3 | +Adds a JSON Schema for MCP client capabilities, providing a formal structure for documenting what features each client supports. |
| 4 | + |
| 5 | +Closes #718 |
| 6 | + |
| 7 | +## Acknowledgments |
| 8 | + |
| 9 | +This schema builds on the work done by @jancurn in [mcp-client-capabilities](https://github.com/apify/mcp-client-capabilities), which established the core capability structure and has catalogued 40+ clients. This PR extends that foundation with additional fields for transports, platforms, authentication, and metadata. |
| 10 | + |
| 11 | +## Changes |
| 12 | + |
| 13 | +- **`docs/schemas/client-registry.json`** - JSON Schema 2020-12 definition |
| 14 | + |
| 15 | +## What's Included |
| 16 | + |
| 17 | +This PR focuses solely on the **schema definition**. Intentionally not included: |
| 18 | + |
| 19 | +- **Client data** - The mcp-client-capabilities repo already has the data. Once the schema is agreed upon, that data can be migrated. |
| 20 | +- **Validation scripts** - Can be added in a follow-up PR once the schema is finalized. |
| 21 | + |
| 22 | +## Schema Overview |
| 23 | + |
| 24 | +The schema tracks BOTH what clients declare to servers (sampling, elicitation, roots) AND which server capabilities clients can consume (tools, resources, prompts). This is intentionally broader than the MCP spec's `ClientCapabilities` interface. |
| 25 | + |
| 26 | +**Minimal entry:** |
| 27 | +```json |
| 28 | +{ |
| 29 | + "my-client": { |
| 30 | + "title": "My Client", |
| 31 | + "url": "https://example.com", |
| 32 | + "protocolVersion": "2025-11-25" |
| 33 | + } |
| 34 | +} |
| 35 | +``` |
| 36 | + |
| 37 | +**Full entry:** |
| 38 | +```json |
| 39 | +{ |
| 40 | + "claude-code": { |
| 41 | + "title": "My Advanced Client", |
| 42 | + "url": "https://example.com", |
| 43 | + "protocolVersion": "2025-11-25", |
| 44 | + "category": "cli", |
| 45 | + "platforms": ["windows", "macos", "linux"], |
| 46 | + "transports": { "stdio": {} }, |
| 47 | + "tools": { "listChanged": true }, |
| 48 | + "resources": { "listChanged": true, "subscribe": true }, |
| 49 | + "prompts": { "listChanged": true }, |
| 50 | + "sampling": { "context": {}, "tools": {} }, |
| 51 | + "elicitation": { "form": {}, "url": {} }, |
| 52 | + "roots": { "listChanged": true }, |
| 53 | + "tasks": { |
| 54 | + "list": {}, |
| 55 | + "cancel": {}, |
| 56 | + "requests": { "sampling": { "createMessage": {} } } |
| 57 | + }, |
| 58 | + "metadata": { |
| 59 | + "vendor": "Some Vendor", |
| 60 | + "lastVerified": "2026-01-15" |
| 61 | + } |
| 62 | + } |
| 63 | +} |
| 64 | +``` |
| 65 | + |
| 66 | +## Features |
| 67 | + |
| 68 | +| Feature | Description | |
| 69 | +|---------|-------------| |
| 70 | +| **Capabilities** | tools, resources, prompts, sampling, elicitation, roots, completions, logging, instructions, tasks | |
| 71 | +| **Status values** | `{}` (supported), or `{ "status": "full\|partial\|unsupported\|untested", "notes": "..." }` | |
| 72 | +| **Categories** | ide, chat, cli, automation, browser-extension, library, other | |
| 73 | +| **Platforms** | windows, macos, linux, web, ios, android | |
| 74 | +| **Transports** | stdio, sse, streamableHttp | |
| 75 | +| **Auth** | oauth (with PKCE, grantTypes), header, none | |
| 76 | +| **Metadata** | vendor, openSource, sourceUrl, license, lastVerified, conformanceScore | |
| 77 | + |
| 78 | +## Related |
| 79 | + |
| 80 | +- [modelcontextprotocol#1814](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1814) - Client compatibility matrix |
| 81 | +- [mcp-client-capabilities](https://github.com/apify/mcp-client-capabilities) - Community client data |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +🦉 Generated with [Claude Code](https://claude.ai/code) and reviewed by me |
0 commit comments