README
🚀 Modex 介绍
Modex 是一个采用 Clojure 实现的 MCP(模型上下文协议)客户端和服务器,基本符合 2024 - 11 - 05 MCP 规范。消息采用 JSON - RPC 2.0 的序列化格式。
✨ 主要特性
-
通信协议:支持两种传输类型:
- [x] 标准输入输出(stdio/stdout)
- [ ] Server - Sent Events (SSE)
-
主要组件:
- MCP 客户端:借助标准输入输出与 MCP 服务器进行交互。
- MCP 服务器:实现 AServer 协议,支持工具、资源和提示。
🚀 快速开始
构建 Modex
lein project
运行 MCP 服务器
clojure -m modex.mcp.server
配置 Claude Desktop
打开 claude_desktop_config.json,添加以下内容:
{
"mcpServers": {
"modex": {
"command": "java",
"args": ["-jar", "/Users/your-username/code/modex/target/modex-mcp-0.2.2.jar"]
}
},
"globalShortcut": ""
}
重启 Claude Desktop
现在可以使用 run foo 或 what does foo say? 来调用工具。
💻 使用示例
基础用法
(defmodex :foo
(defmethod handle-tool-call :default
[tool-id args]
{:result "Hello, AI!"}))
高级用法
当调用 run foo 或 what does foo say? 时,Claude Desktop 会发送以下 JSON - RPC 请求:
{
"id": 1,
"method": "tool/default",
"params": {
"toolId": ":foo"
}
}
服务器返回响应:
{
"id": 1,
"result": "Hello, AI!"
}
📚 详细文档
核心组件
-
Modex 服务器
- 实现 AServer 协议
- 支持工具、资源和提示
-
MCP 客户端(如 Claude Desktop)
- 使用标准输入输出与 MCP 服务器交互
实现细节
-
工具
- 使用
defmodex定义工具 - 处理方法使用
handle-tool-call
- 使用
-
消息格式
- 请求:
{:keys [id method ?params]} - 响应:
{:keys [id result ?error]} - 通知:
{:keys [method ?params]}
- 请求:
项目状态
- [x] 测试通过
- [x] 易用性(AServer/A Client 协议)
- [x] 工具支持
- [ ] 资源支持
- [ ] 提示支持
- [进行中] SSE 支持
- [进行中] 流式 HTTP 支持(2025 - 03 - 26 MCP 规范)
开发背景
现有库 mcp - clj 使用 SSE,因此需要 mcp - proxy 来代理 SSE <=> stdio。Modex 旨在简化这一过程。
常见问题
- 如何在连接的 MCP 客户端(如 Claude Desktop)上修改服务器? 目前无法直接修改,但计划添加 nREPL 支持,允许在不停止服务的情况下实时评估代码变化。由于限制,目前需要重新构建 uberjar 并重启 Claude Desktop。
📄 许可证
- 非商业用途免费:根据 GPLv3 使用、修改和分发,只需保持开源。
- 商业用途:希望私下使用修改的用户可以一次性支付 $20 购买永久商业许可。这涵盖了开发者为公开开发所使用的 AI 计算机代币费用。
该工具根据 GNU General Public License v3.0 (GPLv3) 分发。您有权自由使用、修改和分发,但需遵守许可证条款。
作者
- Alex Petrov - 初始版本
- Andrey Vasilyev - 当前维护者
感谢您的关注!
微信扫一扫