SDKs, Frameworks & Official Reference Servers for Building with MCP

When you want to expose internal tools or APIs to Claude, Cursor, or another MCP client, you have two choices: write a purpose-built MCP server using an SDK, or wrap an existing REST/GraphQL API so its routes become MCP tools automatically.

For custom Python servers, FastMCP and the official MCP Python SDK are the two main starting points. If you already run FastAPI or federated GraphQL, FastAPI-MCP and Grafbase can expose those APIs directly—while official servers from GitHub and AWS cover common engineering and cloud workflows without writing your own.

AgentIndex · Updated 2026-10-19

Three ways to put MCP tools in front of an agent

Run an official vendor server, wrap an existing API, or write custom tools with an SDK.

  1. Write custom Python tools

    Define purpose-built tools, resources and prompts.

  2. Expose an existing API

    Turn FastAPI routes or GraphQL graphs into MCP.

  3. Official platform servers

    Ready-made servers from GitHub and AWS.

Quick picks

  • fastmcp — Apache-2.0 Pythonic framework by Prefect that generates MCP tool schemas and validation from type hints and docstrings.
  • python-sdk — MIT-licensed official reference Python SDK for MCP servers and clients across stdio, SSE, and Streamable HTTP.
  • fastapi_mcp — MIT-licensed adapter that turns existing FastAPI routes into MCP tools while reusing FastAPI auth dependencies.
  • grafbase — Rust-powered Apollo Federation v2 GraphQL gateway with built-in support for exposing your federated graph as an MCP server.
  • GitHub MCP Server — GitHub's official MIT-licensed MCP server for repositories, issues, PRs, Actions, and security alerts.
  • mcp — AWS Labs' official Apache-2.0 suite of MCP servers for AWS documentation, CDK/Terraform, containers, and cost analysis.

Side-by-side comparison

ToolWhat it isStarsLicenseLast pushMaintenanceReleases, 90 daysCommits, 12 weeksInstall
fastmcpFast Python framework for building MCP servers and clients28.2kApache-2.02026-10-22Active27Commits, 12 weeks: 28, 21, 8, 16, 28, 11, 26, 59, 21, 134, 4, 48uv add fastmcp
python-sdkOfficial Python SDK for MCP servers and clients24.6kMIT2026-10-17Active10Commits, 12 weeks: 0, 4, 13, 9, 12, 3, 1, 1, 29, 1, 10, 0uv add "mcp[cli]"
fastapi_mcpExpose FastAPI endpoints as MCP tools, with auth12.0kMIT2025-11-24Stale0Commits, 12 weeks: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0uv add fastapi-mcp
grafbaseRust-powered Apollo Federation v2 GraphQL gateway with WebAssembly extensions and built-in MCP server support1.2kMPL-2.02026-07-01Slowing0Commits, 12 weeks: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0curl -fsSL https://grafbase.com/downloads/gateway | bash
GitHub MCP ServerGitHub's official MCP server for repos, issues and PRs33.8kMIT2026-10-21Active14Commits, 12 weeks: 12, 13, 60, 15, 21, 3, 2, 0, 13, 20, 5, 0docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-…
mcpAWS's official suite of MCP servers for docs, infrastructure, data and cost tools9.8kn/a2026-10-22Active17Commits, 12 weeks: 64, 12, 10, 18, 12, 11, 16, 7, 16, 19, 12, 11uvx awslabs.aws-documentation-mcp-server@latest

Tools in this list with an in-depth AgentIndex review: 6/6

How to choose

  • Prefer designing a small number of task-oriented MCP tools over blindly exposing hundreds of raw REST endpoints, which bloats model context.
  • If you write Python from scratch, choose between FastMCP's concise decorator ergonomics and the official MCP Python SDK's canonical protocol primitives.
  • Check transport support: stdio is standard for local desktop clients, while Streamable HTTP is preferred for remote and multi-user deployments.
  • Always scope permissions (such as `--read-only` or filtered toolsets) before connecting an agent to production APIs.

FAQ

Should I use FastMCP or the official MCP Python SDK?

Both are widely used open-source libraries. FastMCP (Apache-2.0, by Prefect) reduces boilerplate and adds higher-level conveniences for composing servers, clients, and apps. The official MCP Python SDK (MIT) is the reference implementation from the protocol maintainers if you want minimal abstraction over the spec.

Is it a good idea to expose all my FastAPI or GraphQL endpoints as MCP tools?

Usually no. Exposing dozens of granular CRUD endpoints consumes context tokens and increases the risk of unintended write operations. Filter which routes or operations are exposed, keep destructive endpoints disabled by default, and write clear descriptions for the tools that remain.

How we compiled this list

Tools are chosen by hand from the projects in our index, favouring those we have reviewed in depth. Stars, licence, last-push date and install command come from each repository and are refreshed with the site data. The maintenance column comes from the GitHub API (archived flag, last commit, releases in the last 90 days) and is refreshed daily. We read each project's README and docs; we have not run every tool ourselves, so test before you depend on one.

More lists