Spark-MCP 服务器端

使用说明(简明操作指南)

  • 项目简介

    • Spark-MCP 服务器是一套基于 MCP(Model Context Protocol)的后端服务,用于向 LLM 客户端暴露本地日历、天气、联系人等资源,并注册多种“工具”供 LLM 调用,以实现外部功能的扩展性。同时提供可渲染的 Prompt 模板,支持与 LLM 的交互对话场景。
    • 服务器通过 JSON-RPC 形式与客户端通信,支持多种传输方式,并实现会话管理与能力声明,便于扩展与安全控制。
  • 主要功能点

    • 资源与数据托管:将日历、天气、联系人等本地/远端资源以 MCP 资源的形式暴露给客户端,便于通过统一接口访问。
    • 工具注册与执行:注册天气、日历、日程等工具,LLM 可以通过 MCP 调用这些工具获取外部能力。
    • Prompt 模板渲染:定义和渲染 Prompt 模板,定制化 LLM 的对话模式与上下文提供方式。
    • 会话与能力声明:服务器端管理会话、能力声明,灵活扩展不同客户端能力。
    • 多传输协议:示例实现了 SSE(Server-Sent Events)传输(/sse 路径),并具备 WebSocket/StdIO 等扩展潜力。
    • 配置化启动与热更新:通过 mcp-config.yaml 配置服务器端口、数据源、工具参数等,支持环境变量覆盖。
  • 安装步骤

    • 通过 Go 工具安装 MCP 服务器端二进制(推荐):
      • go install github.com/jovandeginste/spark-personal-assistant/cmd/mcp@latest
    • 在项目根目录创建并填写 mcp-config.yaml(示例默认配置,详见仓库 README 的 MCP 服务器部分):
      • 端口配置、各数据源 API 地址、以及可选的 token、日历、联系人等数据源的访问设置。
    • 将所需的本地资源与工具依赖准备好(如日历、天气数据源、ICS、VCF、Markdown 文件等)。
  • 服务器配置(与 MCP 客户端通信前提)

    • MCP 服务器属于 MCP 客户端对等通信对象,客户端需要知道启动服务器的命令与参数以建立连接。以下为配置要点的描述(非代码表示):
      • server_name(服务器名称):spark-mcp-server
      • command(启动命令):mcp
      • args(启动参数):可选为空数组;实际部署时,请将运行环境配置为在当前工作目录有 mcp-config.yaml 配置文件,服务器将读取端口、数据源、工具设置等信息。
    • 备注:在本仓库中,MCP 服务器是通过内部实现实现的 SSE 服务端点(/sse)来提供 MCP 服务,默认通过 mcp-config.yaml 加载配置。因此客户端并不需要特定的命令行参数来传递配置,而是通过服务器启动后提供的接口进行交互。
  • 基本使用方法(步骤化)

    • 第一步:准备配置
      • 在项目根目录放置 mcp-config.yaml,按照需求配置端口、数据源、Token、日历/天气等工具参数。
    • 第二步:启动服务器
      • 使用系统环境或终端执行安装后的 mcp 二进制文件,确保当前目录有 mcp-config.yaml。
    • 第三步:客户端连接
      • MCP 客户端通过 JSON-RPC 调用连接到服务器,发送读取资源、调用工具、获取 Prompt 等请求,服务器响应相应结果。
    • 第四步:扩展与维护
      • 按需添加/注册新的工具、扩充资源,调整 mcp-config.yaml 配置,服务器将自动暴露新的能力给 LLM 客户端。
  • 运行与扩展注意事项

    • 服务器在代码中使用了 SSE 传输(/sse),也具备进一步扩展为 WebSocket 的潜力。
    • 资源与工具的注册是动态的,可在启动阶段通过注册函数将新工具暴露给 MCP 客户端。
    • 配置与安全:建议在生产环境中通过环境变量覆盖敏感信息(如 API Key、Token 等),并对不同客户端进行能力声明与访问控制。

服务器信息