{"apiVersion":"v1","directorySlug":"mcpdiff-mcp-fce8ebf595","title":"mcpdiff: learn how MCP works, diff every spec version","description":"Learn how the Model Context Protocol works and diff every spec version, up to 2026-07-28. Step through real messages, validate your own, and talk to a simulated server.","pageUrl":"https://www.mcpbundles.com/skills/mcpdiff-mcp-fce8ebf595","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.mcpdiff.dev/mcp","hostedMcpUrl":null,"toolCount":16,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.mcpdiff/mcpdiff-mcp-fce8ebf595","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"validate_message","description":"Check a JSON-RPC message (request, notification, result, error or batch) against every MCP spec version, or one. Reports which versions accept it, each error with its JSON path, and fields an older version would silently drop. For a result or error, pass responds_to with the request method it answers, or only the envelope is checked.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["message"],"properties":{"message":{},"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"},"responds_to":{"type":"string","maxLength":200}}},"title":"Validate an MCP message","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate_message","displayName":"Validate an MCP message"},{"name":"validate_type","description":"Check a value against a single named type from the MCP schema, such as Tool, CallToolResult, Resource or ElicitRequest params. Also flags fields the type doesn't declare in that version. Use find_type if you don't know the name.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["type","value"],"properties":{"type":{"type":"string","maxLength":200},"value":{},"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"}}},"title":"Validate a value as one MCP type","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate_type","displayName":"Validate a value as one MCP type"},{"name":"find_type","description":"Given a JSON value, list the MCP schema types it satisfies, most specific first. Only types that declare every field in the value are considered.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["value"],"properties":{"value":{},"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"}}},"title":"Find which MCP types a value matches","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_type","displayName":"Find which MCP types a value matches"},{"name":"validate_with_schema","description":"Check data against any JSON Schema (draft-07, 2019-09 or 2020-12, picked from $schema), for example a tool's inputSchema or outputSchema. The schema itself is checked first. Remote $refs are not fetched.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["schema","data"],"properties":{"data":{},"schema":{}}},"title":"Validate JSON against your own JSON Schema","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate_with_schema","displayName":"Validate JSON against your own JSON Schema"},{"name":"generate_example","description":"Generate a minimal, schema-valid example for a JSON-RPC method (e.g. tools/call) or a named type (e.g. CallToolResult) in one spec version. Required fields only, with placeholder values to replace.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"type":{"type":"string","maxLength":200},"method":{"type":"string","maxLength":200},"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"}}},"title":"Generate a valid MCP example","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"generate_example","displayName":"Generate a valid MCP example"},{"name":"infer_schema","description":"Infer a JSON Schema (2020-12) from example JSON, for example to write a tool's inputSchema from the arguments you expect, or its outputSchema from a real structuredContent. Detects date-time, date, email, uri and uuid strings.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["example"],"properties":{"closed":{"type":"boolean"},"example":{},"samples":{"type":"boolean"}}},"title":"Infer a JSON Schema from examples","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"infer_schema","displayName":"Infer a JSON Schema from examples"},{"name":"lint_tools","description":"Review tool definitions beyond schema validity: names clients may reject, missing descriptions, required fields that aren't declared, duplicate names and contradictory annotations. Accepts one Tool, an array, a ListToolsResult or a whole tools/list response.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["tools"],"properties":{"tools":{},"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"}}},"title":"Lint MCP tool definitions","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"lint_tools","displayName":"Lint MCP tool definitions"},{"name":"check_hallucinations","description":"Spot what AI-generated MCP code tends to get wrong: OpenAI, Anthropic or Gemini tool shapes, snake_case field names, methods and protocol versions that don't exist, misplaced fields and the deprecated SSE transport. Returns a score out of 100 and each finding.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["json"],"properties":{"json":{}}},"title":"Check AI-written MCP for hallucinations","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"check_hallucinations","displayName":"Check AI-written MCP for hallucinations"},{"name":"list_versions","description":"Every MCP spec version this server knows, oldest first, with its status, highlights and changelog link.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"List MCP spec versions","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_versions","displayName":"List MCP spec versions"},{"name":"diff_versions","description":"Compare the schemas of two versions: types added, removed and changed, and methods added or removed. Pass type to see field-level changes for one type.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["from","to"],"properties":{"to":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"},"from":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"},"type":{"type":"string","maxLength":200},"include_descriptions":{"type":"boolean"}}},"title":"Diff two MCP spec versions","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"diff_versions","displayName":"Diff two MCP spec versions"},{"name":"get_type","description":"Return the JSON Schema definition of one MCP type in one version, and the versions that define it.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["type"],"properties":{"type":{"type":"string","maxLength":200},"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"}}},"title":"Get an MCP type's schema","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_type","displayName":"Get an MCP type's schema"},{"name":"list_methods","description":"Every JSON-RPC method in the spec with who sends it, and the versions it exists in. Pass version to list one version's methods.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"}}},"title":"List MCP methods","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_methods","displayName":"List MCP methods"},{"name":"lookup_term","description":"Plain-language definitions of MCP terms such as host, capability, elicitation or structured content.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"query":{"type":"string","maxLength":100,"minLength":1}}},"title":"Look up an MCP term","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"lookup_term","displayName":"Look up an MCP term"},{"name":"about","description":"What mcpdiff checks, where its schemas come from, its limits and privacy, and who runs it.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"About this server","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"about","displayName":"About this server"},{"name":"open_live_view","description":"Show MCP messages to the user live, on a page at mcpdiff.dev that draws them as a sequence diagram and checks each against the spec. Call with no session to start one: you get a URL to give the user, who must open it before anything you push can be shown. Call with a session (the user may paste one from the site) to check whether its tab is open. Messages go straight to the open tab and are not stored; closing the tab discards them. Then use push_to_live_view.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"session":{"type":"string","maxLength":64}}},"title":"Open a live view in the browser","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"open_live_view","displayName":"Open a live view in the browser"},{"name":"push_to_live_view","description":"Send one or more MCP JSON-RPC messages to the user's open live view, in the order they happened, so they can watch the exchange as a sequence diagram with every message checked against the spec. Also returns the validation, so you can fix a message and push it again. Get a session from open_live_view or from the user. Up to 50 messages per call. Values that look like credentials are masked before they leave the server. Messages go straight to the open tab and are not stored; closing the tab disc","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session"],"properties":{"note":{"type":"string","maxLength":500},"schema":{},"message":{},"open_in":{"enum":["sequence","message","type","schema","tools","ai","infer"],"type":"string"},"session":{"type":"string","maxLength":64},"version":{"enum":["2024-11-05","2025-03-26","2025-06-18","2025-11-25","2026-07-28"],"type":"string"},"messages":{"type":"array","items":{},"maxItems":50},"type_name":{"type":"string","maxLength":200},"responds_to":{"type":"string","maxLength":200}}},"title":"Push MCP messages to a live view","logicalName":"push_to_live_view","displayName":"Push MCP messages to a live view","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=mcpdiff-learn-how-MCP-works-diff-every-spec-version&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AubWNwZGlmZi5kZXYvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22mcpdiff-learn-how-MCP-works-diff-every-spec-version%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.mcpdiff.dev%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22mcpdiff-learn-how-MCP-works-diff-every-spec-version%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.mcpdiff.dev%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=mcpdiff%3A+learn+how+MCP+works%2C+diff+every+spec+version&connectorUrl=https%3A%2F%2Fmcp.mcpdiff.dev%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"mcpdiff-learn-how-MCP-works-diff-every-spec-version\" --url \"https://mcp.mcpdiff.dev/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mcpdiff-mcp-fce8ebf595","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mcpdiff-mcp-fce8ebf595/tools/{tool}","mcpServerUrl":"https://mcp.mcpdiff.dev/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/mcpdiff-mcp-fce8ebf595?live=1"}