## Summary - Add optional `$schema` property to ServerDetail specification - Update JSON Schema, OpenAPI spec, Go models, examples, and publisher template - Enable schema versioning and IDE validation support ## Changes - Added `$schema` as optional string property with URI format in specs - Updated Go ServerDetail struct with new Schema field - Added `$schema` to examples and publisher template - Copy schema file to ../static for GitHub Pages hosting Fixes #139
39 lines
No EOL
2.1 KiB
Markdown
39 lines
No EOL
2.1 KiB
Markdown
# server.json file
|
|
|
|
There are a variety of use cases where a _static representation of an MCP server_ is necessary:
|
|
- Discoverability on a centralized registry (i.e. our official Registry work)
|
|
- 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 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).
|
|
|
|
Please note: this is different from the file commonly referred to as `mcp.json`, which is _an MCP client's configuration file for **running** a specific set of MCP servers_. See [this issue](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/292).
|
|
|
|
References:
|
|
- [server.schema.json](./server.schema.json) - The official JSON schema specification for this representation
|
|
- [examples.md](./examples.md) - Example manifestations of the JSON schema
|
|
- [registry-schema.json](./registry-schema.json) - A more constrained version of `server.schema.json` that the official registry supports
|
|
|
|
## Validation Tools
|
|
|
|
Two validation tools are provided in the repository's `tools/` directory:
|
|
- **validate-schemas** - Validates that `server.schema.json` and `registry-schema.json` are valid JSON Schema documents
|
|
- **validate-examples** - Validates that all JSON examples in `examples.md` conform to both schemas
|
|
|
|
### Usage
|
|
|
|
From the repository root:
|
|
|
|
#### Validate JSON Schemas
|
|
|
|
```bash
|
|
./tools/validate-schemas.sh
|
|
```
|
|
|
|
#### Validate Examples
|
|
|
|
```bash
|
|
./tools/validate-examples.sh
|
|
``` |