Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

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 | ⚑️ Live API docs | πŸ‘€ Ecosystem vision | πŸ“– Full documentation

Development Status

2025εΉ΄09月08ζ—₯ update: The registry has launched in preview πŸŽ‰ (announcement blog post). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in GitHub discussions or in the #registry-dev Discord (joining details here).

Current key maintainers:

Contributing

We use multiple channels for collaboration - see modelcontextprotocol.io/community/communication.

Often (but not always) ideas flow through this pipeline:

  • Discord - Real-time community discussions
  • Discussions - Propose and discuss product/technical requirements
  • Issues - Track well-scoped technical work
  • Pull Requests - Contribute work towards issues

Quick start:

Pre-requisites

  • Docker
  • Go 1.24.x
  • golangci-lint v2.4.0

Running the server

# Start full development environment
make dev-compose

This starts the registry at localhost:8080 with PostgreSQL and seed data. It can be configured with environment variables in docker-compose.yml - see .env.example for a reference.

Alternative: Local setup without Docker

Prerequisites:

  • PostgreSQL running locally
  • Go 1.24.x installed
# Build and run locally
make build
make dev-local

The service runs on localhost:8080 by default. This can be configured with environment variables in .env - see .env.example for a reference.

Alternative: Running a pre-built Docker image

Pre-built Docker images are automatically published to GitHub Container Registry:

# 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-<date>-<sha> (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 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.

Architecture

Project Structure

β”œβ”€β”€ cmd/ # Application entry points
β”‚ └── publisher/ # Server publishing tool
β”œβ”€β”€ data/ # Seed data
β”œβ”€β”€ deploy/ # Deployment configuration (Pulumi)
β”œβ”€β”€ docs/ # Documentation
β”œβ”€β”€ internal/ # Private application code
β”‚ β”œβ”€β”€ api/ # HTTP handlers and routing
β”‚ β”œβ”€β”€ auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
β”‚ β”œβ”€β”€ config/ # Configuration management
β”‚ β”œβ”€β”€ database/ # Data persistence (PostgreSQL, in-memory)
β”‚ β”œβ”€β”€ service/ # Business logic
β”‚ β”œβ”€β”€ telemetry/ # Metrics and monitoring
β”‚ └── validators/ # Input validation
β”œβ”€β”€ pkg/ # Public packages
β”‚ β”œβ”€β”€ api/ # API types and structures
β”‚ β”‚ └── v0/ # Version 0 API types
β”‚ └── model/ # Data models for server.json
β”œβ”€β”€ scripts/ # Development and testing scripts
β”œβ”€β”€ tests/ # Integration tests
└── tools/ # CLI tools and utilities
 └── validate-*.sh # Schema validation tools

Authentication

Publishing supports multiple authentication methods:

  • GitHub OAuth - For publishing by logging into GitHub
  • GitHub OIDC - For publishing from GitHub Actions
  • DNS verification - For proving ownership of a domain and its subdomains
  • HTTP verification - For proving ownership of a domain

The registry validates namespace ownership when publishing. E.g. to publish...:

  • io.github.domdomegg/my-cool-mcp you must login to GitHub as domdomegg, or be in a GitHub Action on domdomegg's repos
  • me.adamjones/my-cool-mcp you must prove ownership of adamjones.me via DNS or HTTP challenge

More documentation

See the documentation for more details if your question has not been answered here!

About

A community driven registry service for Model Context Protocol (MCP) servers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /