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 服务端点。
-
安装步骤
- 安装 MCP 服务器二进制: cargo install tidepool
- 安装 Haskell 工具链(需要 Nix,或按 README 指示自行配置 tidepool-extract):
- 安装 Nix
- 使用 Nix 下载 tidepool-extract(如需要)
- 将 tidepool-extract 放置在可执行路径中,或通过 TIDEPOOL_EXTRACT 指定具体路径
- 运行与配置 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 能进行复杂的资源访问、工具执行和聚合性的提示渲染。
- 提供一个可扩展、可配置的后端服务框架,支持多种传输协议与会话交互模式。