🚀 LODA MCP 服务器
LODA MCP 服务器是 LODA 语言 API 的模型上下文协议(MCP)服务器,它提供了对 LODA 语言和来自在线整数序列百科全书®(OEIS®)的整数序列的无缝访问。
🚀 快速开始
前提条件
- Node.js 版本需 18.0.0 或更高
- npm 版本需 8.0.0 或更高
安装
- 安装依赖项:
npm install
- 构建服务器:
npm run build
- 测试安装:
npm run test-connection
npm start
开发工作流
npm run dev
npm run type-check
npm run clean && npm run build
✨ 主要特性
核心功能
- OEIS 风格的序列集成:以 A 编号格式访问任何序列
- 程序发现:查找和搜索用于序列的 LODA 程序
- 实时执行:运行 LODA 程序并立即查看结果
- 强大的错误处理:全面的验证和错误消息
可用工具
| 工具 |
描述 |
主要用例 |
get_program |
按 ID 获取 LODA 程序的详细信息 |
分析程序实现 |
search_programs |
搜索 LODA 程序 |
按关键字或 ID 查找程序 |
eval_program |
评估 LODA 程序 |
测试和验证程序的正确性 |
submit_program |
提交新的 LODA 程序 |
贡献新的实现 |
get_sequence |
按 ID 获取整数序列的详细信息 |
研究数学序列 |
search_sequences |
搜索整数序列 |
按关键字或 ID 查找序列 |
get_stats |
查看 LODA 项目的汇总统计信息 |
了解项目范围和增长情况 |
get_keywords |
列出所有关键字及其描述 |
探索可用的关键字 |
get_submitters |
列出所有提交者及其提交的程序数量 |
查看主要贡献者 |
💻 使用示例
🔢 探索 OEIS 序列
"Show me details about OEIS sequence 45"
→ 获取斐波那契数列(A000045)的完整元数据
"What is OEIS sequence 1?"
→ 获取 A000001(阶为 n 的群)的项和描述
🔧 使用 LODA 程序
"Find all LODA programs for sequence 45"
→ 显示所有计算斐波那契数的程序,并按长度排序
"Get LODA program 12345"
→ 检索具有代码和元数据的特定程序
⚡ 运行程序
"Run this LODA program and compute 10 terms:
mov $0,1
lpb $1
add $0,$1
sub $1,1
lpe"
→ 执行程序并显示计算出的序列值
⛏️ 挖掘新程序
"Start mining programs for OEIS sequence 142857 with max length 50"
→ 开始挖掘操作并返回操作 ID
"Check status of mining operation 987"
→ 显示当前状态和任何已发现的程序
📊 项目统计
"What are the current LODA project statistics?"
→ 显示序列、程序和贡献者的数量
📚 详细文档
工具架构
所有工具都使用严格的 JSON 架构进行适当的验证。示例架构如下:
get_sequence
{
"id": "A000045"
}
search_sequences
{
"q": "Fibonacci",
"limit": 5
}
get_program
{
"id": "A000045"
}
search_programs
{
"q": "Fibonacci",
"limit": 5
}
eval_program
{
"code": "mov $1,10\npow $1,$0\nmov $0,$1\ndiv $0,9",
"t": 10
}
submit_program
{
"id": "A000045",
"code": "mov $2,1\nlpb $0\n sub $0,2\n add $2,$1\n add $1,$2\nlpe\nmul $0,$2\nadd $0,$1"
}
get_stats
{}
get_keywords
{}
get_submitters
{}
响应格式
所有响应包括:
- 丰富的格式:带有表情符号和可视化结构
- 清晰的状态指示
- 上下文信息和有用的提示
- 适当的错误消息和可操作的指导
🔧 技术细节
核心组件
LODAMCPServer
├── LODAApiClient # LODA API 的 HTTP 客户端
├── Tool Handlers # 各个工具的实现
├── Validation Layer # 输入验证和清理
└── Error Management # 全面的错误处理
错误处理策略
- 输入验证:严格的参数检查和清晰的错误消息
- 网络弹性:重试逻辑和连接错误处理
- API 错误转换:将 HTTP 错误转换为有意义的用户消息
- 优雅降级:尽可能提供部分结果
🔍 故障排除
常见问题
| 问题 |
解决方案 |
| 服务器无法启动 |
检查 Node.js 版本(18+),验证构建是否完成 |
| API 连接失败 |
使用 npm run test-connection 进行测试,检查防火墙 |
| 未找到工具 |
验证工具名称的拼写,检查 MCP 客户端连接 |
| 参数无效 |
检查参数类型是否与架构完全匹配 |
| 挖掘超时 |
使用更短的最大运行时间,检查序列是否存在 |
调试模式
DEBUG=* npm start
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_stats_summary","arguments":{}},"id":1}' | npm start
健康检查
npm run test-connection
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | npm start
🤝 贡献代码
开发设置
- 分叉仓库
- 创建功能分支:
git checkout -b feature/amazing-feature
- 使用适当的 TypeScript 类型进行更改
- 彻底测试:
npm run type-check
- 提交拉取请求
代码标准
- TypeScript:使用严格模式并实现完整的类型覆盖
- 错误处理:始终使用 McpError 处理面向用户的错误
- 验证:在进行 API 调用之前验证所有输入
- 文档:为公共方法提供清晰的 JSDoc 注释
- 格式化:保持一致的表情符号使用和输出结构
🔗 资源
📄 API 端点
基于官方 OpenAPI v2 规范:
| 端点 |
方法 |
描述 |
/sequences/{id} |
GET |
获取整数序列的详细信息 |
/sequences/search |
GET |
搜索整数序列 |
/programs/{id} |
GET |
获取 LODA 程序的详细信息 |
/programs/search |
GET |
搜索 LODA 程序 |
/programs/eval |
POST |
评估 LODA 程序 |
/programs/{id}/submit |
POST |
提交新的 LODA 程序 |
/stats/summary |
GET |
获取统计摘要 |
/stats/submitters |
GET |
列出所有提交者 |
📝 许可证
本项目采用 Apache 2.0 许可证。
🙏 致谢
- LODA 项目团队 - 创造了这个出色的数学工具
- OEIS 贡献者 - 维护了世界上最重要的序列数据库
- MCP 社区 - 提供了优秀的协议和 SDK
- 数学社区 - 持续进行序列发现和研究
为数学发现和算法研究用心打造 ❤️