Server · #52 trending MCP repo · ↗ +135 stars this week

MCP Reference Servers

modelcontextprotocol/servers

Model Context Protocol Reference Servers

Stars
92k
This week
+135
Forks
12k
Open issues
10
Skills inside
11
Star trend · last 18 days+427 ★
Oct 20, 2026: 91,426 starsOct 21, 2026: 91,451 starsOct 22, 2026: 91,487 starsOct 23, 2026: 91,523 starsOct 24, 2026: 91,543 starsOct 25, 2026: 91,557 starsOct 26, 2026: 91,593 starsOct 27, 2026: 91,609 starsOct 28, 2026: 91,640 starsOct 29, 2026: 91,678 starsOct 30, 2026: 91,696 starsOct 31, 2026: 91,718 starsNov 1, 2026: 91,736 starsNov 2, 2026: 91,748 starsNov 3, 2026: 91,771 starsNov 4, 2026: 91,797 starsNov 5, 2026: 91,815 starsNov 6, 2026: 91,838 starsNov 7, 2026: 91,853 stars

Get started

Add it to your agent

claude mcp add reference-servers -- npx -y @modelcontextprotocol/server-memory

Run in your terminal. Add --scope project to share it with your team through .mcp.json.

Inside this repo

11 skills

board-opsgh recipes for the Servers V2 project board (#43): add an issue's card, move its Status, set or change its Priority, delete a card, and recover from a deleted single-select option. Use when moving a card between columns; when setting Status or Priority; when an option ID is rejected; before editing .claude/skills/board-opsclient-smokeDrive a locally built server with a real client: the Inspector CLI (scripted), the Inspector web UI (through Playwright) and an LLM client. Use when smoke-testing a server change; when calling a tool, reading a resource or getting a prompt from the command line; when choosing a protocol era; or when.claude/skills/client-smokeissue-createCreate a tracked issue in this repo end to end — duplicate check, v2 label, type label, server-scope label, milestone, board card, Status and Priority. Use when asked to file, create, open or raise an issue; when picking its labels or its milestone; when checking whether one already exists; or when .claude/skills/issue-createissue-triageTriage this repo's inflow — sweep unboarded issues onto the Servers V2 board (#43) as Incoming, score Priority with the rubric and post the score, classify outside PRs and spam (server listings, new servers, duplicates, no-ops) and close them with their canned comments, and run the board audit. Use .claude/skills/issue-triagelocal-devInstall, build and run a server from this checkout. Use when starting a server locally over stdio, SSE or Streamable HTTP; when pointing npx, uvx or an MCP client config at the local build; when a running server still shows old code, or dist is missing; when setting up a git worktree; or when adding.claude/skills/local-devpr-flowTake an issue through to a PR in this repo and close it out after merge. Use when asked to open, create or submit a PR; when naming a branch; when signing off commits or repairing a missing Signed-off-by; when recording client evidence for a PR; when requesting a Copilot review, answering its commen.claude/skills/pr-flowpre-push-gateRun this repo's pre-push gate and fix it when it goes red. Use when npm run local:gate fails or a stage of it does (verify:install-fresh, a root guard, lint, typecheck, ruff, pyright, pytest, verify:skills:cli, the boot smoke); when the gate says it is waiting on the gate lease; or when checking whe.claude/skills/pre-push-gateproject-structureFind where code lives in this repo's seven servers and decide where a new file goes. Use when choosing the file or directory for a new tool, resource, prompt, transport, helper module, command-line flag or root script; when a server's layout is unclear; or when asking whether code belongs in a serve.claude/skills/project-structurereleaseCut a milestone release: the release issue, the preparation PRs on v2/main (audit, changesets Version Packages, Python CalVer), the pure v2/main to main merge PR with its release ledger, then the GitHub Release a maintainer publishes..claude/skills/releasesecurity-advisoryTake a privately reported vulnerability through this repo's security advisory flow: board it as a draft card, check whether the code is this repo's server or the SDK underneath, accept or reject, fix it in the private fork, release, publish, then turn the card into public tracking. Use when a vulner.claude/skills/security-advisorytestingWrite, place and run tests for a server in this repo. Use when choosing between driving the server through an MCP client and calling its functions directly; when writing a protocol-level test for a TypeScript or Python server; when choosing the command that runs one suite or a coverage report; or wh.claude/skills/testing

Documentation

README

View on GitHub ↗

Model Context Protocol servers

This repository is a collection of reference implementations for the Model Context Protocol (MCP), as well as references to community-built servers and additional resources.

[!IMPORTANT] If you are looking for a list of MCP servers, you can browse published servers on the MCP Registry. The repository served by this README is dedicated to housing just the small number of reference servers maintained by the MCP steering group.

[!WARNING] The servers in this repository are intended as reference implementations to demonstrate MCP features and SDK usage. They are meant to serve as educational examples for developers building their own MCP servers, not as production-ready solutions. Developers should evaluate their own security requirements and implement appropriate safeguards based on their specific threat model and use case.

The servers in this repository showcase the versatility and extensibility of MCP, demonstrating how it can be used to give Large Language Models (LLMs) secure, controlled access to tools and data sources. Typically, each MCP server is implemented with an MCP SDK:

🌟 Reference Servers

These servers aim to demonstrate MCP features and the official SDKs.

  • Everything - Reference / test server with prompts, resources, and tools.
  • Fetch - Web content fetching and conversion for efficient LLM usage.
  • Filesystem - Secure file operations with configurable access controls.
  • Git - Tools to read, search, and manipulate Git repositories.
  • Memory - Knowledge graph-based persistent memory system.
  • Sequential Thinking - Dynamic and reflective problem-solving through thought sequences.
  • Time - Time and timezone conversion capabilities.

Archived

The following reference servers are now archived and can be found at servers-archived.

  • AWS KB Retrieval - Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
  • Brave Search - Web and local search using Brave's Search API. Has been replaced by the official server (@brave/brave-search-mcp-server).
  • EverArt - AI image generation using various models.
  • GitHub - Repository management, file operations, and GitHub API integration.
  • GitLab - GitLab API, enabling project management.
  • Google Drive - File access and search capabilities for Google Drive.
  • Google Maps - Location services, directions, and place details.
  • PostgreSQL - Read-only database access with schema inspection.
  • Puppeteer - Browser automation and web scraping.
  • Redis - Interact with Redis key-value stores.
  • Sentry - Retrieving and analyzing issues from Sentry.io.
  • Slack - Channel management and messaging capabilities. Now maintained by Zencoder
  • SQLite - Database interaction and business intelligence capabilities.

🚀 Getting Started

Using MCP Servers in this Repository

TypeScript-based servers in this repository can be started with npx.

For example, this will start the Memory server:

npx -y @modelcontextprotocol/server-memory

Python-based servers in this repository can be started with uvx or pip. uvx is recommended for ease of use and setup.

For example, this will start the Git server:

# With uvx
uvx mcp-server-git

# With pip
pip install mcp-server-git
python -m mcp_server_git

Follow these instructions to install uv / uvx and these to install pip.

Using an MCP Client

However, running a server on its own isn't very useful, and should instead be configured into an MCP client. For example, here's the Claude Desktop configuration to use the above server:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

On Windows, wrap npx with cmd /c:

{
  "mcpServers": {
    "memory": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

Additional examples of using the Claude Desktop as an MCP client might look like:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
    },
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
    },
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    }
  }
}

On Windows, apply the same wrapper to the npx-based filesystem entry above by changing its "command" to "cmd" and prepending "/c", "npx" to its existing args. Leave the uvx entries unchanged.

Transports: stdio and Streamable HTTP

An MCP server talks to its client over a transport. The protocol defines two standard ones, and they run very differently:

Transport How the server runs How a client reaches it
stdio The client launches the server as a subprocess and talks to it over the process's stdin and stdout. The server opens no port. A command and args in the client's configuration, as in the examples above
Streamable HTTP The server runs on its own as an HTTP service, and can serve many clients A URL, such as http://localhost:3001/mcp

Every server in this repository serves stdio, and only Everything also serves Streamable HTTP (its README shows how to start it that way, and covers its deprecated HTTP+SSE transport too). So when you run uvx mcp-server-git or npx -y @modelcontextprotocol/server-memory in a terminal, it opens no port, prints at most a one-line startup notice, and then appears to hang. That is expected: it is waiting for a client to send it messages on stdin. You do not normally start a stdio server yourself; your MCP client starts it from its configuration and stops it when it is done.

To try a server without setting up a client, use the MCP Inspector. Given a stdio server's command, it launches the server for you and lets you browse and call its tools; given a URL, it connects to a running Streamable HTTP server:

# A stdio server: the Inspector launches it
npx @modelcontextprotocol/inspector uvx mcp-server-git

# A Streamable HTTP server: start it first, then connect to its URL
npx @modelcontextprotocol/server-everything streamableHttp
npx @modelcontextprotocol/inspector --transport http --server-url http://localhost:3001/mcp

For more, see the transport layer in the MCP architecture overview, and Transports in the specification.

🛠️ Creating Your Own Server

Interested in creating your own MCP server? Visit the official documentation at modelcontextprotocol.io for comprehensive guides, best practices, and technical details on implementing MCP servers.

📚 Learn More

See ADDITIONAL.md for a curated list of frameworks and resources that simplify building MCP servers and clients.

🤝 Contributing

See CONTRIBUTING.md for information about contributing to this repository.

📦 Releasing

See RELEASING.md for how packages are published (OIDC trusted publishing from CI — no registry tokens) and how to retry a failed publish.

🔒 Security

See SECURITY.md for reporting security vulnerabilities.

📜 License

This project is licensed under the Apache License, Version 2.0 for new contributions, with existing code under MIT - see the LICENSE file for details.

💬 Community

⭐ Support

If you find MCP servers useful, please consider starring the repository and contributing new servers or improvements!


Managed by Anthropic, but built together with the community. The Model Context Protocol is open source and we encourage everyone to contribute their own servers and improvements!

Releases

Recent versions

All releases ↗
  1. v2.3.0
  2. v2.2.0
  3. v2.1.0
  4. v2.0.0
  5. v1.0.0
  6. 2026.8.31Release 2026.8.31