时间-mcp
](https://rust-lang.org)  
一种用于分析的高性能模型上下文协议(MCP)服务器 *时轮* 系列(触发器、交叉、激进梦想家)ROM。
先决条件
此应用程序设计为在NAS(Synology、Unraid)上作为容器运行,并通过以下方式提供外部访问 Cloudflare 隧道 或 尾标 作为安全的反向代理。TLS终止由反向代理处理,而不是由此应用程序处理。
架构概述
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Client │────▶│ Cloudflare/Tails │────▶│ crono-mcp │
│ (Claude AI) │ │ Tunnel │ │ Container │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ NAS Volume │
│ (roms/) │
└─────────────────┘特性
- ROM分析:检查SNES、NDS和交换机ROM元数据
- 系列索引:《时空之轮》、《十字架》和《激进梦想家》数据的详尽爬行
- MCP协议:通过SSE或stdio实现完整的JSON-RPC 2.0
- 优雅地关闭:容器更新的SIGTERM/SIGINT处理
- 健康检查:
/health和/ready容器编排的端点 - 12因素应用程序:基于环境的配置
快速开始
1.克隆和配置
git clone https://github.com/ubermetroid/crono-mcp.git
cd crono-mcp
# Copy environment template
cp .env.example .env
# Edit .env with your settings (see Environment Variables below)2.使用Docker Compose进行部署
# Build and start
docker-compose up -d
# View logs
docker-compose logs -f3.通过Cloudflare隧道连接
# Start crono-mcp in SSE mode
docker-compose up -d
# In another terminal, create tunnel
cloudflared tunnel --url http://localhost:1995
# Use the provided URL in your MCP client环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
MODE | sse | 服务器模式: stdio (本地)或 sse (网络) |
PORT | 1995 | SSE模式的TCP端口 |
RUST_LOG | info | 日志级别: trace, debug, info, warn, error |
CORS_ALLOWED_ORIGINS | http://localhost,http://127.0.0.1 | 允许的CORS源(逗号分隔) |
PUID | 1000 | 容器的用户ID(防止root拥有的文件) |
PGID | 1000 | 集装箱的组ID |
TZ | UTC | 日志时间戳的时区 |
MCP工具
| 工具 | 说明 |
|---|---|
inspect_rom | 从SNES、NDS或Switch ROM返回基本元数据 |
crawl_series_resources | 所有系列数据的详尽索引 |
get_item_info | 从索引数据库中即时查找项目数据 |
API端点(SSE模式)
| 端点 | 方法 | 描述 |
|---|---|---|
/health | GET | 返回 {"status": "ok"} -用于集装箱健康检查 |
/ready | GET | 如果未加载索引,则返回503,如果准备就绪,则返回200 |
/sse | GET | 服务器发送的事件流(保持活动状态) |
/message | POST | JSON-RPC 2.0请求处理程序 |
本地开发
# Build
cargo build --release
# Run tests
cargo test
# Run benchmarks
cargo bench
# Format and lint
cargo fmt
cargo clippy不使用Docker运行
# SSE mode
cargo run -- --mode sse --port 1995
# Stdio mode (default)
cargo run容器安全
- 以非root用户身份运行(
crono:crono,UID/GID 1000) - 删除所有Linux功能(
cap_drop: - ALL) - 只读ROM卷装载
- 资源限制:1个CPU,512MB RAM
- JSON文件日志记录(最多10MB,3个文件)
故障排除
容器健康检查失败
# Check if server is responding
wget -qO- http://localhost:1995/health
# Check server logs
docker-compose logs“找不到索引”错误
跑 crawl_series_resources 首先构建索引:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "crawl_series_resources",
"arguments": {
"ct_path": "roms/chrono_trigger.sfc",
"cc_path": "roms/chrono_cross.bin",
"rd_path": "roms/radical_dreamers.z64"
}
},
"id": 1
}许可证
仅限GPL-3.0-请参阅 许可证 了解详情。
