Provides TypeScript types and JSON Schema to define, validate, and share static snapshots of MCP server capabilities.
Also known as sourcey/mcp-schema
- Stars
- 2
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Nov 9, 2026
- License
- MIT
What is schema MCP?
schema provides TypeScript types and JSON Schema to define, validate, and share static snapshots of MCP server capabilities.
Summary generated from the project's README
About schema MCP server
Developers building or managing Model Context Protocol servers can use this package to define, validate, and share static snapshots of server capabilities. It provides TypeScript types and JSON Schema to represent a server's tools, resources, prompts, and connection hints in a versionable file format similar to OpenAPI. This allows for documentation and code generation without needing a live connection to the server.
The package supports two primary document types: server snapshots using McpSpec and Agent Plugins configuration using AgentPluginsMcpConfig. It handles various transport types including stdio, streamable-http, and the deprecated sse. Users can integrate these schemas into their existing workflows using standard JSON Schema validators like Ajv to ensure their configuration files adhere to the official specifications. Because the schema validates protocol revisions as date strings, it remains compatible even as the underlying protocol evolves.
What you can do with it
- 1Validate server capability snapshotsVerify that a static JSON file correctly describes a server's tools and resources using a JSON Schema validator.
- 2Configure agent plugin connectionsDefine named server connections for an agent plugin configuration file.
- 3Generate type-safe server specificationsCreate a server specification object in TypeScript with full type safety for tools and resources.
- 4Document server interfacesCapture a server's surface area in a shareable file for documentation purposes.
Written from the project's README. Every use case is checked against a quote from it.
How to install schema MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall schema MCP in Claude Code
$ claude mcp add mcp-schema -- npx -y mcp-schemaInstall schema MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp-schema": {
"command": "npx",
"args": [
"-y",
"mcp-schema"
]
}
}
}Install schema MCP in VS Code
.vscode/mcp.json
{
"servers": {
"mcp-schema": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-schema"
]
}
}
}Install schema MCP in VS Code CLI
$ code --add-mcp '{"name":"mcp-schema","type":"stdio","command":"npx","args":["-y","mcp-schema"]}'Install schema MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp-schema": {
"command": "npx",
"args": [
"-y",
"mcp-schema"
]
}
}
}Install schema MCP in Codex
$ codex mcp add mcp-schema -- npx -y mcp-schemaInstall schema MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.mcp-schema] command = "npx" args = ["-y", "mcp-schema"]
Install schema MCP in Gemini CLI
$ gemini mcp add -s user mcp-schema npx -- -y mcp-schemaInstall schema MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"mcp-schema": {
"command": "npx",
"args": [
"-y",
"mcp-schema"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablesourcey/mcp-schema is public and reachablegithub.com/sourcey/mcp-schema ↗Pass
- Package names this repository as its sourcemcp-schema names sourcey/mcp-schema as sourcenpmjs.com/package/mcp-schema ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for mcp-schemanpmjs.com/package/mcp-schema/v/0.3.3#provenance ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-09github.com/sourcey/mcp-schema ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from mcp-schemaPass
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubmcp-schema
TypeScript types and JSON Schema for Model Context Protocol server specifications.
Define, validate, and share static snapshots of MCP servers.
Agent Plugins configuration and server snapshots
This package describes two distinct documents:
| Contract | Exports | Purpose |
|---|---|---|
| Server snapshot | McpSpec, mcpSpecSchema |
A server's tools, resources, prompts, and connection hints |
| Agent Plugins 1.0.0 MCP configuration | AgentPluginsMcpConfig, AgentPluginsMcpServer, agentPluginsMcpSchema |
A plugin's named server connections in root mcp.json |
Both have been called mcp.json. Use a filename such as api.snapshot.json for
snapshots when working with an Agent Plugin. The standard plugin configuration
requires $schema and mcpServers; it does not contain introspection results.
import { agentPluginsMcpSchema, AGENT_PLUGINS_MCP_SCHEMA_URL } from "mcp-schema/agent-plugins";
import type { AgentPluginsMcpConfig } from "mcp-schema/agent-plugins";
import { Ajv2020 } from "ajv/dist/2020.js";
const config: AgentPluginsMcpConfig = {
$schema: "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
mcpServers: {
api: { type: "streamable-http", url: "https://example.com/mcp" },
local: { type: "stdio", command: "./bin/server", cwd: "${PLUGIN_ROOT}" },
},
};
const validate = new Ajv2020().compile(agentPluginsMcpSchema);
console.log(validate(config), AGENT_PLUGINS_MCP_SCHEMA_URL);
These exports are also available from the main entrypoint. The official schema
is bundled locally, and its TypeScript types are generated from those exact
schema bytes. It is a closed union of stdio, streamable-http, and legacy
sse. The normative specification additionally defines URL/header semantics,
filesystem containment, variable expansion, and failure boundaries that a JSON
Schema alone cannot enforce. mcp-parser
implements those configuration checks and named-server snapshotting.
Maintaining the upstream contract
The published canonical schema
is the authority in src/agent-plugins/mcp.schema.json. Its generated runtime
export and types must pass npm run check:agent-plugins in CI. Run
npm run check:agent-plugins -- --upstream to compare with the canonical online
schema and detect a newer release on the published specification page. The
Agent Plugins upstream workflow runs that check every Monday at 03:17 UTC and
can also be dispatched manually. A new release or schema change fails the check
for review. After adopting a published specification release, review its normative
semantic changes in mcp-parser, update the canonical bytes, regenerate with
npm run generate:agent-plugins, and test both packages together. A working
draft is not automatically a supported release. No schema is downloaded at
runtime. Agent Plugins schema material is Apache-2.0 licensed; its license and
attribution are distributed with the package.
What the snapshot describes
An mcp.json document is a static description of an MCP server's surface, not a
wire protocol. This package is therefore revision-independent: it records which
protocol revision a snapshot came from without being tied to any one of them.
mcpVersion holds the revision the server answered with, and mcpVersions holds
the set it reports it supports. Both are validated as YYYY-MM-DD shapes rather
than against a list of known revisions, so a document produced against a
revision newer than this package still validates.
Types cover tools (with inputSchema, outputSchema, and
annotations),
resources, resource templates, prompts, icons, server capabilities, and all three
transports (stdio, Streamable HTTP, and the specification-deprecated HTTP+SSE).
Deliberately out of scope: JSON-RPC envelopes, content types, sessions, and the
client features the specification deprecated in
2026-07-28
(roots, sampling, logging). A snapshot describes what a server offers, not a
conversation with it.
Install
npm install mcp-schema
Usage
TypeScript types
import type { McpSpec, McpTool, McpResource } from "mcp-schema";
const spec: McpSpec = {
mcpSpec: "0.3.1",
mcpVersion: "2025-11-25",
server: { name: "weather-server", version: "1.0.0" },
description: "Real-time weather data for any city.",
tools: [
{
name: "get_weather",
description: "Get current weather for a location",
inputSchema: {
type: "object",
properties: {
city: { type: "string", description: "City name" },
},
required: ["city"],
},
outputSchema: {
type: "object",
properties: {
temperature: { type: "number" },
conditions: { type: "string" },
},
},
annotations: { readOnlyHint: true },
},
],
resources: [
{
uri: "weather://cities",
name: "Supported Cities",
description: "List of cities with weather data",
mimeType: "application/json",
},
],
};
JSON Schema validation
import { mcpSpecSchema } from "mcp-schema/schema";
// Use with any JSON Schema validator
import Ajv from "ajv";
const ajv = new Ajv();
const validate = ajv.compile(mcpSpecSchema);
const valid = validate(spec);
if (!valid) {
console.error(validate.errors);
}
What is mcp.json?
An MCP spec (mcp.json) is a static snapshot of an MCP server's capabilities; its tools, resources, and prompts. Think of it as openapi.json for MCP servers.
MCP servers describe themselves at runtime via tools/list, resources/list, and prompts/list. An MCP spec captures that information in a versionable, shareable file that can be used for documentation, validation, and code generation.
mcp.json Format
The root document:
| Field | Type | Required | Description |
|---|---|---|---|
mcpSpec |
string |
yes | Format version (semver) |
mcpVersion |
string |
no | Protocol revision the server answered with, YYYY-MM-DD |
mcpVersions |
string[] |
no | Every protocol revision the server reports it supports |
server |
object |
yes | Server name and version |
description |
string |
no | Extended description (markdown) |
capabilities |
object |
no | Declared server capabilities |
transport |
object |
no | Transport config hints |
tools |
McpTool[] |
no | Tools the server exposes |
resources |
McpResource[] |
no | Concrete resources |
resourceTemplates |
McpResourceTemplate[] |
no | Parameterized resource templates |
prompts |
McpPrompt[] |
no | Prompt templates |
$defs |
object |
no | Shared schema definitions |
Tools
{
"name": "search_docs",
"description": "Search documentation by query",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" },
"limit": { "type": "number", "default": 10 }
},
"required": ["query"]
},
"outputSchema": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"url": { "type": "string" }
}
}
}
}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": true
}
}
Resources
{
"uri": "docs://index",
"name": "Documentation Index",
"description": "Top-level index of all documentation pages",
"mimeType": "application/json"
}
Resource Templates
{
"uriTemplate": "docs://pages/{slug}",
"name": "Documentation Page",
"description": "A single documentation page by slug",
"mimeType": "text/markdown"
}
Prompts
{
"name": "summarize_page",
"description": "Summarize a documentation page",
"arguments": [
{ "name": "url", "description": "Page URL to summarize", "required": true },
{ "name": "style", "description": "Summary style (brief, detailed)", "required": false }
]
}
MCP Specification Resources
- MCP Specification (current revision)
- Specification repo (includes JSON Schema for each protocol version)
- TypeScript SDK (
@modelcontextprotocol/sdk) - Python SDK (
mcpon PyPI)
Related
- mcp-parser: snapshot live MCP servers, parse and validate
mcp.json, and generate markdown/docs outputs - sourcey: generate documentation from MCP specs, OpenAPI, and markdown
License
MIT
schema MCP questions
How do I add schema MCP to Claude Code?
Run claude mcp add mcp-schema -- npx -y mcp-schema in your terminal. Add --scope user to make it available in every project.
How do I add schema MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What is an MCP spec (mcp.json)?
An MCP spec is a static snapshot of an MCP server's capabilities, including its tools, resources, and prompts, similar to how openapi.json works for APIs.
Does this package download schemas at runtime?
No, the official schema is bundled locally within the package.