🚀 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
- 數學社區 - 持續進行序列發現和研究
為數學發現和算法研究用心打造 ❤️