Tidepool MCP Server

使用说明(简要):

  • 项目简介 Tidepool 提供一个基于 MCP(Model Context Protocol)的服务器实现,能够通过标准的 JSON-RPC 调用向客户端暴露“评估/执行 Haskell 代码、资源访问、工具调用、以及提示模板渲染”的能力,核心设计是可扩展的工具集与可渲染的提示模板,便于将自由文本的 LLM 请求转为可执行的上下文服务。

  • 主要功能点

    • MCP 服务器核心:实现对 MCP 请求的处理、工具注册、会话管理和能力声明,并支持多种传输介质(stdin、HTTP)。
    • 工具与会话:提供 eval、resume 等工具,用于执行 Haskell 代码与续传问答式对话(Ask/LLM 交互)。
    • 资源与工具注册:通过自定义的 EffectDecl 列表自动生成并暴露标准资源和工具集合,便于 LLM 客户端调用。
    • Haskell 组件运行:通过 Tidepool 的运行时,将 Haskell 代码编译成 CoreExpr,再在 JIT 机器上执行,支持可选的用户库、预置模块和自定义导入路径。
    • 安全沙箱与诊断:对导入进行白名单检查、提供超时保护、并在错误时附带 JIT/诊断信息,便于调试和安全性控制。
    • 传输与部署:主要通过标准输入输出(stdio)对接客户端,以及基于 HTTP 的流式服务暴露 MCP 服务端点。
  • 安装步骤

    1. 安装 MCP 服务器二进制: cargo install tidepool
    2. 安装 Haskell 工具链(需要 Nix,或按 README 指示自行配置 tidepool-extract):
      • 安装 Nix
      • 使用 Nix 下载 tidepool-extract(如需要)
      • 将 tidepool-extract 放置在可执行路径中,或通过 TIDEPOOL_EXTRACT 指定具体路径
    3. 运行与配置 Tidepool 的 MCP 服务默认通过 STDIO 进行通信;也可使用 HTTP 传输进行对接。推荐先用 STDIO 作为开发调试入口。
  • 服务器配置(客户配置无需实现服务器端逻辑,配置信息仅用于 MCP 客户端描述与对接)
    服务器名称示例(JSON 配置描述,供 MCP 客户端参考): { "server_name": "tidepool", "command": "tidepool", "args": [] }

  • 基本使用方法

    • 启动服务器后,客户端通过 MCP 请求调用服务器暴露的工具(如 eval、resume),服务器返回 JSON-RPC 风格的响应或通知。
    • 客户端可通过配置选择不同传输通道(stdio、http),以及设置 GHC 工具链路径(TIDEPOOL_EXTRACT)等环境变量以适配本地开发环境。
    • 若需要热重启、或自定义库,请将库放在 .tidepool/lib/Library.hs,并在启动时开启 user library 支持,以便客户端通过工具使用自定义逻辑。
    • 通过 MCP 的工具列表(list_tools),客户端可以查询可用工具及其输入/输出类型描述。
    • 使用提示模板时,MCP 服务器会基于声明的能力生成适用于 LLM 的 prompts、帮助信息和分页/截断策略。
  • 关键实现要点

    • MCP 服务器实现了 Run/Resume 流程、工具注册、工具调用、权限与导入检查、以及会话管理(包括 Ask 会话的持续与续传)。
    • 它支持将 Haskell 代码编译为 Core 表达式并在 JIT 机器上执行,输出被转换为 JSON,方便 LLM 客户端消费。
    • 服务器可通过 stdio 或 HTTP 进行对接,适合集成到各种前端/LLM 客户端场景中。
  • 使用场景

    • 将 Haskell 的业务逻辑暴露为可通过 LLM 调用的上下文服务,使 LLM 能进行复杂的资源访问、工具执行和聚合性的提示渲染。
    • 提供一个可扩展、可配置的后端服务框架,支持多种传输协议与会话交互模式。

服务器信息