使用说明
Sphere MCP游戏服务器
用于Unicity游戏平台的MCP(模型上下文协议)服务器。通过Nostr为LLM提供支付门控日通行证的游戏访问权限。
特性
- 日间通行证系统:用户只需支付一次费用即可24小时访问所有游戏
- Nostr集成:通过Nostr协议发送的付款请求
- Unicity区块链:使用名称标签进行身份和支付路由
- 自动标识:服务器在首次运行时创建自己的区块链身份
- HTTP传输:支持传统SSE和现代可流式HTTP
可用游戏
| ID | 名称 | 描述 |
|---|---|---|
unicity-quake |
Unicity Quake | 快节奏多人竞技场射击游戏 |
boxy-run |
Boxy Run | 获得区块链奖励的无尽跑步者 |
unirun |
Unirun | Unicity本地无尽跑者 |
MCP工具
| 工具 | 参数 | 说明 |
|---|---|---|
list_games |
- | 列出所有可用游戏 |
check_access |
unicity_id |
检查访问状态和日通行证有效性 |
get_game |
unicity_id, game |
获取特定游戏的访问权限(必要时启动付款) |
confirm_payment |
unicity_id, game (可选) |
等待付款确认 |
get_wallet_balance |
password |
获取MCP钱包余额(管理员) |
所有需要用户身份的工具 unicity_id 作为一个参数,使API无状态并适用于多用户场景。
HTTP端点
服务器在HTTP(默认端口3001)上运行,具有两种传输协议:
传统SSE(MCP检查员,老客户)
| 端点 | 方法 | 描述 |
|---|---|---|
/sse |
GET | 建立SSE流,返回POST端点 |
/messages?sessionId=xxx |
POST | 发送JSON-RPC消息 |
流式HTTP(现代客户端)
| 端点 | 方法 | 描述 |
|---|---|---|
/mcp |
POST | 发送JSON-RPC请求 |
/mcp |
GET | SSE流用于响应 |
会话ID通过传递 mcp-session-id 头球
健康检查
| 端点 | 方法 | 描述 |
|---|---|---|
/health |
GET | 返回 { status, sseSessions, httpSessions } |
快速开始
1.配置环境
cp .env.example .env
编辑 .env 具有所需值:
# Required
MCP_NAMETAG=gaming-mcp
PAYMENT_COIN_ID=your_coin_id_here
2.使用Docker Compose运行
docker compose up -d
服务器将:
- 生成新的私钥(保存到
./data/identity.json) - 在Unicity区块链上创建一个名字标签
- 发布名称标签的Nost绑定
- 开始监听MCP连接
3.查看日志
docker compose logs -f
测试MCP
选项1:MCP检查员(推荐)
MCP检查器提供了一个与服务器交互的web UI:
# Start the server
npm run build && npm start
# In another terminal, connect inspector to HTTP endpoint
npx @modelcontextprotocol/inspector --url http://localhost:3001/sse
这将打开一个浏览器UI,您可以在其中交互式地调用工具。
选项2:卷曲(健康检查)
curl http://localhost:3001/health
选项3:Claude桌面集成
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"gaming": {
"url": "http://localhost:3001/sse"
}
}
}
工作流示例
-
用户列出可用游戏:
Tool: list_games -
用户使用其Unicity ID请求游戏:
Tool: get_game Args: { "unicity_id": "alice", "game": "unicity-quake" } -
如果没有日票,则要求付款。 用户在其Unicity钱包中收到付款请求。
-
用户确认付款:
Tool: confirm_payment Args: { "unicity_id": "alice" } -
成功付款后,用户将获得游戏URL和24小时访问权限。
配置
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
MCP_NAMETAG |
是 | - | 此MCP服务器的名称标签 |
PAYMENT_COIN_ID |
是 | - | 用于支付的硬币ID |
MCP_PRIVATE_KEY_HEX |
否 | 自动生成 | 私钥(十六进制) |
NOSTR_RELAY_URL |
没有 | wss://nostr-relay.testnet.unicity.network |
诺斯特接力 |
AGGREGATOR_URL |
没有 | https://goggregator-test.unicity.network |
Unicity聚合器 |
AGGREGATOR_API_KEY |
否 | (测试网密钥) | 聚合器API密钥 |
PAYMENT_AMOUNT |
没有 | 1000000000 |
付款金额 |
DAY_PASS_HOURS |
没有 | 24 |
日通持续时间 |
PAYMENT_TIMEOUT_SECONDS |
没有 | 120 |
付款超时 |
DATA_DIR |
没有 | ./data |
数据持久性目录 |
ADMIN_PASSWORD |
否 | 自动生成 | 钱包访问的管理员密码 |
HTTP_PORT |
没有 | 3001 |
HTTP服务器端口 |
数据持久层
服务器将身份和名称标签数据存储在 DATA_DIR:
identity.json-私钥(请妥善保管!)nametag-{name}.json-铸造名牌代币
将此目录作为卷装载,以便在容器重新启动时保持不变。
发展
# Install dependencies
npm install
# Build
npm run build
# Run locally
npm start
# Watch mode
npm run dev
建筑
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ LLM Client │────▶│ MCP Server │────▶│ Nostr Relay │
│ (Claude, etc.) │ │ (HTTP transport)│ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Unicity │ │ User Wallet │
│ Aggregator │ │ (Sphere app) │
└─────────────────┘ └─────────────────┘
许可证
麻省理工学院