Rust MCP服务器
一个基于Rust构建并部署在AWS Lambda上的高性能模型上下文协议(MCP)服务器。此服务器通过各种工具提供产品搜索功能,演示了完整的无服务器MCP实现。
📋 目录
🏗️ 基础设施
架构概述
此项目使用AWS CDK(云开发工具包)和TypeScript来部署基于Rust的Lambda函数,该函数包含以下组件:
- AWS Lambda函数:运行Rust MCP服务器的无服务器计算
- 函数URL:用于在没有API网关的情况下直接访问的HTTP端点
- CORS配置:web客户端的跨源资源共享
- ARM64架构:针对AWS Graviton处理器的成本和性能进行了优化
部署堆栈
基础设施定义见 lib/rust-mcp-stack.ts 包括:
// Key infrastructure components:
- Runtime: PROVIDED_AL2023 (Amazon Linux 2023)
- Architecture: ARM_64 (AWS Graviton)
- Timeout: 30 seconds
- Memory: Default (128MB)
- Build Tool: cargo-zigbuild for cross-compilation构建过程
CDK堆栈处理从任何平台到ARM64 Linux的交叉编译:
- 本地捆绑:用途
cargo-zigbuild用于交叉编译 - 目标:
aarch64-unknown-linux-gnu适用于AWS Lambda ARM64 - 二进制:创建
bootstrapLambda运行时的可执行文件 - 部署:通过CDK打包和部署
CORS配置
cors: {
allowedOrigins: ['*'],
allowedMethods: [HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE],
allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With'],
maxAge: Duration.hours(1)
}先决条件
- AWS CLI已配置
- 已安装AWS CDK(
npm install -g aws-cdk) - 防锈工具链
- Zig编译器
cargo-zigbuild(cargo install cargo-zigbuild)
部署命令
# Install dependencies
npm install
# Build and deploy
cdk deploy
# Get the Function URL from outputs🧠 逻辑
MCP协议实现
服务器实现了完全符合JSON-RPC 2.0的模型上下文协议:
核心协议方法
- 初始化:建立连接并返回服务器功能
- 工具/列表:返回用于产品搜索操作的可用工具
- 工具/电话:使用提供的参数执行特定工具
可用工具
服务器为产品操作提供了四个主要工具:
1.搜索产品
{
"name": "search_products",
"description": "Search for products by name or keyword",
"inputSchema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Search query"},
"limit": {"type": "integer", "description": "Max results (optional)"}
},
"required": ["query"]
}
}2.按价格范围筛选
{
"name": "filter_by_price_range",
"description": "Filter products within a price range",
"inputSchema": {
"properties": {
"min_price": {"type": "number", "description": "Minimum price"},
"max_price": {"type": "number", "description": "Maximum price"}
},
"required": ["min_price", "max_price"]
}
}3.按类别搜索
{
"name": "search_by_category",
"description": "Search products within a specific category",
"inputSchema": {
"properties": {
"category": {"type": "string", "description": "Product category"}
},
"required": ["category"]
}
}4.获取类别
{
"name": "get_categories",
"description": "Retrieve all available product categories",
"inputSchema": {"type": "object", "properties": {}}
}数据源
服务器与 DummyJSON API 产品数据:
- 产品端点:
https://dummyjson.com/products - 搜索端点:
https://dummyjson.com/products/search - 类别端点:
https://dummyjson.com/products/category/{category} - 类别列表:
https://dummyjson.com/products/categories
错误处理
具有适当MCP错误响应的全面错误处理:
- -32601:未找到方法
- -32602:无效参数
- -32603:内部错误
- HTTP错误:来自外部API调用的正确传播
会话管理
基本会话管理功能:
- 会话信息存储
- 用户偏好(可扩展)
- 线程安全会话处理
Arc>
🔗 连接
MCP检查员(推荐)
测试和与MCP服务器交互的最简单方法是使用MCP检查器:
- 安装MCP检查器:
npm install -g @anthropic-ai/mcp-inspector- 连接到已部署的服务器:
mcp-inspector https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws- 交互式测试:
- 查看可用工具 - 带有参数的测试工具调用 - 检查请求/响应格式 - 验证MCP协议合规性
直接HTTP/cURL测试
您可以使用cURL命令直接测试服务器:
1.初始化连接
curl -X POST https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {}
}'2.列出可用工具
curl -X POST https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}'3.搜索产品
curl -X POST https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search_products",
"arguments": {
"query": "smartphone",
"limit": 5
}
}
}'4.按价格范围筛选
curl -X POST https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "filter_by_price_range",
"arguments": {
"min_price": 100,
"max_price": 500
}
}
}'5.按类别搜索
curl -X POST https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "search_by_category",
"arguments": {
"category": "smartphones"
}
}
}'6.获取类别
curl -X POST https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "get_categories",
"arguments": {}
}
}'CORS 预飞
curl -X OPTIONS https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws \
-H "Origin: https://example.com" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: Content-Type"与MCP客户端集成
此服务器与任何MCP客户端实现兼容:
- 克劳德桌面:可以配置为使用此服务器
- 自定义MCP客户端:使用函数URL作为服务器端点
- Web应用程序:直接HTTP集成CORS支持
响应格式
所有响应均遵循JSON-RPC 2.0规范:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
// Tool result data
}
}错误响应:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Invalid params",
"data": "Additional error details"
}
}______________________________________________________________________
🚀 快速开始
- 部署基础设施:
cdk deploy- 获取您的函数URL 来自CDK输出
- 使用MCP检查员进行测试:
mcp-inspector https://YOUR_FUNCTION_URL.lambda-url.us-east-1.on.aws- 开始构建MCP应用程序 利用产品搜索功能!
🧪 测试
该项目包括全面的测试覆盖范围:
- 单元测试:
cargo test - 集成测试:完全符合MCP协议
- 总共68个测试,涵盖所有功能
📄 许可证
本项目按原样提供,用于教育和发展目的。
