🚀 LODA MCP Server
LODA MCP Serverは、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クライアントの接続を確認 |
| 無効なパラメータ |
パラメータの型がスキーマと正確に一致することを確認 |
| 採掘がタイムアウトする |
より短いmax_runtimeを使用、数列が存在することを確認 |
デバッグモード
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を提供してくれた皆さん
- 数学コミュニティ - 継続的な数列の発見と研究を行ってくれた皆さん
数学の発見とアルゴリズムの研究のために❤️ で作られました