T

TurboMCP

Epistates
🛠️ Other Tools and Integrations
0 Views
0 Installs

🦀 - TurboMCP SDK: Enterprise MCP SDK in Rust

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "epistates-turbomcp": {
      "command": "npx",
      "args": [
        "-y",
        "epistates-turbomcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

TurboMCP

Crates.io Documentation License: MIT

A ground-up Rust SDK for the Model Context Protocol — both halves of the protocol, server and client — with a macro-driven, zero-boilerplate surface and strict spec compliance as a feature.

Status: 4.0.0-alpha.1 — a prerelease for community testing. v4 is a from-scratch rewrite of TurboMCP; the stable line is 3.x. Edition 2024, MSRV 1.88. It passes the official MCP conformance suite (43/43) and interoperates with the official Rust SDK in both directions. The draft protocol revision it speaks (2026-07-28) tracks the pre-freeze spec and may shift at the ~2026-07-28 freeze; 2025-06-18 and 2025-11-25 support is stable. Found something broken or unergonomic? Please open an issue.

What you get

  • One macro defines a server. #[server] over an impl block turns #[tool] / #[resource] / #[prompt] methods into a fully-wired MCP server. JSON schemas are generated from your function signatures at compile time, and the advertised capabilities are derived from which markers are present — they can't drift from the implementation.
  • Three protocol revisions, one handler. The same server answers 2025-06-18, 2025-11-25, and the 2026-07-28 draft. Your handlers speak version-neutral types; the version-specific wire shapes are conversions, not signature changes — including dropping, per session, the fields a revision predates. Pin the set with #[server(protocols("2025-11-25", …))].
  • Transports behind one builder. stdio (default), Streamable HTTP (axum), and WebSocket. MyServer.run_stdio(), .run_http(addr, cfg), or turbomcp::ws::serve_websocket(listener, factory).
  • The client too. A typed Client runs the handshake, negotiates the version, and speaks the same neutral API — interoperating with the official Rust SDK (rmcp) in both directions.
  • Production seams. OAuth 2.1 on both halves (resource-server bearer validation and the client auth-code + PKCE flow), identity-keyed rate limiting, OpenTelemetry tracing + metrics, progress/logging, subscriptions, response caching (SEP-2549), and bidirectional elicitation — each opt-in behind a feature flag.

How this relates to rmcp, the official Rust SDK

rmcp is the official SDK, maintained in the modelcontextprotocol organization. It is the reasonable default, and this project is tested against it — cross-SDK interop tests run in both directions, a TurboMCP client against an rmcp server and the reverse, on every change.

The two make a different central bet.

rmcp models the protocol once and branches where revisions differ: one set of model types organized by concept, a negotiated ProtocolVersion string, and conditional checks at the points where behaviour changes. That is lighter, and it reaches further back — rmcp 2.2 knows five revisions (2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, 2026-07-28) where TurboMCP serves three. If you need clients on 2024-11-05 or 2025-03-26, use rmcp; this project cannot serve them.

TurboMCP generates a separate wire type set per revision and converts between them. Handlers speak version-neutral types; each revision's shapes are generated from that revision's published schema, and the conversions between them destructure exhaustively — so adding a field to one revision's wire is a compile error until someone decides what the other does with it. Fewer revisions, but the differences between them are checked by the compiler rather than by a reviewer.

Beyond that, TurboMCP ships things you would otherwise write yourself: capabilities derived from the markers present (advertisement can't drift from implementation); per-RPC typed contexts, so calling elicitation from a list_tools handler doesn't compile; Composite for mounting several servers as one; with_visibility for deciding per caller which components exist; tower::Layer middleware at the frame seam; and a no_std, wasm32-portable foundation.

Both forbid unsafe, both are edition 2024, both cover server and client. rmcp is Apache-2.0; this is MIT.

Pick rmcp for the official implementation, the older protocol revisions, or the smallest dependency surface. Pick TurboMCP for the macro surface, multi-revision support the type system enforces, or the composition, visibility, and auth seams above.

Quickstart

use turbomcp::prelude::*;

#[derive(Clone)]
struct Hello;

#[server(name = "hello", version = "1.0.0")]
impl Hello {
    /// Say hello to someone.
    #[tool(description = "Say hello to someone")]
    async fn hello(&self, name: String) -> McpResult<String> {
        Ok(format!("Hello, {name}!"))
    }
}

#[tokio::main]
async fn main() -> Result<(), turbomcp::ProtocolError> {
    // Logs MUST go to stderr — stdout carries the MCP protocol framing.
    Hello.run_stdio().await
}

See the turbomcp crate README for the full API tour (tools/resources/prompts, structured output, HTTP, feature flags) and the examples/.

Workspace layout

The SDK is a Cargo workspace; the turbomcp facade re-exports the pieces most users need, so a typical dependency is just turbomcp.

CrateRole
turbomcpMain SDK facade — re-exports, prelude, examples
turbomcp-macros#[server] / #[tool] / #[resource] / #[prompt]
turbomcp-coreno_std foundation: McpError, ProtocolVersion, JSON-RPC, _meta
turbomcp-codecWire codec: bytes ↔ JsonRpcMessage (serde_json baseline, opt-in SIMD via sonic-rs)
turbomcp-protocolMCP protocol: neutral types, 2025-11-25 + draft wire shapes, version dispatch
turbomcp-serviceThe tower-shaped protocol seam, transport trait, shared RPC middleware
turbomcp-serverHandler registry, dispatcher, ServerBuilder, graceful shutdown
turbomcp-clientTyped client: handshake, version negotiation, neutral API
turbomcp-transport-stdio / -http / -wsTransport implementations
turbomcp-authOAuth 2.1 resource-server auth (bearer validation, RFC 9728)
turbomcp-telemetryOpenTelemetry tracing (W3C _meta propagation, PII-safe spans)
turbomcp-ext-tasksDraft Tasks extension (io.modelcontextprotocol/tasks, SEP-2663)

Verification

Compliance is tested, not asserted:

  • Official conformance suite — the vendored @modelcontextprotocol/conformance harness drives a full-featured TurboMCP server over Streamable HTTP: on the pinned stable harness (0.1.16), 47 checks — 43 pass, 0 fail, 4 informational; the next-generation 0.2.0-alpha harness (52 checks) also passes clean (crates/turbomcp-conformance).
  • Cross-SDK interop — a TurboMCP client drives an official-Rust-SDK (rmcp 2.2) server and vice-versa, in-process (crates/turbomcp-interop).
  • ≈520 tests across the workspace (plus 86 more re-run against the no_std foundation configs) — dual-version dispatch, transport hardening (Origin/auth/size caps/idle reaping), handler-panic containment, MRTR elicitation, tasks (including in-execution input), subscriptions, pagination, response caching, auth negative paths, client failure semantics against misbehaving servers, and byte-level codec interchangeability (serde_json ↔ sonic-rs).
  • Fuzzing + supply chain — cargo-fuzz targets (codec decode, header sentinel, URI templates) and cargo-deny (advisories/bans/licenses/sources) run in CI.
  • wasm-portable foundationturbomcp-core/-codec/-protocol build no_std for wasm32-unknown-unknown on every gate run.

Migrating from v3

The macro surface is intentionally source-compatible for the common case; see crates/turbomcp/MIGRATION.md for the v3 → v4 deltas.

License

MIT

Related MCP Servers

S
Server Everything
Verified

📇 🏠 - MCP server that exercises all the features of the MCP protocol

🛠️ Other Tools and Integrations1 views
W
Webclaw

🦀 🏠 🍎 🐧 - Web content extraction for AI agents. 10 tools: scrape, crawl, map, batch, extract, summarize, diff, brand, search, research. TLS fingerprinting bypasses anti-bot without a browser. 67% fewer tokens than raw HTML. npx create-webclaw auto-configures Claude, Cursor, Windsurf, Codex, OpenCode.

🛠️ Other Tools and Integrations0 views
P
Plantuml Web

🐍 🏠 ☁️ 🍎 🪟 🐧 - A web-based PlantUML frontend with MCP server integration, enable plantuml image generation and plantuml syntax validation.

🛠️ Other Tools and Integrations0 views
Q
Qrcode Mcp

🐍 🏠 🍎 🪟 🐧 - A QR code generation MCP server that converts any text (including Chinese characters) to QR codes with customizable colors and base64 encoding output.

🛠️ Other Tools and Integrations0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

Last checked: 7/29/2026, 1:09:47 AM

Unclaimed listing (imported or pending owner verification). Claim it →
★ Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.