MCP服务器工具

一个基于Rust的MCP服务器,提供日历和联系人管理工具,适用于AI代理开发。

  • by franciscotbjr
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 franciscotbjr/mcp-server-playground

使用说明

mcp服务器游乐场

一个基于Rust的MCP(模型上下文协议)服务器,为AI代理提供了两个工具: 日历 和 联系人,模拟数据由本地JSON文件支持。

概述

此项目通过以下方式实现MCP服务器 可流式传输的HTTP 运输,跟随 MCP规范(2025-03-26)。它是Rust中MCP服务器开发的学习/游乐场项目。

服务器公开了一个 /mcp 支持三种HTTP方法的端点:

  • POST /mcp --客户端发送JSON-RPC请求(单次或批量);服务器以JSON进行响应。会话ID通过 Mcp-Session-Id 头球
  • GET /mcp --为服务器启动的消息打开被动SSE流(需要 Mcp-Session-Id 头球
  • DELETE /mcp --终止会话(需要 Mcp-Session-Id 头球

工具

  • calendar --查询和搜索日历事件(列表、按ID获取、搜索、按类别/日期/优先级过滤)
  • contacts --查询和搜索联系人(列表、按ID获取、搜索、按标签过滤、收藏夹)

数据

所有数据均通过本地JSON文件进行模拟:

  • calendar.json --12个活动,包括参与者、地点、重复、提醒
  • contacts.json --17个联系人,包括电话号码、电子邮件、地址、社交资料

建筑

cargo build

跑步

服务器在上启动HTTP服务器 127.0.0.1:3000 默认情况下。

cargo run

要启用调试日志记录,请执行以下操作:

RUST_LOG=debug cargo run

快速开始使用curl

发送一个 initialize 请求(要求服务器正在运行):

curl -X POST http://127.0.0.1:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'

预期输出——具有服务器功能的JSON-RPC响应和 Mcp-Session-Id 响应标头:

{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"mcp-server-playground","version":"0.1.0"}}}

例子

跑吧 initialize 示例以查看完整的MCP生命周期握手(POST /mcp → 初始化→ 已初始化):

cargo run --example initialize

测试

cargo test

总共119个测试:14个在线单元测试(pub(crate) 内部构件)+105次集成测试 tests/.

项目结构

看 建筑.md 用于完整的模块结构和设计决策。

方法论

该项目遵循 设计来源 在人工智能的帮助下进行结构化Rust开发的方法。

许可证

麻省理工学院