SchemaStoreMcpServer
Links
README
From the repo.
SchemaStore MCP Server
An MCP (Model Context Protocol) server for SchemaStore.org — search, browse, and retrieve JSON schemas from the SchemaStore catalog.
Built with .NET 10 and the official MCP C# SDK.
Quick Start — Use the Hosted Server
The SchemaStore MCP Server is publicly hosted at **https://mcp.schemastore.org**. No local setup required.
Visual Studio
Add a .mcp.json file to your solution root (or add it via Copilot Chat → Select Tools → +):
{
"inputs": [],
"servers": {
"SchemaStore": {
"url": "https://mcp.schemastore.org/",
"type": "http",
"headers": {}
}
}
}
Visual Studio Code
Create .vscode/mcp.json in your workspace (or use Command Palette → MCP: Add Server):
{
"servers": {
"SchemaStore": {
"url": "https://mcp.schemastore.org/",
"type": "http"
}
}
}
Any MCP Client
Point your client at https://mcp.schemastore.org/ using HTTP transport.
Tools
| Tool | Description |
|---|---|
searchSchemas | Search the catalog by name, description, or file pattern. Returns results ranked by relevance. |
getSchema | Get the full JSON Schema document by name (case-insensitive partial match). |
listSchemas | List all schemas with pagination (default: 50 per page). |
Running the Server
cd src/SchemaStoreMcpServer
dotnet run
The server starts on http://localhost:5189 by default (see Properties/launchSettings.json).
- MCP endpoint:
POST /(Streamable HTTP transport) - Legacy SSE:
GET /sse+POST /message - Health check:
GET /health
Adding the MCP Server to Your Editor
Visual Studio (Solution-scoped)
Add a .mcp.json file to your solution root:
{
"inputs": [],
"servers": {
"SchemaStoreMcpServer": {
"url": "http://localhost:5189/",
"type": "http",
"headers": {}
}
}
}
Or use the UI: GitHub Copilot Chat → Select Tools (wrench icon) → + → set Type to http and URL to http://localhost:5189/.
Visual Studio Code
Create .vscode/mcp.json in your workspace:
{
"servers": {
"SchemaStoreMcpServer": {
"url": "http://localhost:5189/",
"type": "http"
}
}
}
Or use the Command Palette: MCP: Add Server → HTTP → http://localhost:5189/ → give it a name.
Any MCP Client (stdio transport alternative)
If you prefer stdio transport (no need to keep a server running), point your client at:
{
"servers": {
"SchemaStoreMcpServer": {
"type": "stdio",
"command": "dotnet",
"args": ["run", "--project", "path/to/src/SchemaStoreMcpServer/SchemaStoreMcpServer.csproj"]
}
}
}
Note: The stdio transport requires adding
.WithStdioServerTransport()toProgram.csinstead of.WithHttpTransport().
Testing with GitHub Copilot
- Start the server (
dotnet run) - Open GitHub Copilot Chat in Agent mode
- Click the Select Tools icon — you should see the three schema tools listed
- Try a prompt like: "Search SchemaStore for Docker-related schemas"
Testing with .http Files
See the test/mcp-session.http file for manual HTTP testing in Visual Studio.
Workflow:
- Run the server
- Execute the
initializePOST request - Copy the
Mcp-Session-Idfrom the response headers - Paste it into
@sessionId = ... - Execute the tool call requests
Architecture
src/SchemaStoreMcpServer/
├── Program.cs # DI, MCP server, health checks, HTTP transport
├── Models/
│ └── SchemaCatalogEntry.cs # DTOs (name, description, fileMatch, url)
├── Services/
│ ├── ISchemaCatalogService.cs # Interface
│ └── SchemaCatalogService.cs # Singleton: fetch, search, lookup, pagination
├── BackgroundServices/
│ └── CatalogRefreshService.cs # Refreshes catalog every 30 minutes
└── Tools/
└── SchemaTools.cs # MCP tool definitions
- The schema catalog is fetched from
https://www.schemastore.org/api/json/catalog.jsonat startup and refreshed every 30 minutes. - Search uses multi-term scoring across name (×10), description (×5), and fileMatch (×3).
- Thread-safe catalog refresh via volatile reference swap.
Requirements
Collected info
- ★ 16 stars
- Language: C#
- Source updated: 8/5/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.