Skip to main content

fastmcp-kit

CI Security PyPI Python License: MIT

0.1.0 live on PyPI. pip install fastmcp-kit then from mcp_toolkit import MCPToolkit. The distribution name (fastmcp-kit) and the Python module name (mcp_toolkit) differ — same pattern as pip install pyyaml → import yaml. PyPI's similarity rules rejected the shorter name.

A Python framework for building authenticated, scoped, observable MCP (Model Context Protocol) servers on top of FastMCP.

You bring the tools. fastmcp-kit brings:

  • Tool registry — register tools with @toolkit.tool(...), group them, version them.
  • Scoped auth — bearer tokens carry scopes; list_tools is filtered per caller. Tokens never see tools they can't call.
  • One-click observability — Prometheus metrics auto-registered per tool, Grafana dashboards generated from the registry, docker compose up brings the whole stack live.
  • Multi-tenancy — pluggable tenant resolvers (header / subdomain / token-claim). Per-tenant metric labels enforced at registration.
  • Battle-tested harness — Clara architecture, mypy-strict, 80% coverage gate, bandit + pip-audit + gitleaks + CodeQL, branch protection, PR-from-fork model.

Quick taste

from mcp_toolkit import MCPToolkit

toolkit = MCPToolkit(name="my-server")

@toolkit.tool(group="weather", scopes=["read:weather"])
async def get_weather(city: str) -> dict:
    return {"city": city, "temp_c": 21.0}

@toolkit.tool(group="admin", scopes=["admin"])
async def reset_cache() -> None:
    ...

app = toolkit.build_app()  # FastAPI / FastMCP app; uvicorn-ready

Tokens minted with scopes=["read:weather"] discover and call get_weather. They cannot see reset_cache exists.

Why not just FastMCP?

FastMCP gives you the MCP wire protocol and transports. fastmcp-kit gives you the production layer above it: auth-scoped discovery, metric-per-tool, dashboards-from-code, multitenancy. You can use both — fastmcp-kit wraps FastMCP under the hood.

Install

PyPI

# Just the framework
uv add fastmcp-kit

# With observability batteries (Prometheus exposition + Grafana JSON gen)
uv add 'fastmcp-kit[observability]'

# Everything
uv add 'fastmcp-kit[observability,redis,otel]'

Import name stays mcp_toolkit:

from mcp_toolkit import MCPToolkit

One-click stack

make stack-up      # Prometheus + Grafana + your server, dashboards provisioned
open http://localhost:3000  # Grafana, dashboards already populated

See deploy/observability-stack/README.md.

Deploy

Three deployment surfaces ship in this repo:

Target Manifest When
Knative deploy/knative-serving.yaml You already run Knative Serving.
Vanilla k8s (Helm) deploy/helm/mcp-toolkit/ You run k8s without Knative.
Local dev deploy/observability-stack/ docker compose, Prometheus + Grafana included.

Documentation

Topic Where
AI navigation primer CLAUDE.md
10,000 ft architecture ARCHITECTURE.md
Tool registration src/mcp_toolkit/domains/registry/DOMAIN.md
Auth + scopes src/mcp_toolkit/domains/auth/DOMAIN.md
Metrics + dashboards src/mcp_toolkit/domains/observability/DOMAIN.md
Multi-tenancy src/mcp_toolkit/domains/tenancy/DOMAIN.md
Roadmap docs/ROADMAP.md
Contributing CONTRIBUTING.md
Security policy SECURITY.md

License

MIT — see LICENSE.

Metadata

Release files for fastmcp-kit 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastmcp-kit 0.1.1
File Size Uploaded Provenance
fastmcp_kit-0.1.1.tar.gz 189.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fastmcp-kit 0.1.1
File Interpreter ABI Platform
fastmcp_kit-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 240.3 kB

Release files / fastmcp_kit-0.1.1.tar.gz

Download URL fastmcp_kit-0.1.1.tar.gz
Size 189.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d426a39ece8541a37d72f75e6dbde0b0a061e8fb1102d3674600d6579d4087b8
BLAKE2b-256 checksum
How to use checksums
a6c0514d0f8706aa82e43d95938be3dbc2ce9623a6c8e311c7e6d93b0068beb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.18

Release files / fastmcp_kit-0.1.1-py3-none-any.whl

Download URL fastmcp_kit-0.1.1-py3-none-any.whl
Size 50.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
540bc6e7d25609c6fdc75d2c1c6e459e2147ef900d712c4b54e1904b2bca2e7d
BLAKE2b-256 checksum
How to use checksums
42789577c1f193f6d4601af80f10ab4ef41ebf043d3cd85f3ca230173f75d424
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.18

Security for fastmcp-kit 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page