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 方案进行运行与健康监控。

服务器信息