10 releases (4 breaking)
Uses new Rust 2024
| 0.5.0 | Dec 26, 2025 |
|---|---|
| 0.4.0 | Dec 24, 2025 |
| 0.3.0 | Dec 23, 2025 |
| 0.2.5 | Dec 17, 2025 |
| 0.1.0 | Dec 11, 2025 |
#2718 in HTTP server
1MB
22K
SLoC
mcpkit-actix
Actix-web integration for the Model Context Protocol (MCP).
This crate provides integration between the MCP SDK and the Actix-web framework, making it easy to expose MCP servers over HTTP.
Features
- HTTP POST endpoint for JSON-RPC messages
- Server-Sent Events (SSE) streaming for notifications
- Session management with automatic cleanup
- Protocol version validation
- CORS support
Usage
use mcpkit_actix::McpRouter;
use mcpkit_server::ServerHandler;
// Your MCP server handler (must implement ServerHandler, ToolHandler, etc.)
// Note: Clone is NOT required - the handler is wrapped in Arc internally.
struct MyServer;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
// Simplest approach: use McpRouter for stdio-like ergonomics
McpRouter::new(MyServer)
.with_cors()
.with_logging()
.serve("0.0.0.0:3000")
.await
}
Default Endpoints
| Endpoint | Method | Purpose |
|---|---|---|
/mcp |
POST | JSON-RPC messages |
/mcp/sse |
GET | Server-Sent Events stream |
Customizing Paths
McpRouter::new(MyServer)
.post_path("/api/mcp")
.sse_path("/api/mcp/sse")
.serve("0.0.0.0:3000")
.await
Integration with Existing App
For more control, integrate MCP routes into an existing Actix-web application:
use mcpkit_actix::McpRouter;
use mcpkit_server::ServerHandler;
use actix_web::{App, HttpServer};
struct MyServer;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let router = McpRouter::new(MyServer);
HttpServer::new(move || {
App::new()
.configure(router.configure_app())
// Add your other routes here
})
.bind("0.0.0.0:3000")?
.run()
.await
}
Exports
| Export | Purpose |
|---|---|
McpRouter |
Router builder for MCP endpoints |
McpState |
Shared state for MCP handlers |
handle_mcp_post |
Handler for POST requests |
handle_sse |
Handler for SSE streaming |
Session |
Individual client session |
SessionManager |
Manages SSE broadcast channels |
SessionStore |
Storage for HTTP session data |
Part of mcpkit
This crate is part of the mcpkit SDK. For most use cases, depend on mcpkit directly rather than this crate.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Dependencies
~31–49MB
~729K SLoC