使用说明
agda mcp
MCP服务器 阿格达,直接从Claude Code或任何MCP客户端提供类型检查、转到定义、案例拆分、自动证明搜索等。
对话 agda --interaction-json (Emacs/VS Code中支持agda模式的相同界面),因此它可以访问agda的所有交互功能,而无需 agda-language-server.
安装
先决条件
1.克隆和构建
git clone https://github.com/DreamLinuxer/agda-mcp.git
cd agda-mcp
uv sync
2.添加到您的MCP客户端
克劳德代码 (全球范围内,所有项目):
claude mcp add --scope user agda-lsp -- uv run --directory /path/to/agda-mcp agda-mcp
其他MCP客户端 --添加到客户端的MCP配置中:
{
"mcpServers": {
"agda-lsp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/agda-mcp", "agda-mcp"],
"type": "stdio"
}
}
}
替换 /path/to/agda-mcp 使用克隆仓库的绝对路径。
工具
文件和导航
| 工具 | 说明 |
|---|---|
agda_load |
加载/类型检查文件,获取目标+错误+警告 |
agda_hover |
符号类型+某一位置的定义位置 |
agda_definition |
转到定义(文件:行:col) |
目标操纵(修改源)
| 工具 | 说明 |
|---|---|
agda_give |
用完整的溶液填补一个洞 |
agda_elaborate_give |
用精心设计的解决方案填补漏洞 |
agda_refine |
细化目标(可能创建新的子目标) |
agda_intro |
引入构造函数或lambda |
agda_refine_or_intro |
在精炼和介绍之间自动选择 |
agda_case_split |
目标中变量的案例分割 |
agda_auto |
尝试自动解决一个目标 |
agda_solve_one |
如果由统一决定,则解决目标 |
目标检查
| 工具 | 说明 |
|---|---|
agda_goal_info |
获取目标的类型和背景 |
agda_goal_type |
获得目标类型 |
agda_context |
获取目标的上下文(绑定) |
agda_goal_type_context_infer |
目标类型+上下文+expr的推断类型 |
agda_goal_type_context_check |
目标类型+上下文+根据类型检查expr |
agda_infer_in_goal |
推断目标处表达式的类型 |
agda_compute_in_goal |
在目标处规范表达式 |
agda_helper_function |
为目标生成辅助函数类型 |
agda_why_in_scope_goal |
解释一个名字从哪里来(在一个目标上) |
agda_module_contents_goal |
列出模块内容(目标) |
顶级命令
| 工具 | 说明 |
|---|---|
agda_infer |
推断表达式的类型 |
agda_compute |
规范化/计算表达式 |
agda_why_in_scope |
解释名字的来源 |
agda_constraints |
显示所有未解决的约束 |
agda_metas |
显示所有开放目标/元变量 |
agda_search_about |
搜索提到给定名称的定义 |
agda_module_contents |
列出模块导出的名称 |
agda_solve_all |
解决统一确定的所有目标 |
agda_auto_all |
尝试自动解决所有目标 |
使用示例
加载并键入检查文件
agda_load("/path/to/file.agda")
→ Checked. No errors, warnings, or goals.
推断类型
agda_infer("/path/to/file.agda", "map")
→ {a b : Set} {n : ℕ} → (a → b) → Vec a n → Vec b n
计算表达式
agda_compute("/path/to/file.agda", "2 + 3")
→ 5
案件分割
agda_case_split("/path/to/file.agda", 0, "xs")
→ f [] = ?
f (x ∷ xs) = ?
自动解决目标
agda_auto("/path/to/file.agda", 0)
→ a , b
运作原理
服务器生成一个持久 agda --interaction-json 通过stdio上的IOTCM协议进行处理和通信。文件状态(突出显示跳转定义、目标类型、诊断的数据)按文件缓存,并在每个文件上刷新 agda_load 电话。