modelcontextprotocol/registry

GitHub: modelcontextprotocol/registry

Stars: 6894 | Forks: 848

# MCP Registry The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers. [**📤 Publish my MCP server**](docs/modelcontextprotocol-io/quickstart.mdx) | [**⚡️ Live API docs**](https://registry.modelcontextprotocol.io/docs) | [**👀 Ecosystem vision**](docs/design/ecosystem-vision.md) | 📖 **[Full documentation](./docs)** ## Development Status Registry Working Group: - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant) - **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov) - **Bob Dickinson** (TeamSpark) [@BobDickinson](https://github.com/BobDickinson) - **Preeti (Pree) Dewani** (Ravenmail) [@pree-dew](https://github.com/pree-dew) ### Quick start: #### Pre-requisites - **Docker** - **Go 1.24.x** - **ko** - Container image builder for Go ([installation instructions](https://ko.build/install/)) - **golangci-lint v2.4.0** #### Running the server # Start full development environment make dev-compose This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL. The database uses ephemeral storage and is reset each time you restart the containers, ensuring a clean state for development and testing. By default, the registry seeds from the production API with a filtered subset of servers (to keep startup fast). This ensures your local environment mirrors production behavior and all seed data passes validation. For offline development you can seed from a file without validation with `MCP_REGISTRY_SEED_FROM=data/seed.json MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=false make dev-compose`. The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
Alternative: Running a pre-built Docker image Pre-built Docker images are automatically published to GitHub Container Registry. Note that the image does not bundle PostgreSQL, so you need to run your own and point the registry at it via `MCP_REGISTRY_DATABASE_URL` (see [docker-compose.yml](./docker-compose.yml) for a working example): # Run latest stable release docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest # Run latest from main branch (continuous deployment) docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main # Run specific release version docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0 # Run development build from main branch docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d **Available tags:** - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc. - **Continuous**: `main` (latest main branch build) - **Development**: `main--` (specific commit builds)
#### Publishing a server To publish a server, we've built a simple CLI. You can use it with: # Build the latest CLI make publisher # Use it! ./bin/mcp-publisher --help See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for more details. #### Other commands # Run lint, unit tests and integration tests make check There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).