莱茵·麦克普
Leiningen插件将模型上下文协议(MCP)与nREPL集成在一起,允许像Claude这样的AI助手与您的Clojure开发环境进行交互。
特性
- 莱宁根原住民融合:使用单个命令启动启用MCP的REPL
lein mcp命令 - nREPL中间件:自动启动MCP HTTP服务器以及nREPL
- MCP工具:为AI助手提供评估代码、加载文件、切换命名空间和搜索符号的工具
- MCP资源:公开会话状态、命名空间、文档和源代码
安装
添加到您的 ~/.lein/profiles.clj:
{:user {:plugins [[lein-mcp "0.1.0-SNAPSHOT"]]}}或添加到您的项目 project.clj:
:plugins [[lein-mcp "0.1.0-SNAPSHOT"]]用法
快速开始
启动启用MCP的REPL:
lein mcp这将:
- 启动nREPL服务器(默认端口:自动分配或从
:repl-options) - 启动MCP HTTP服务器(默认端口:8787)
- 打印两台服务器的连接信息
自定义端口
# Custom nREPL port
lein mcp :nrepl-port 7888
# Custom MCP HTTP port
lein mcp :mcp-port 9000
# Both custom ports
lein mcp :nrepl-port 7888 :mcp-port 9000无头模式
不使用交互式REPL运行:
lein mcp :headless配置
添加到您的 project.clj:
:repl-options {
:mcp-port 8787 ; Custom MCP HTTP port
:nrepl-middleware [lein-mcp.middleware/wrap-mcp] ; Explicit middleware (optional)
}使用Claude代码
- 在项目目录中启动MCP服务器:
cd /path/to/your/project
lein mcp :headless这创建了一个 .mcp-port 包含端口号的文件(对脚本和工具很有用)。
- 通过添加配置Claude代码
.mcp.json对于您的项目:
{
"mcpServers": {
"lein-mcp": {
"url": "http://localhost:8787",
"transport": "http"
}
}
}- Claude Code在此目录中工作时将连接到MCP服务器
与Claude Desktop一起使用
添加到您的 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"clojure": {
"command": "curl",
"args": [
"-X", "POST",
"-H", "Content-Type: application/json",
"--data-binary", "@-",
"http://localhost:8787"
]
}
}
}或者使用支持HTTP传输的专用MCP客户端。
MCP工具
该插件为AI助手提供了以下工具:
eval clojure
在REPL会话中评估Clojure代码。
参数:
code(string,必填):要计算的Clojure代码
例子:
{
"tool": "eval-clojure",
"arguments": {
"code": "(+ 1 2 3)"
}
}加载文件
加载并评估Clojure文件。
参数:
file-path(string,必填):Clojure文件的路径
例子:
{
"tool": "load-file",
"arguments": {
"file-path": "src/myapp/core.clj"
}
}设置ns
切换到其他命名空间。
参数:
namespace(string,必填):要切换到的命名空间
例子:
{
"tool": "set-ns",
"arguments": {
"namespace": "myapp.core"
}
}关于
搜索与模式匹配的符号。
参数:
query(字符串,必填):搜索模式(字符串或正则表达式)
例子:
{
"tool": "apropos",
"arguments": {
"query": "map"
}
}MCP资源
该插件公开了这些资源:
clojure://session/current-ns-当前命名空间名称clojure://session/namespaces-所有已加载的命名空间clojure://doc/{symbol}-符号的文档(例如。,clojure://doc/map)clojure://source/{symbol}-符号的源代码(例如。,clojure://source/defn)
建筑
lein-mcp由几个部分组成:
- 莱宁根任务 (
leiningen.mcp):入口点lein mcp命令 - nREPL中间件 (
lein-mcp.middleware):将MCP与nREPL生命周期集成 - MCP服务器 (
lein-mcp.server):用于MCP JSON-RPC请求的HTTP服务器 - MCP协议 (
lein-mcp.protocol):处理MCP协议并转换为nREPL操作 - nREPL客户端 (
lein-mcp.client):将MCP服务器连接回nREPL
运作原理
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Claude │ HTTP │ MCP Server │ nREPL │ nREPL │
│ (AI Tool) ├────────►│ (port 8787) ├────────►│(auto-assign)│
│ │ JSON- │ │ BEncode │ │
└─────────────┘ RPC └──────────────┘ └─────────────┘
│
│ Middleware Hook
▼
┌──────────────┐
│ Clojure REPL │
│ Session │
└──────────────┘当你奔跑时 lein mcp:
- Leiningen使用MCP中间件启动nREPL
- 中间件在端口8787上启动HTTP服务器
- HTTP服务器作为客户端连接回nREPL
- MCP JSON-RPC请求通过HTTP到达
- 请求被转换为nREPL操作
- 结果以JSON-RPC响应的形式返回
发展
建筑
lein install # Install to local Maven repo测试
# In a test project
lein mcp
# In another terminal, test with curl
curl -X POST http://localhost:8787 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {}
}
}'许可证
版权所有©2024克里斯·福特
在Eclipse公共许可证版本1.0下分发。
