RoCQ:Coq推理MCP服务器
项目简介
RoCQ (Coq Reasoning Server) 是一个基于 Model Context Protocol (MCP) 构建的服务器,它将Coq证明助手的功能集成到LLM应用中,为LLM提供强大的逻辑推理能力。通过 RoCQ,LLM可以执行类型检查、定义归纳类型、进行属性证明等高级逻辑操作,从而增强其在数学、逻辑和计算机科学等领域的应用能力。
主要功能点
- 自动化依赖类型检查:验证代码或数学表达式是否符合复杂的类型规则,帮助LLM理解和生成类型正确的代码。
- 归纳类型定义:允许LLM定义和验证自定义的归纳数据类型,例如列表、树等,扩展LLM处理复杂数据结构的能力。
- 属性证明:支持LLM证明逻辑属性,例如数学定理或程序性质,提升LLM进行形式化推理的能力。
- XML协议集成:使用可靠的XML协议与Coq进行结构化通信,确保数据交换的准确性和稳定性。
- 丰富的错误处理:提供详细的错误反馈,帮助LLM理解类型错误和证明失败的原因,从而改进其推理过程。
安装步骤
-
安装 Coq Platform 8.19 (2024.10)
RoCQ 依赖于 Coq 证明系统。请访问 https://github.com/coq/platform 下载并安装 Coq Platform 8.19 (2024.10) 版本。请注意,Coq Platform 的安装路径需要记住,后续配置服务器时会用到。
-
克隆 RoCQ 仓库
打开终端,执行以下命令克隆 RoCQ 仓库到本地:
git clone https://github.com/angrysky56/mcp-rocq.git cd mcp-rocq -
创建并激活虚拟环境,安装依赖
在仓库根目录下,执行以下命令创建虚拟环境并安装 RoCQ 及其依赖:
uv venv ./venv/Scripts/activate # Windows # source ./venv/bin/activate # Linux/macOS uv pip install -e .或者,您也可以使用 'pip' 安装依赖:
pip install -r requirements.txt
服务器配置
MCP 客户端需要配置 RoCQ 服务器的启动命令和参数才能连接。以下是 JSON 格式的配置示例,请根据您的 Coq Platform 和 RoCQ 仓库的实际安装路径进行修改:
{ "serverName": "mcp-rocq", "command": "uv", "args": [ "--directory", "F:/GithubRepos/mcp-rocq", // 修改为您的 RoCQ 仓库路径 "run", "mcp_rocq", "--coq-path", "F:/Coq-Platform~8.19~2024.10/bin/coqtop.exe", // 修改为您的 coqtop.exe 路径 "--lib-path", "F:/Coq-Platform~8.19~2024.10/lib/coq" // 修改为您的 Coq lib 路径 ] }
配置参数说明:
- '"serverName"': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
- '"command"': 启动服务器的命令,这里使用 'uv',确保您的环境中已安装 'uv'。如果您使用 'pip' 安装依赖,可以将此项修改为 'python'。
- '"args"': 传递给启动命令的参数列表。
- '"directory"': 指定 RoCQ 仓库的根目录。
- '"run"': 使用 'uv run' 运行 Python 模块。 如果您使用 'python' 命令,则此参数可以省略,并在 'command' 中直接使用 'python'。
- '"mcp_rocq"': 指定要运行的 Python 模块为 'mcp_rocq',对应 'src/mcp_rocq/server.py' 文件。
- '--coq-path': Coq 解释器 'coqtop.exe' 的路径,请替换为您的 Coq Platform 安装目录下的 'coqtop.exe' 路径。
- '--lib-path': Coq 标准库的路径,请替换为您的 Coq Platform 安装目录下的 'lib/coq' 路径。
基本使用方法
RoCQ 服务器提供以下三个主要工具,您可以在 MCP 客户端中调用这些工具来利用 Coq 的推理能力:
-
类型检查 (type_check)
用于检查一个表达式 (term) 的类型是否正确。
{ "tool": "type_check", "args": { "term": "1 + 1", // 要检查类型的表达式 "expected_type": "nat", // 可选:期望的类型 "context": ["Arith"] // 可选:需要导入的 Coq 模块 } } -
定义归纳类型 (define_inductive)
用于定义新的归纳数据类型,例如树、列表等。
{ "tool": "define_inductive", "args": { "name": "Tree", // 归纳类型名称 "constructors": [ // 构造器列表 "Leaf : Tree", "Node : Tree -> Tree -> Tree" ], "verify": true // 是否验证归纳类型的性质 } } -
属性证明 (prove_property)
用于证明一个逻辑属性或数学定理。
{ "tool": "prove_property", "args": { "property_stmt": "forall n m : nat, n + m = m + n", // 要证明的属性 "tactics": ["intros n m."], // 可选:证明策略 "use_automation": true // 是否使用自动化证明 } }您可以根据需要在 MCP 客户端中构造上述 JSON 请求,并发送给 RoCQ 服务器以执行相应的 Coq 功能。服务器将返回 JSON 格式的响应,包含执行结果或错误信息。
注意:
- 首次使用可能需要一些时间启动 Coq 进程。
- 请确保 Coq Platform 安装正确,并且 'coqtop.exe' 和 Coq 库路径配置正确。
- 如果遇到问题,请查看 RoCQ 服务器的日志输出,以便进行调试。
信息
分类
AI与计算