Mirror of https://github.com/modelcontextprotocol/registry — A community driven registry service for Model Context Protocol (MCP) servers.
  • Go 92.9%
  • PLpgSQL 3.1%
  • HTML 1.9%
  • Shell 1.6%
  • Makefile 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] 89178d220b
build(deps): bump github.com/pulumi/pulumi-gcp/sdk/v8 from 8.39.0 to 8.41.1 in /deploy (#699)
Bumps
[github.com/pulumi/pulumi-gcp/sdk/v8](https://github.com/pulumi/pulumi-gcp)
from 8.39.0 to 8.41.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi-gcp/releases">github.com/pulumi/pulumi-gcp/sdk/v8's
releases</a>.</em></p>
<blockquote>
<h2>v8.41.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Combined dependencies PR by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3346">pulumi/pulumi-gcp#3346</a></li>
<li>Bump github.com/cloudflare/circl from 1.3.7 to 1.6.1 in
/examples/bucket-go in the go_modules group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3327">pulumi/pulumi-gcp#3327</a></li>
<li>Upgrade terraform-provider-google-beta to v6.49.2 by <a
href="https://github.com/guineveresaenger"><code>@​guineveresaenger</code></a>
in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3347">pulumi/pulumi-gcp#3347</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pulumi/pulumi-gcp/compare/v8.41.0...v8.41.1">https://github.com/pulumi/pulumi-gcp/compare/v8.41.0...v8.41.1</a></p>
<h2>v8.41.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update GitHub Actions workflows. by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3320">pulumi/pulumi-gcp#3320</a></li>
<li>Update GitHub Actions workflows. by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3323">pulumi/pulumi-gcp#3323</a></li>
<li>Update GitHub Actions workflows. by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3324">pulumi/pulumi-gcp#3324</a></li>
<li>Update GitHub Actions workflows. by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3326">pulumi/pulumi-gcp#3326</a></li>
<li>Combined dependencies PR by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3329">pulumi/pulumi-gcp#3329</a></li>
<li>Bump the npm_and_yarn group across 3 directories with 1 update by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3305">pulumi/pulumi-gcp#3305</a></li>
<li>Upgrade terraform provider google beta to v6.48.0 by <a
href="https://github.com/ruifung"><code>@​ruifung</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3330">pulumi/pulumi-gcp#3330</a></li>
<li>Update resources.go to use underscore for role_ids by <a
href="https://github.com/maelp"><code>@​maelp</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3331">pulumi/pulumi-gcp#3331</a></li>
<li>Upgrade pulumi-terraform-bridge to v3.112.0 by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3339">pulumi/pulumi-gcp#3339</a></li>
<li>Update GitHub Actions workflows. by <a
href="https://github.com/pulumi-bot"><code>@​pulumi-bot</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3341">pulumi/pulumi-gcp#3341</a></li>
<li>Upgrade terraform-provider-google-beta to v6.49.0 by <a
href="https://github.com/blampe"><code>@​blampe</code></a> in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3340">pulumi/pulumi-gcp#3340</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/ruifung"><code>@​ruifung</code></a> made
their first contribution in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3330">pulumi/pulumi-gcp#3330</a></li>
<li><a href="https://github.com/maelp"><code>@​maelp</code></a> made
their first contribution in <a
href="https://redirect.github.com/pulumi/pulumi-gcp/pull/3331">pulumi/pulumi-gcp#3331</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pulumi/pulumi-gcp/compare/v8.40.0...v8.41.0">https://github.com/pulumi/pulumi-gcp/compare/v8.40.0...v8.41.0</a></p>
<h2>v8.40.0</h2>
<h3>Does the PR have any schema changes?</h3>
<p>Found 19 breaking changes:</p>
<h4>Resources</h4>
<ul>

<li>&quot;gcp:oracledatabase/autonomousDatabase:AutonomousDatabase&quot;:
required:
<ul>
<li><code>🟢</code> &quot;cidr&quot; property is no longer Required</li>
<li><code>🟢</code> &quot;network&quot; property is no longer
Required</li>
</ul>
</li>
<li>&quot;gcp:oracledatabase/cloudVmCluster:CloudVmCluster&quot;:
required:
<ul>
<li><code>🟢</code> &quot;backupSubnetCidr&quot; property is no longer
Required</li>
<li><code>🟢</code> &quot;cidr&quot; property is no longer Required</li>
<li><code>🟢</code> &quot;network&quot; property is no longer
Required</li>
</ul>
</li>
</ul>
<h4>Types</h4>
<ul>
<li><code>🟢</code>
&quot;gcp:cloudrunv2/getJobTemplateTemplate:getJobTemplateTemplate&quot;:
required: &quot;gpuZonalRedundancyDisabled&quot; property has changed to
Required</li>
<li><code>🟢</code>
&quot;gcp:compute/getSubnetworksSubnetwork:getSubnetworksSubnetwork&quot;:
required: &quot;networkName&quot; property has changed to Required</li>
<li><code>🟢</code>
&quot;gcp:container/getClusterAddonsConfig:getClusterAddonsConfig&quot;:
required: &quot;lustreCsiDriverConfigs&quot; property has changed to
Required</li>
<li><code>🟢</code>
&quot;gcp:container/getClusterIpAllocationPolicy:getClusterIpAllocationPolicy&quot;:
required: &quot;additionalIpRangesConfigs&quot; property has changed to
Required</li>
<li><code>🟢</code>
&quot;gcp:container/getClusterNodePoolNetworkConfig:getClusterNodePoolNetworkConfig&quot;:
required: &quot;subnetwork&quot; property has changed to Required</li>
<li><code>🟢</code>
&quot;gcp:dataproc/ClusterClusterConfigSecurityConfig:ClusterClusterConfigSecurityConfig&quot;:
required: &quot;kerberosConfig&quot; property is no longer Required</li>
<li><code>🟢</code>
&quot;gcp:diagflow/CxWebhookServiceDirectory:CxWebhookServiceDirectory&quot;:
required: &quot;genericWebService&quot; property is no longer
Required</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1fd732d39b"><code>1fd732d</code></a>
Upgrade terraform-provider-google-beta to v6.49.2 (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3347">#3347</a>)</li>
<li><a
href="bd35613b1e"><code>bd35613</code></a>
Combined dependencies PR (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3346">#3346</a>)</li>
<li><a
href="1a7753103a"><code>1a77531</code></a>
Bump github.com/cloudflare/circl</li>
<li><a
href="5fa9c52dde"><code>5fa9c52</code></a>
Upgrade terraform-provider-google-beta to v6.49.0 (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3340">#3340</a>)</li>
<li><a
href="f899bfe067"><code>f899bfe</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3341">#3341</a>)</li>
<li><a
href="95c1af854e"><code>95c1af8</code></a>
Upgrade pulumi-terraform-bridge to v3.112.0 (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3339">#3339</a>)</li>
<li><a
href="9f542fa050"><code>9f542fa</code></a>
Update resources.go to use underscore for role_ids (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3331">#3331</a>)</li>
<li><a
href="99e8a950b0"><code>99e8a95</code></a>
Upgrade terraform provider google beta to v6.48.0 (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3330">#3330</a>)</li>
<li><a
href="a61c4b92c5"><code>a61c4b9</code></a>
Combined dependencies PR (<a
href="https://redirect.github.com/pulumi/pulumi-gcp/issues/3329">#3329</a>)</li>
<li><a
href="f05a01c805"><code>f05a01c</code></a>
Merge remote-tracking branch
'origin/dependabot/npm_and_yarn/provider/test-pr...</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi-gcp/compare/v8.39.0...v8.41.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi-gcp/sdk/v8&package-manager=go_modules&previous-version=8.39.0&new-version=8.41.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-24 10:33:34 +03:00
.githooks Add linting documentation and pre-commit hooks (#177) 2025-07-15 09:31:17 -07:00
.github Enable dependabot for /deploy and pin Go version to 1.24 (#697) 2025-10-23 10:14:47 -07:00
.vscode Move publisher CLI from tools/ to cmd/ (#326) 2025-08-29 14:45:36 +01:00
cmd Make mcpb package version optional and fix schema validation (#686) 2025-10-17 01:35:29 +03:00
data Make mcpb package version optional and fix schema validation (#686) 2025-10-17 01:35:29 +03:00
deploy build(deps): bump github.com/pulumi/pulumi-gcp/sdk/v8 from 8.39.0 to 8.41.1 in /deploy (#699) 2025-10-24 10:33:34 +03:00
docs Make mcpb package version optional and fix schema validation (#686) 2025-10-17 01:35:29 +03:00
internal Make mcpb package version optional and fix schema validation (#686) 2025-10-17 01:35:29 +03:00
pkg Make mcpb package version optional and fix schema validation (#686) 2025-10-17 01:35:29 +03:00
scripts Align golang types with openapi.yaml schema (#628) 2025-10-07 16:38:04 +01:00
tests/integration Make mcpb package version optional and fix schema validation (#686) 2025-10-17 01:35:29 +03:00
tools Reflect the latest changes on the schema (#682) 2025-10-16 19:40:11 +03:00
.dockerignore fix(docker): ignore local mongo .db during rebuild 2025-05-25 12:41:19 -07:00
.env.example fix: seed from production API by default to ensure validation passes (#611) 2025-10-03 23:58:37 +03:00
.gitignore Introduce serverId, rename id to versionId (#465) 2025-09-21 15:00:09 +03:00
.golangci.yml Enable gofmt in golangci (#597) 2025-10-02 16:25:11 +01:00
.goreleaser.yaml Use 'latest' tag for mcp-publisher downloads (#610) 2025-10-04 00:00:27 +03:00
CLAUDE.md Consolidate documentation and remove redundancy (#222) 2025-08-06 16:05:07 +01:00
complete.md Update complete.md to reference the latest release assets (#615) 2025-10-04 00:56:35 +01:00
docker-compose.yml Populate the version details for local builds (#683) 2025-10-16 21:54:58 +03:00
Dockerfile Enable dependabot for /deploy and pin Go version to 1.24 (#697) 2025-10-23 10:14:47 -07:00
go.mod Enable dependabot for /deploy and pin Go version to 1.24 (#697) 2025-10-23 10:14:47 -07:00
go.sum Use distribution/reference for parsing OCI references (#651) 2025-10-14 15:27:57 +03:00
LICENSE Update LICENSE copyright holder to MCP Contributors (#293) 2025-08-21 09:11:42 -06:00
Makefile Make mcpb package version optional and fix schema validation (#686) 2025-10-17 01:35:29 +03:00
README.md fix: seed from production API by default to ensure validation passes (#611) 2025-10-03 23:58:37 +03:00

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. 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 - 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)
│   ├── 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

Community Projects

Check out community projects to explore notable registry-related work created by the community.

More documentation

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