FastMCP Rust — 高性能 MCP 服务端框架
使用说明(Markdown格式)
-
项目简介
- FastMCP Rust 是一个面向 MCP 的服务端框架,旨在为 LLM 客户端提供统一的上下文数据、可执行工具、以及可渲染的提示模板等能力,并通过 JSON-RPC 与客户端通信,支持多传输实现(如 stdio、SSE、WebSocket)以及结构化并发和取消语义。
-
主要功能点
- MCP 协议核心:实现基于 JSON-RPC 的请求/响应处理、初始化握手、工具/资源/提示的注册与查询等核心流程。
- 宏支持的处理器注册:提供 #[tool]、#[resource]、#[prompt] 等特性宏,方便定义工具、资源、提示的处理器,并自动生成对应的 ToolHandler、ResourceHandler、PromptHandler 实现及输入/输出 Schema。
- 服务端构建与路由:提供 Server 构建器、路由和容错机制,便于构建可扩展的 MCP 服务端。
- 资源、工具、提示渲染:内置控制台组件用于在 Rich 模式下以表格/面板形式渲染服务器能力(工具、资源、提示)及连接信息。
- 传输和并发:多传输实现的框架设计(stdio、SSE、WebSocket 等),以及对取消、超时、分区并发的支持,保证取消性和并发性的一致性。
- 测试与示例:包含一个用于端到端测试的测试服务器实现 (test_server),演示 MCP 服务器的最小工作流(initialize、tools/list、tools/call、ping 等),以及大量针对渲染、日志、错误处理等场景的单元测试。
- 客户端与工具生态:配合 fastmcp-client 提供的工具链,实现客户端对工具、资源、提示等的调用与读取,从而实现完整的客户端-服务器端交互闭环。
-
安装步骤
- 通过 crates.io 添加依赖(示例为 bleeding-edge 版本可直接从 Git 项目获取):
- cargo add fastmcp-rust
- 如要使用本仓库的 bleeding-edge 变更,请在 Cargo.toml 使用如下依赖配置:
- fastmcp-rust = { git = "https://github.com/Dicklesworthstone/fastmcp_rust" }
- 通过 crates.io 添加依赖(示例为 bleeding-edge 版本可直接从 Git 项目获取):
-
服务器配置(JSON 配置示例,适用于 MCP 客户端通过配置加载服务器信息)
- 服务器配置文件(mcpServers)示例:
- { "mcpServers": { "example-server": { "command": "path/to/server_binary", "args": ["--config", "server_config.json"], "env": { "ENV_KEY": "value" } } } }
- 说明
- server 名称 example-server 将在 MCP 客户端连接时作为标识使用。
- command 指定要启动的 MCP 服务器二进制或可执行程序的启动命令。
- args 为该服务器二进制提供的启动参数(如必要的配置参数)。
- env 是要传递给服务器进程的环境变量集合(可选)。
- 该配置仅用于服务器端的启动/管理,MCP 客户端需要的仅是服务器信息(如命令和参数),客户端本身不需要此 JSON 直接解释。
- 服务器配置文件(mcpServers)示例:
-
基本使用方法
- 快速入门
- 在你的 Rust 项目中引入 FastMCP Rust,使用 #[tool]、#[resource]、#[prompt] 宏快速注册工具、资源与提示,并通过 Server::new(...) 构建 MCP 服务端,运行带有 stdio 的服务器以对接 Claude Desktop 等 MCP 客户端。
- 使用要点
- 通过宏快速定义工具、资源、提示,并自动生成用于 MCP 协议的输入输出描述(JSON Schema),极大降低重复工作量。
- 通过 Server 构建器将工具、资源、提示注册到服务端,开启 JSON-RPC 的交互。
- 使用内置的测试服务器(test_server)作为 MCP 客户端与服务端交互的对等端进行端到端测试,确保协议正确性和渲染输出。
- 服务器配置与部署
- 将上述 JSON 配置文件放置在可被服务器读取的位置(如 Claude/Ctrl 客户端的配置目录),确保命令、参数和环境变量正确无冲突。
- 以 stdio 传输为默认交互媒介,确保二进制能够从标准输入读取请求、从标准输出返回响应。
- 运行示例(概念性描述,不包含代码块)
- 构建并运行包含工具/资源/提示加载的 MCP 服务端二进制,使用客户端(如 Claude Desktop)启动并通过标准输入/输出的 MCP 通道进行初始化、查询工具列表、执行工具、获取提示等。
- 快速入门
-
备注与注意
- 本仓库包含一个简单的测试服务器实现(test_server),用于端到端测试 MCP 请求/响应、以及渲染输出在 Rich 和 Plain 模式下的表现,确保协议交互的正确性。
- 快速迭代与测试用例覆盖较广,涵盖工具、资源、提示等多方面的交互与渲染的边界情况。