-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathschema.json
More file actions
260 lines (260 loc) · 15.1 KB
/
Copy pathschema.json
File metadata and controls
260 lines (260 loc) · 15.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$defs": {
"Icon": {
"description": "An optionally-sized icon that can be displayed in a user interface.",
"properties": {
"mimeType": {
"description": "Optional MIME type override if the source MIME type is missing or generic.\nFor example: `\"image/png\"`, `\"image/jpeg\"`, or `\"image/svg+xml\"`.",
"type": "string"
},
"sizes": {
"description": "Optional array of strings that specify sizes at which the icon can be used.\nEach string should be in WxH format (e.g., `\"48x48\"`, `\"96x96\"`) or `\"any\"` for scalable formats like SVG.\n\nIf not provided, the client should assume that the icon can be used at any size.",
"items": {
"type": "string"
},
"type": "array"
},
"src": {
"description": "A standard URI pointing to an icon resource. May be an HTTP/HTTPS URL or a\n`data:` URI with Base64-encoded image data.\n\nConsumers SHOULD take steps to ensure URLs serving icons are from the\nsame domain as the client/server or a trusted domain.\n\nConsumers SHOULD take appropriate precautions when consuming SVGs as they can contain\nexecutable JavaScript.",
"format": "uri",
"type": "string"
},
"theme": {
"description": "Optional specifier for the theme this icon is designed for. `\"light\"` indicates\nthe icon is designed to be used with a light background, and `\"dark\"` indicates\nthe icon is designed to be used with a dark background.\n\nIf not provided, the client should assume the icon can be used with any theme.",
"enum": ["dark", "light"],
"type": "string"
}
},
"required": ["src"],
"type": "object"
},
"Input": {
"description": "A user-supplied or pre-set input value, used for {@link Remote} URL\nvariables and header values.",
"properties": {
"choices": {
"description": "Allowed values for the input. If provided, the user must select one.",
"items": {
"type": "string"
},
"type": "array"
},
"default": {
"description": "Default value for the input. SHOULD be a valid value for the input.",
"type": "string"
},
"description": {
"description": "Human-readable explanation of the input. Clients can use this to provide\ncontext to the user.",
"type": "string"
},
"format": {
"description": "Specifies the input format. `\"filepath\"` should be interpreted as a file\non the user's filesystem. When the input is converted to a string,\nbooleans should be represented by `\"true\"`/`\"false\"`, and numbers by\ndecimal values.",
"enum": ["boolean", "filepath", "number", "string"],
"type": "string"
},
"isRequired": {
"description": "Whether the input must be supplied for the connection to succeed.",
"type": "boolean"
},
"isSecret": {
"description": "Whether the input is a secret value (e.g., password, token). If true,\nclients should handle the value securely.",
"type": "boolean"
},
"placeholder": {
"description": "Placeholder displayed during configuration to provide examples or\nguidance about the expected form of the input.",
"type": "string"
},
"value": {
"description": "Pre-set value for the input. If set, the value should not be configurable\nby end users. Identifiers wrapped in `{curly_braces}` will be replaced\nwith the corresponding entries from the input's `variables` map (if any).",
"type": "string"
}
},
"type": "object"
},
"KeyValueInput": {
"description": "A named {@link Input} — used for HTTP headers — whose `value` may reference\nvariables for substitution.",
"properties": {
"choices": {
"description": "Allowed values for the input. If provided, the user must select one.",
"items": {
"type": "string"
},
"type": "array"
},
"default": {
"description": "Default value for the input. SHOULD be a valid value for the input.",
"type": "string"
},
"description": {
"description": "Human-readable explanation of the input. Clients can use this to provide\ncontext to the user.",
"type": "string"
},
"format": {
"description": "Specifies the input format. `\"filepath\"` should be interpreted as a file\non the user's filesystem. When the input is converted to a string,\nbooleans should be represented by `\"true\"`/`\"false\"`, and numbers by\ndecimal values.",
"enum": ["boolean", "filepath", "number", "string"],
"type": "string"
},
"isRequired": {
"description": "Whether the input must be supplied for the connection to succeed.",
"type": "boolean"
},
"isSecret": {
"description": "Whether the input is a secret value (e.g., password, token). If true,\nclients should handle the value securely.",
"type": "boolean"
},
"name": {
"description": "Name of the header.",
"type": "string"
},
"placeholder": {
"description": "Placeholder displayed during configuration to provide examples or\nguidance about the expected form of the input.",
"type": "string"
},
"value": {
"description": "Pre-set value for the input. If set, the value should not be configurable\nby end users. Identifiers wrapped in `{curly_braces}` will be replaced\nwith the corresponding entries from the input's `variables` map (if any).",
"type": "string"
},
"variables": {
"additionalProperties": {
"$ref": "#/$defs/Input"
},
"description": "Variables referenced by `{curly_braces}` identifiers in `value`. The map\nkey is the variable name; the value defines the variable's properties.",
"type": "object"
}
},
"required": ["name"],
"type": "object"
},
"MetaObject": {
"additionalProperties": {},
"description": "Represents the contents of a `_meta` field, which clients and servers use to attach additional metadata to their interactions.\n\nCertain key names are reserved by MCP for protocol-level metadata; implementations MUST NOT make assumptions about values at these keys. Additionally, specific schema definitions may reserve particular names for purpose-specific metadata, as declared in those definitions.\n\nValid keys have two segments:\n\n**Prefix:**\n- Optional — if specified, MUST be a series of _labels_ separated by dots (`.`), followed by a slash (`/`).\n- Labels MUST start with a letter and end with a letter or digit. Interior characters may be letters, digits, or hyphens (`-`).\n- Any prefix consisting of zero or more labels, followed by `modelcontextprotocol` or `mcp`, followed by any label, is **reserved** for MCP use. For example: `modelcontextprotocol.io/`, `mcp.dev/`, `api.modelcontextprotocol.org/`, and `tools.mcp.com/` are all reserved.\n\n**Name:**\n- Unless empty, MUST start and end with an alphanumeric character (`[a-z0-9A-Z]`).\n- Interior characters may be alphanumeric, hyphens (`-`), underscores (`_`), or dots (`.`).",
"type": "object"
},
"Remote": {
"description": "Metadata for connecting to a remote (HTTP-based) MCP server endpoint.",
"properties": {
"headers": {
"description": "HTTP headers required or accepted when connecting to this remote\nendpoint. Each header is described as a {@link KeyValueInput} so that\nclients can prompt users for required values, mark secrets, surface\ndefaults, and constrain to a list of choices.",
"items": {
"$ref": "#/$defs/KeyValueInput"
},
"type": "array"
},
"supportedProtocolVersions": {
"description": "MCP protocol versions actively supported by this remote endpoint. Allows\nclients to select a compatible protocol version before connecting.",
"items": {
"type": "string"
},
"type": "array"
},
"type": {
"description": "The transport type for this remote endpoint.",
"enum": ["sse", "streamable-http"],
"type": "string"
},
"url": {
"description": "URL template for the remote endpoint. Must start with `http://`,\n`https://`, or a `{template-variable}`. Variables in `{curly_braces}`\nare substituted from the {@link Remote.variables} map before the\nclient connects.",
"pattern": "^(https?://[^\\s]+|\\{[a-zA-Z_][a-zA-Z0-9_]*\\}[^\\s]*)$",
"type": "string"
},
"variables": {
"additionalProperties": {
"$ref": "#/$defs/Input"
},
"description": "Configuration variables that can be referenced as `{curly_braces}`\nplaceholders in `url` (and inside header values via\n{@link KeyValueInput.variables}). The map key is the variable\nname; the value defines the variable's properties (e.g., human-readable\ndescription, default, whether it is required or secret).",
"type": "object"
}
},
"required": ["type", "url"],
"type": "object"
},
"Repository": {
"description": "Repository metadata for the MCP server source code. Enables users and\nsecurity experts to inspect the code, improving transparency.",
"properties": {
"id": {
"description": "Repository identifier from the hosting service (e.g., GitHub repo ID).\nOwned and determined by the source forge. Should remain stable across\nrepository renames and may be used to detect repository resurrection\nattacks — if a repository is deleted and recreated, the ID should change.",
"type": "string"
},
"source": {
"description": "Repository hosting service identifier (e.g., `\"github\"`). Used by registries\nto determine validation and API access methods.",
"type": "string"
},
"subfolder": {
"description": "Optional relative path from repository root to the server location within a\nmonorepo or nested package structure. Must be a clean relative path.",
"type": "string"
},
"url": {
"description": "Repository URL for browsing source code. Should support both web browsing\nand `git clone` operations.",
"format": "uri",
"type": "string"
}
},
"required": ["source", "url"],
"type": "object"
},
"ServerCard": {
"description": "A static metadata document describing a remote MCP server, suitable for\npre-connection discovery. A Server Card may be hosted at any unreserved URI;\nMCP reserves `GET <streamable-http-url>/server-card` as the recommended\nlocation. Clients learn a card's URL from an [AI Catalog](https://github.com/Agent-Card/ai-catalog)\nrather than guessing it.\n\nServer Cards describe only what is needed to discover and connect to a remote server:\nidentity, transport, and protocol versions.\n\nThey do not enumerate primitives (tools, resources, prompts) — those remain\nsubject to runtime listing via the protocol's standard list operations.\n\nThe fields a Server Card does declare (identity, transport, protocol\nversions) are advisory, not authoritative: they should be consistent with\nthe server's `server/discover` response, and clients must not treat them as\nauthoritative for security decisions. See \"Consistency with Runtime\nBehavior\" in docs/discovery.md for the normative requirement.",
"properties": {
"$schema": {
"description": "The Server Card JSON Schema URI that this document conforms to. Required.\n\nMust be the `/v1/` Server Card schema URL under\n`static.modelcontextprotocol.io/schemas/` (i.e.,\n`https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json`).\nSchema URLs are versioned by the `vN` segment rather than by date; a\nbreaking revision of the Server Card shape publishes a new `vN` family.",
"format": "uri",
"pattern": "^https://static\\.modelcontextprotocol\\.io/schemas/v1/server-card\\.schema\\.json$",
"type": "string"
},
"_meta": {
"$ref": "#/$defs/MetaObject",
"description": "Extension metadata using reverse-DNS namespacing for vendor-specific data.\n\nFollows the protocol's standard `_meta` definition."
},
"description": {
"description": "Clear human-readable explanation of server functionality. Should focus on\ncapabilities, not implementation details.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"icons": {
"description": "Optional set of sized icons that the client can display in a user interface.\n\nClients that support rendering icons MUST support at least the following\nMIME types: `image/png` and `image/jpeg` (safe, universal compatibility).\nClients SHOULD also support: `image/svg+xml` (scalable but requires security\nprecautions) and `image/webp` (modern, efficient format).",
"items": {
"$ref": "#/$defs/Icon"
},
"type": "array"
},
"name": {
"description": "Server name in reverse-DNS format. Must contain exactly one forward slash\nseparating namespace from server name.",
"maxLength": 200,
"minLength": 3,
"pattern": "^[a-zA-Z0-9.-]+/[a-zA-Z0-9._-]+$",
"type": "string"
},
"remotes": {
"description": "Metadata helpful for making HTTP-based connections to this MCP server.",
"items": {
"$ref": "#/$defs/Remote"
},
"type": "array"
},
"repository": {
"$ref": "#/$defs/Repository",
"description": "Optional repository metadata for the MCP server source code.\nRecommended for transparency and security inspection."
},
"title": {
"description": "Optional human-readable title or display name for the MCP server.\nMCP subregistries or clients MAY choose to use this for display purposes.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"version": {
"description": "Version string for this server. SHOULD follow semantic versioning\n(e.g., '1.0.2', '2.1.0-alpha'). Equivalent of `Implementation.version`\nin the MCP specification. Non-semantic versions are allowed but may not\nsort predictably. Version ranges are rejected (e.g., '^1.2.3', '~1.2.3',\n'>=1.2.3', '1.x', '1.*').",
"maxLength": 255,
"type": "string"
},
"websiteUrl": {
"description": "Optional URL to the server's homepage, documentation, or project website.\nProvides a central link for users to learn more about the server.\nParticularly useful when the server has custom installation instructions\nor setup requirements.",
"format": "uri",
"type": "string"
}
},
"required": ["$schema", "description", "name", "version"],
"type": "object"
}
}
}