oracle-feeds-mcp について
oracle-feeds-mcpは、ChainlinkとPythのオンチェーン価格を取得する読み取り専用のMCPサーバーです。履歴検索に対応し、タイムスタンプとデータ経過時間に基づく古さのフラグを返します。APIキーなしで公開エンドポイントを利用します。
主な機能
- 01ChainlinkとPythの最新価格取得
- 02過去のChainlinkラウンド検索
- 03過去のPyth価格検索
- 04Pythのライブフィードカタログ検索
- 05価格のタイムスタンプ、経過時間、古さのフラグ
- 06APIキー不要の公開エンドポイント
活用シーン
- 01対応資産の現在のオラクル価格を確認
- 02指定したChainlinkラウンドの価格を取得
- 03指定時点のPyth価格を検索
- 04Pythカタログを検索してフィードを特定
MCP 対応
標準的なstdio MCPサーバーを通じて、ChainlinkとPythの読み取り専用価格データツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
oracle-feeds-mcp
オンチェーンの価格オラクルデータを提供するMCPサーバーです。単一のプロバイダーではなく、Chainlink と Pyth Network の2つの独立したプロバイダーを対象としています。
このプロジェクトを作成した理由
この分野で唯一これまでに公開されていた MCP サーバーであるkukapay/chainlink-feeds-mcpは、Chainlink のみに対応し、Infura API キーが必須です。また、queryPriceByRoundツールはプレースホルダーであり、指定したラウンドに関係なく、何も通知せずに再びlatestRoundData()を呼び出します。さらに、テストもありません。このプロジェクトは同じ範囲に対応し、機能を追加したうえで、そうした問題を解決します。
chainlink-feeds-mcp | oracle-feeds-mcp | |
|---|---|---|
| プロバイダー | Chainlink のみ | Chainlink と Pyth |
| RPC | 独自の Infura キーが必要 | デフォルトで無料のパブリック RPC を使用。キーは不要 |
| 過去のラウンドの検索 | プレースホルダー — 最新のラウンドを再取得 | 実際にgetRoundData(roundId)を呼び出す |
| データの古さ | 表示されない | フィード独自のオンチェーン時刻/公開時刻に基づき、すべての結果にstale: true/falseを設定 |
| フィードの検出 | 静的リストのみ | Chainlink の静的レジストリと Pyth の全カタログのライブ検索(searchPythFeeds) |
| テスト | なし | データの古さの計算、フィード検索、両プロバイダーを対象とした21件のテスト(ネットワーク呼び出しはモック) |
これはデータアクセスツールです。タイムスタンプと経過時間に基づくデータの古さフラグを付けて、オラクルが報告した価格をそのまま返します。プロバイダー間での検証、照合、優先順位付けは行いません。「どのソースがより信頼できるか」という判断が必要な場合、それは別の、より難しい問題であり、このプロジェクトでは意図的に取り扱いません。
下流での利用に関する注意: オラクルの価格データは、自律型のオンチェーン取引エージェントやリバランスエージェントでよく利用されます。このサーバーは読み取り専用であり、それ自体が資金を動かすことはありません。ただし、出力を取引を実行するエージェントに接続する場合は、そのエージェントに必要なリスク管理をご自身の責任で行ってください。このツールは、取引量、スリッページ、実行の安全性について関与しません。
ツール
getChainlinkPrice({ chain, pair })— データの古さフラグ付きで、Chainlink の最新価格を取得します。getChainlinkRoundPrice({ chain, pair, roundId })— Chainlink の特定の過去ラウンドを取得します。listChainlinkFeeds()— Chainlink の厳選されたレジストリにある、すべてのチェーンとペアを一覧表示します。listSupportedChains()— チェーンの一覧のみを表示します。getPythPrice({ symbol })— シンボル(SOL/USD)またはフィード ID で、Pyth の最新価格を取得します。getPythHistoricalPrice({ symbol, unixTimestamp })— 指定した時点の Pyth 価格を取得します。searchPythFeeds({ query })— Pyth のライブカタログを検索します(数百件のフィードに対応し、固定リストは使用しません)。
すべての価格結果には、updatedAt、ageSeconds、staleが含まれます(データの古さはデフォルトで1時間を超えると判定されます)。
対応範囲
Chainlink フィードは、5つの EVM チェーン(Ethereum、Base、Arbitrum、Polygon、Optimism)にわたる厳選されたレジストリです(網羅的なミラーではありません)。各チェーンでは、主要なペア(BTC、ETH、USDC、USDT、DAI、LINK、SOL、およびチェーン固有の一部の資産)に対応しています。src/feeds/chainlink.tsをご覧ください。これは単純なデータファイルなので、チェーンやペアを簡単に追加できます。
Pyth は、Pyth のライブカタログにあるほぼすべてのフィードに対応します。searchPythFeedsとgetPythPriceは固定リストを同梱するのではなく、Hermes に直接問い合わせるため、新しい Pyth フィードも自動的に利用できるようになります。
インストールと実行
npm install
npm run build
npm start
標準的な stdio MCP サーバーとして実行されます。任意の MCP クライアントからnode dist/index.jsを指定してください。
API キーや環境変数は不要です。Chainlink のデータ取得には無料のパブリック RPC エンドポイント(*.publicnode.com)を使用し、Pyth のデータ取得には公開 Hermes REST API を使用します。
開発
npm test # 21 tests, network calls mocked
npm run typecheck
開示
このリポジトリは、AI エージェント(rileybuilds)が人間の監督のもとで構築・保守しています。アカウントのプロフィールをご覧ください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。