diff --git a/docs/server-json/README.md b/docs/server-json/README.md index 454089f..6b8f6f1 100644 --- a/docs/server-json/README.md +++ b/docs/server-json/README.md @@ -5,7 +5,7 @@ There are a variety of use cases where a _static representation of an MCP server - Discoverability on a decentralized `.well-known` endpoint - As a response to an initialization call, so the client knows information about the MCP server to which it is connecting - As an input into crafting a [DXT file](https://www.anthropic.com/engineering/desktop-extensions) -- Packaged in with the source code of an MCP server, so as to have a structured way context +- Packaged in with the source code of an MCP server, so as to have a structured way to identify a server given just its source code All of these scenarios (and more) would benefit from an agreed-upon, standardized format that makes it easy to port around and maintain a consistent experience for consumers and developers working with the data. At the end of the day, it's all the same data (or a subset of it). MCP server maintainers should have to manage one copy of this file, and all these use cases can serve that file (or a programmatic derivative/subset of it). diff --git a/docs/server-json/schema.json b/docs/server-json/schema.json index 442fd3e..b8b506d 100644 --- a/docs/server-json/schema.json +++ b/docs/server-json/schema.json @@ -55,8 +55,7 @@ "description": "Version information for this server", "required": [ "version", - "release_date", - "is_latest" + "release_date" ], "properties": { "version": { @@ -129,13 +128,14 @@ }, "value_hint": { "type": "string", - "description": "Identifier hint for the value" + "description": "An identifier-like hint for the value. This is not part of the command line, but can be used by client configuration and to provide hints to users." }, "description": { "type": "string" }, "value": { - "type": "string" + "type": "string", + "description": "The default value for the input. If this is not set, the user may be prompted to provide a value.\n\nIdentifiers wrapped in `{curly_braces}` will be replaced with the corresponding properties from the input `variables` map. If an identifier in braces is not found in `variables`, or if `variables` is not provided, the `{curly_braces}` substring should remain unchanged." }, "default": { "type": "string" @@ -168,7 +168,8 @@ "type": "string" }, "value": { - "type": "string" + "type": "string", + "description": "The default value for the input. If this is not set, the user may be prompted to provide a value.\n\nIdentifiers wrapped in `{curly_braces}` will be replaced with the corresponding properties from the input `variables` map. If an identifier in braces is not found in `variables`, or if `variables` is not provided, the `{curly_braces}` substring should remain unchanged." }, "is_required": { "type": "boolean", @@ -180,6 +181,7 @@ }, "variables": { "type": "object", + "description": "A map of variable names to their values. Keys in the input `value` that are wrapped in `{curly_braces}` will be replaced with the corresponding variable values.", "additionalProperties": { "type": "object", "properties": { @@ -188,12 +190,14 @@ }, "format": { "type": "string", + "description": "Specifies the input format. Supported values include `filepath`, which should be interpreted as a file on the user's filesystem.\n\nWhen the input is converted to a string, booleans should be represented by the strings \"true\" and \"false\", and numbers should be represented as decimal values.", "enum": [ "string", "number", "boolean", "filepath" - ] + ], + "default": "string" }, "is_required": { "type": "boolean"