TripPlanner MCP 服务器端
使用说明
- 项目简介
- 该仓库实现了一个以 MCP 为核心的后端服务,负责托管并管理旅程相关的资源(如 Trips、Wishlists、Places),注册并暴露可被外部 AI 代理调用的工具(Tools),并提供对话/模板等能力的扩展。服务器通过 JSON-RPC 风格的 MCP 请求和响应与客户端交互,支持 HTTP 传输。
- 主要组件包含:MCP 服务端、Trips/Wishlists/Places 的工具实现、用户认证、资源共享、URL 导入、地理编码、天气查询、以及本地 AI 助手(Ollama)集成等。
- 主要功能点
- MCP 服务端:/mcp 路径暴露服务端点,支持对资源的读取、创建、更新、删除等操作,以及工具组的执行调用。
- Tools(工具组):Trips、Wishlists、Places 三类工具,用于对外暴露对旅程相关实体的 CRUD 能力,供 LLM 调用。
- AI 助手入口:本地 Ollama 模型支持的对话界面,能够通过工具对Trips/Wishlists/Places进行 CRUD 等操作,并维持会话历史。
- 资源与共享:支持多用户、多拥有者的旅程/愿望清单的拥有与分享权限控制。
- 数据与外部服务:URL 导入、Nominatim 地理编码、Open-Meteo 天气查询等服务,支撑更丰富的上下文信息。
- 安全与观测:API Key 认证、会话管理、健康检查、OpenTelemetry 日志与追踪等。
- 安装步骤
- 先决条件
- .NET 10 SDK
- SQL Server 数据库(本地或容器化)
- 可选:Ollama 本地模型服务(llama3.2)
- 获取代码
- 克隆仓库并进入 TripPlanner 目录
- 配置数据库
- 在 TripPlanner.Web/appsettings.json 中配置 DefaultConnection 为你的 SQL Server 连接字符串
- 依赖与构建
- 运行 dotnet build 以编译解决方案
- 迁移与初始化
- 第一次启动时应用数据库迁移,确保数据库结构与模型一致
- 启动服务
- 以分布式应用形式启动:先启动 TripPlanner.AppHost(apiservice 与 web 前端在同一宿主中管理),再启动 web 前端
- 运行与测试
- 当服务启动后,可以通过 MCP 客户端指向 /mcp 端点进行请求测试
- 先决条件
- 服务器配置(MCP 客户端所需信息示例)
说明:MCP 客户端需要知道如何启动并连接到 MCP 服务器。以下为可用于 MCP 客户端的示例配置信息(JSON 格式,字段含义在注释中说明,实际客户端不需要额外代码):
{
"server": "tripplanner",
"command": "dotnet",
"args": [
"TripPlanner.AppHost/TripPlanner.AppHost.dll"
]
// 注释说明:
// - server: 服务器在 MCP 客户端中的名称,应该与你的环境配置一致,便于区分
// - command: 用于启动服务器的命令,示例为 .NET 运行命令
// - args: 命令参数,指向应用程序入口(AppHost.dll)所在路径,实际路径请按部署结构调整
}
额外提示
- MCP API Key 认证:请在管理界面生成 MCP API Key,客户端在请求头中使用 Bearer <key> 进行认证。
- API Key 的哈希处理:服务端会对 Key 做安全存储与校验,实际使用时请确保通过 UI 生成并妥善保管 Key。
- 部署与运维:生产环境建议使用容器化部署或分布式编排工具,结合上文的 docker-compose 和 Aspire 方案进行运行与健康监控。