README
🚀 Kleros MCP 服务器
Kleros MCP 服务器是一个模型上下文协议(MCP)服务器,可从多个区块链网络中检索全面的 Kleros 法庭争议数据,包括元证据和证据提交信息。
✨ 主要特性
- 🔗 多链支持:支持以太坊主网和 Gnosis 链。
- 📊 全面的数据:提供元证据、证据提交信息和 IPFS 内容。
- 🌐 支持远程托管:具备可流式传输的 HTTP 传输和会话管理功能。
- 🔒 安全可靠:具备 DNS 重绑定保护和适当的 CORS 配置。
- ⚡ 快速高效:可并行检索 IPFS 内容,并能处理错误。
- 📱 与 Claude 桌面版兼容:可直接集成 URL。
📦 支持的网络
- 以太坊主网(链 ID:1)
- Gnosis 链(链 ID:100)
📦 数据源
- 元证据 API:提供 Kleros 争议元数据。
- 以太坊子图:提供以太坊上的证据提交信息。
- Gnosis 子图:提供 Gnosis 链上的证据提交信息。
- IPFS 网关:通过 Kleros CDN 获取证据内容。
📚 Claude 桌面版集成
简易设置(推荐)
- 打开 Claude 桌面版设置
- 点击侧边栏中的“设置”。
- 进入连接器设置
- 导航至“设置”→“连接器”。
- 添加自定义连接器
- 点击“添加自定义连接器”。
- 输入名称:
Kleros Court。 - 粘贴 URL:
https://kleros-mcp-server-new.fly.dev/mcp。 - 点击“添加”。

- 开始使用
- Kleros Court 工具现在将在 Claude 桌面版中可用。
- 尝试输入:“Get dispute data for dispute ID 481 on Gnosis Chain”。
替代配置文件方法
在 claude_desktop_config.json 中添加以下内容:
{
"mcpServers": {
"kleros": {
"url": "https://kleros-mcp-server-new.fly.dev/mcp"
}
}
}
💻 使用示例
基础用法
get_dispute_data
此方法用于从 Kleros 检索全面的争议数据,包括元证据和证据提交信息。
参数:
disputeId(字符串):要检索数据的争议 ID。chainId(数字):链 ID(以太坊为 1,Gnosis 链为 100)。
示例用法:
- “Get dispute data for dispute ID 123 on Ethereum”
- “Show me details for dispute 481 on Gnosis Chain”
- “Retrieve evidence for dispute 50 on chain 100”
示例响应:
# Kleros 争议数据
**争议 ID**:481
**链**:Gnosis 链 (100)
## 元证据
**标题**:Web3 安全审计员注册表
**描述**:一个经过筛选的已验证安全审计员注册表...
## 证据提交 (3)
### 证据 1
**标题**:挑战理由
**描述**:Pokémon 不是 Web3 审计员,拒绝该提交。
**类型**:text/plain
🚀 快速开始
前提条件
- Node.js 18.x 或更高版本
- npm 或 yarn
本地开发
- 克隆项目并安装依赖:
git clone <your-repo>
cd kleros-mcp-server
npm install
- 构建项目:
npm run build
- 启动服务器:
npm start
- 健康检查:
curl http://localhost:8080/health
开发模式
若要在开发过程中实现自动重启,可使用以下命令:
npm run dev
🚀 部署
Fly.io 部署
- 安装 Fly CLI:
curl -L https://fly.io/install.sh | sh
- 登录 Fly:
fly auth login
- 创建应用(如有需要,可在 fly.toml 中更新应用名称):
fly apps create kleros-mcp-server-new
- 构建并部署:
npm run build
fly deploy
- 检查部署情况:
fly status
fly logs
你的 MCP 服务器将可通过以下 URL 访问:https://kleros-mcp-server-new.fly.dev/mcp
环境变量
设置所需的环境变量:
fly secrets set ALLOWED_HOSTS=your-domain.com
📚 详细文档
API 端点
健康检查
GET /health
返回服务器状态和时间戳。
MCP 协议
POST /mcp
GET /mcp(用于 SSE 通知)
DELETE /mcp(用于会话终止)
主要的 MCP 协议端点,具备会话管理功能。
架构
kleros-mcp-server/
├── src/
│ ├── index.ts # 具备可流式传输 HTTP 传输的 Express 服务器
│ ├── server.ts # MCP 服务器设置和工具注册
│ ├── services/
│ │ ├── disputeService.ts # 主要的争议数据协调
│ │ ├── metaEvidenceService.ts # 元证据 API 集成
│ │ ├── subgraphService.ts # 子图查询
│ │ └── ipfsService.ts # IPFS 内容检索
│ ├── types/
│ │ └── index.ts # TypeScript 类型定义
│ └── utils/
│ └── constants.ts # API 端点和配置
├── Dockerfile # 容器配置
├── fly.toml # Fly.io 部署配置
└── package.json
错误处理
服务器具备全面的错误处理功能:
- 网络超时:外部 API 设置 10 - 15 秒的超时时间。
- IPFS 故障:可优雅处理无法访问的内容。
- 子图错误:查询失败时提供详细的错误报告。
- 输入验证:对争议 ID 和链 ID 进行适当的验证。
开发
添加新链
- 在
src/types/index.ts中的SUPPORTED_CHAIN_IDS中添加链 ID。 - 在
src/utils/constants.ts中的API_ENDPOINTS.SUBGRAPHS中添加子图 URL。 - 在
src/utils/constants.ts中的NETWORK_NAMES中添加网络名称。
测试
测试争议数据检索:
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_dispute_data",
"arguments": {
"disputeId": "123",
"chainId": 1
}
},
"id": 1
}'
MCP 检查器合规性
此服务器通过了所有 MCP 检查器的检查:
- ✅ 正确的协议实现
- ✅ 正确的消息格式
- ✅ 标准的错误代码
- ✅ 会话管理
- ✅ 资源清理
安全
- 启用 DNS 重绑定保护。
- 配置适当的 CORS。
- 使用非根容器用户。
- 进行输入验证和清理。
- 优雅处理错误,避免信息泄露。
故障排除
常见问题
- 404 子图错误:检查子图 URL 是否为最新版本。
- IPFS 超时:证据内容可能暂时不可用。
- 无效的争议 ID:确保争议在指定链上存在。
获取帮助
- 在仓库中创建问题。
- 查看日志:
fly logs(针对已部署版本)。 - 验证健康状态:
curl https://kleros-mcp-server-new.fly.dev/health
📄 许可证
本项目采用 MIT 许可证。
🤝 贡献
- 分叉仓库。
- 创建功能分支。
- 提交更改。
- 推送到分支。
- 创建拉取请求。
🛠️ 支持
如有问题或疑问:
- 在仓库中创建问题。
- 查看日志:
fly logs(针对已部署版本)。 - 验证健康状态:
curl https://kleros-mcp-server-new.fly.dev/health
Scan to join WeChat group