🚀 Pyth Network MCP Server
Pyth Network MCP Serverは、Hermes APIを介してPyth Networkの分散型オラクル価格フィードにリアルタイムでアクセスできるMCPサーバーです。AIエージェントや自律システムへのシームレスな統合に最適化されています。

著者: @itsomsarraf
🚀 クイックスタート
このセクションでは、Pyth Network MCP Serverの基本的な使い方を説明します。まずは、必要な前提条件を確認し、サーバーのインストールと実行を行いましょう。
✨ 主な機能
🔧 ツール (5種類利用可能)
- 価格フィードの検索: 107以上のブロックチェーンにまたがる1,930以上の価格フィードを、シンボルまたは資産タイプで検索およびフィルタリングできます。
- 最新価格の取得: 特定の価格フィードIDに対するリアルタイムの価格更新を、解析済みのデータで取得できます(バイナリの煩雑さはありません)。
- 過去の価格データ: バックテストや分析のために、特定のタイムスタンプでの価格更新を照会できます。
- パブリッシャーのステーク上限: Pythネットワークから最新のパブリッシャーのステーク上限データにアクセスできます。
- 時間加重平均価格 (TWAP): カスタムの時間ウィンドウ(1 - 600秒)でTWAPを計算でき、より安定した価格を得ることができます。
💬 プロンプト (4種類利用可能)
- 価格フィードの分析: 現在の価格、TWAP、およびボラティリティ指標を含む、任意の資産の詳細な分析を取得できます。
- 価格の比較: 複数の資産を並べて比較し、価格、TWAP、およびボラティリティ分析を行うことができます。
- 市場の概要: 任意の資産タイプ(暗号通貨、株式、外国為替、金属、金利)の包括的な市場レポートを取得できます。
- 価格アラートの設定: 価格監視システムの設定に関するステップバイステップのガイダンスを得ることができます。
📚 リソース (3種類利用可能)
- Pythネットワークの情報: ネットワーク、データプロバイダー、および機能の概要を提供します。
- 人気の価格フィード: 主要な資産について、一般的に使用される価格フィードIDのクイックリファレンスを提供します。
- APIドキュメントの参照: Hermes APIエンドポイントのクイックリファレンスガイドを提供します。
🌐 汎用機能
- 汎用の価格フィードID: チェーン固有のオラクルとは異なり、Pythはすべてのサポートされるブロックチェーンで機能する汎用の価格フィードIDを使用します。
- 完全なMCP準拠: MCP仕様に従って、ツール、プロンプト、およびリソースを実装しています。
📦 インストール
リポジトリのクローン
git clone https://github.com/itsomsarraf/pyth-network-mcp.git
cd pyth-network-mcp
依存関係のインストール
uvを使用する場合(推奨):
uv sync
pipを使用する場合:
pip install mcp httpx
このプロジェクトでは以下が必要です:
mcp>=1.0.0 - 公式のMCP SDK
httpx>=0.27.0 - Pyth Hermes APIへのHTTPリクエストに使用
MCPクライアントの設定
Claude DesktopなどのMCPクライアントでこのサーバーを使用するには、MCP設定構成ファイルに以下を追加します。
Claude Desktopの場合 (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"pyth-network": {
"command": "python3",
"args": ["pyth_mcp_server.py"],
"cwd": "/absolute/path/to/pyth-network-mcp"
}
}
}
Cursor/Windsurfの場合 (.cursorrules またはMCP設定):
{
"mcpServers": {
"pyth-network": {
"command": "python3",
"args": ["pyth_mcp_server.py"],
"cwd": "/absolute/path/to/pyth-network-mcp"
}
}
}
uvを使用する場合:
{
"mcpServers": {
"pyth-network": {
"command": "uv",
"args": ["run", "pyth_mcp_server.py"],
"cwd": "/absolute/path/to/pyth-network-mcp"
}
}
}
サーバーの実行
サーバーは、MCP通信に標準入出力(stdio)トランスポートを使用します。
python3 pyth_mcp_server.py
同梱のクライアントでサーバーをテストするには:
python3 pyth_mcp_client.py
💻 使用例
基本的な使用法
サーバーは、MCPプロトコルを介して5つのツール、4つのプロンプト、および3つのリソースを公開しており、Claude Desktop(自然言語クエリ用)、Cursor/Windsurf、またはプログラムからアクセスできます。
MCP機能の概要
| 機能 |
数 |
説明 |
| ツール |
5 |
価格データを取得するための直接的なAPIインタラクション |
| プロンプト |
4 |
一般的なタスクのための事前構成された分析テンプレート |
| リソース |
3 |
静的な参照情報とドキュメント |
以下は、各機能の詳細な説明と例です。
ツール: get_price_feeds
説明: Pythネットワークからシンボルまたは資産タイプで価格フィードを検索およびフィルタリングします。価格を照会する前に利用可能な価格フィードを見つけるのに役立ちます。
パラメータ:
query (文字列、オプション): シンボルにこの文字列を含む価格フィードに結果をフィルタリングします(大文字小文字を区別しません)。例: "bitcoin", "eth", "gold"
asset_type (文字列、オプション): 資産タイプでフィルタリングします(大文字小文字を区別しません)。オプション: crypto, equity, fx, metal, rates
戻り値: IDと属性を含む価格フィードメタデータのリスト。
自然言語の例(Claude Desktop):
ユーザー: "利用可能なビットコインの価格フィードは何ですか?"
アシスタント: "いくつかのビットコインの価格フィードを見つけました:
- BTC/USD (ID: e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43)
- BTC/ETH
- BTC/EUR
これらのフィードは、すべての107以上のサポートされるブロックチェーンで利用可能です。"
JSON応答の例:
{
"price_feeds": [
{
"id": "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
"attributes": {
"symbol": "Crypto.BTC/USD",
"asset_type": "Crypto",
"base": "BTC",
"quote_currency": "USD",
"description": "Bitcoin vs US Dollar"
}
}
]
}
ツール: get_latest_price_updates
説明: 特定の価格フィードIDに対する最新の価格更新を取得します。解析済みの、読みやすい価格データを返します(バイナリの煩雑さはありません)。
パラメータ:
ids (文字列のリスト、必須): 更新を取得する価格フィードIDのリスト
encoding (文字列、オプション): バイナリデータのエンコーディングタイプ。オプション: hex, base64。デフォルト: hex
parsed (ブール値、オプション): trueの場合、解析済みの価格データを含めます。デフォルト: true
ignore_invalid_price_ids (ブール値、オプション): trueの場合、無効な価格IDは無視されます。デフォルト: false
include_binary (ブール値、オプション): trueの場合、バイナリデータを含めます。デフォルト: false(クリーンな出力)
戻り値: 解析済みの、人間が読める形式の価格更新。
自然言語の例(Claude Desktop):
ユーザー: "現在のビットコインの米ドル建て価格は何ですか?"
アシスタント: "現在のBTC/USD価格は113,395.22ドルです(2秒前のデータ)。価格の信頼区間は±234.77ドルです。"
JSON応答の例:
{
"parsed": [
{
"id": "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
"price": {
"price": "11339522000000",
"conf": "23477142598",
"expo": -8,
"publish_time": 1760133288
},
"ema_price": {
"price": "11620589900000",
"conf": "7599704800",
"expo": -8,
"publish_time": 1760133288
},
"metadata": {
"slot": 247985552,
"proof_available_time": 1760133290,
"prev_publish_time": 1760133288
}
}
]
}
注意: price 値は 10^expo を掛けることで実際の価格を得ることができます。例: 11339522000000 × 10^-8 = 113,395.22ドル
ツール: get_price_updates_at_time
説明: 特定のタイムスタンプ以降の過去の価格更新を取得します。バックテスト戦略や過去の価格動向の分析に役立ちます。
パラメータ:
publish_time (整数、必須): 秒単位のUnixタイムスタンプ
ids (文字列のリスト、必須): 更新を取得する価格フィードIDのリスト
encoding (文字列、オプション): バイナリデータのエンコーディングタイプ。オプション: hex, base64。デフォルト: hex
parsed (ブール値、オプション): trueの場合、解析済みの価格データを含めます。デフォルト: true
ignore_invalid_price_ids (ブール値、オプション): trueの場合、無効な価格IDは無視されます。デフォルト: false
include_binary (ブール値、オプション): trueの場合、バイナリデータを含めます。デフォルト: false
戻り値: 指定されたタイムスタンプ以降の価格更新。
自然言語の例(Claude Desktop):
ユーザー: "タイムスタンプ1760132736でのBTC/USD価格は何でしたか?"
アシスタント: "タイムスタンプ1760132736でのBTC/USD価格は112,103.54ドルで、信頼区間は±869.53ドルでした。"
JSON応答の例:
{
"parsed": [
{
"id": "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
"price": {
"price": "11210354370540",
"conf": "86953286118",
"expo": -8,
"publish_time": 1760132736
},
"ema_price": {
"price": "11629198600000",
"conf": "6729670300",
"expo": -8,
"publish_time": 1760132736
},
"metadata": {
"slot": 247984264,
"proof_available_time": 1760132737,
"prev_publish_time": 1760132735
}
}
]
}
ツール: get_publisher_stake_caps
説明: 最新のパブリッシャーのステーク上限更新データを取得します。これは、Pythネットワークにおけるパブリッシャーのステーキング制限に関する情報を提供し、ネットワークのセキュリティとデータ品質を理解するのに重要です。
パラメータ:
encoding (文字列、オプション): バイナリデータのエンコーディングタイプ。オプション: hex, base64。デフォルト: hex
parsed (ブール値、オプション): trueの場合、解析済みの更新データを含めます。デフォルト: true
include_binary (ブール値、オプション): trueの場合、バイナリデータを含めます。デフォルト: false
戻り値: 解析済みの、読みやすい形式の最新のパブリッシャーのステーク上限更新データ。
自然言語の例(Claude Desktop):
ユーザー: "Pythネットワークで現在のパブリッシャーのステーク上限は何ですか?"
アシスタント: "最新のパブリッシャーのステーク上限データは、ネットワーク内の各パブリッシャーのステーキング制限を示しています。これには、すべての125以上のデータプロバイダーの制限が含まれ、最高の制限は87.4兆単位です。"
JSON応答の例:
{
"parsed": [
{
"publisher_stake_caps": [
{
"publisher": "7YQg8Tz9KHKsg7yHiAFRBsDkLoKvZbMXt7VbW44F7QM",
"cap": 87415862629839
},
{
"publisher": "8Mg3RA4aNRzw68pZKjB3rsBJ7gB3UDcFwKBbiXLnhHX",
"cap": 54545454545
}
]
}
]
}
ツール: get_twap_latest
説明: カスタムの時間ウィンドウで最新の時間加重平均価格(TWAP)を取得します。TWAPは、時間をかけて価格を平均することでより安定した価格を提供し、短期的なボラティリティの影響を軽減するのに役立ちます。
パラメータ:
window_seconds (整数、必須): 秒単位の時間ウィンドウ(1 - 600)。例: 60 = 1分のTWAP、300 = 5分のTWAP
ids (文字列のリスト、必須): TWAPを取得する価格フィードIDのリスト
encoding (文字列、オプション): バイナリデータのエンコーディングタイプ。オプション: hex, base64。デフォルト: hex
parsed (ブール値、オプション): trueの場合、解析済みのフィールドに計算されたTWAPを含めます。デフォルト: true
ignore_invalid_price_ids (ブール値、オプション): trueの場合、無効な価格IDは無視されます。デフォルト: false
include_binary (ブール値、オプション): trueの場合、バイナリデータを含めます。デフォルト: false
戻り値: 指定されたウィンドウの時間加重平均価格。
自然言語の例(Claude Desktop):
ユーザー: "BTC/USDの5分間のTWAPは何ですか?"
アシスタント: "BTC/USDの5分間のTWAPは113,318.45ドルで、現在のスポット価格113,395.22ドルよりわずかに低いです。これは、最近の価格上昇傾向を示しています。"
JSON応答の例:
{
"parsed": [
{
"id": "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
"start_timestamp": 1760132736,
"end_timestamp": 1760133036,
"twap": {
"price": "11331845299185",
"conf": "48677830724",
"expo": -8,
"publish_time": 1760133036
},
"down_slots_ratio": "0"
}
]
}
プロンプト
プロンプトは、AIアシスタントが複雑な多段階タスクを実行するための事前構成されたテンプレートです。
プロンプト: analyze_price_feed
説明: 現在の価格、TWAP、信頼区間、およびボラティリティ指標を含む、任意の資産の詳細な分析を取得します。
引数:
asset_symbol (必須): 分析する資産のシンボル(例: BTC, ETH, SOL)
Claude Desktopでの使用例:
ユーザー: "ETHに対してanalyze_price_feedプロンプトを使用してください"
Claude: 次の多段階分析を実行します:
- ETHの価格フィードを検索します。
- 最新の価格を取得します。
- 5分間のTWAPを計算します。
- トレンドを含む包括的な分析を提供します。
プロンプト: compare_prices
説明: 複数の資産を並べて比較し、価格、TWAP、およびボラティリティ分析を行います。
引数:
symbols (必須): 資産シンボルのカンマ区切りのリスト(例: BTC,ETH,SOL)
使用例:
"symbols BTC,ETH,SOLでcompare_pricesプロンプトを使用してください"
相対的なパフォーマンスとボラティリティを示す比較表を作成します。
プロンプト: market_overview
説明: 特定の資産タイプに対する包括的な市場レポートを生成します。
引数:
asset_type (必須): crypto, equity, fx, metal, またはrates
使用例:
"crypto資産に対してmarket_overviewプロンプトを使用してください"
すべての暗号通貨フィードの価格とトレンドの概要を提供します。
プロンプト: price_alert_setup
説明: 自動価格監視システムの設定に関するステップバイステップの指示を取得します。
引数:
asset_symbol (必須): 監視する資産のシンボル
使用例:
"SOLに対してprice_alert_setupプロンプトを使用してください"
フィードID、現在の価格、ポーリングの推奨事項、およびコード例を提供します。
リソース
リソースは、Pythネットワークに関する静的な参照情報を提供します。
リソース: pyth://network/info
内容: Pythネットワークに関する一般的な情報
- ネットワークの概要
- 125以上のデータプロバイダー
- カバレッジ統計(1,930以上のフィード、107以上のチェーン)
- 主要な機能と能力
Claude Desktopでのアクセス方法: "Pythネットワークの情報リソースを表示してください"
リソース: pyth://feeds/popular
内容: 人気の価格フィードIDのJSON参照
- トップの暗号通貨ペア(BTC/USD, ETH/USD, SOL/USDなど)
- 主要な株式(AAPL, TSLA, MSFT)
- 外国為替ペア(EUR/USD, GBP/USD)
- 貴金属(金、銀)
アクセス方法: "人気のPyth価格フィードを表示してください"
リソース: pyth://docs/api
内容: Hermes APIのクイックリファレンス
- すべてのエンドポイントのドキュメント
- クエリパラメータの形式
- 価格形式の説明
- リクエストの例
アクセス方法: "Pyth APIのドキュメントリソースを表示してください"
サーバーのテスト
リポジトリには、公式のMCPプロトコルを使用してすべての5つのツールを使用する方法を示すデモンストレーションクライアント (pyth_mcp_client.py) が含まれています。以下のコマンドで実行します。
python3 pyth_mcp_client.py
価格フィードIDの検索
目的の資産の正しい価格フィードIDを見つけるには:
-
get_price_feeds ツールを使用してシンボルで検索します。
"エーテルの価格フィードを検索してください"
-
または Pyth Network Price Feedsページ にアクセスして、すべての利用可能なフィードを閲覧します。
-
一般的な価格フィードID:
- BTC/USD:
e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43
- ETH/USD:
ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace
- SOL/USD:
ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d
プロジェクト構造
pyth-network-mcp/
├── pyth_tools.py # Pyth Network APIクライアント
├── pyth_mcp_server.py # 公式のMCPサーバー
├── pyth_mcp_client.py # サンプルクライアント
├── pyproject.toml # 依存関係
├── README.md # このファイル
├── STRUCTURE.md # 構造ガイド
├── .gitignore
└── fastmcp-implementation/ # 代替のFastMCP実装
アーキテクチャ
この公式のMCPサーバーは以下を使用しています:
- 公式のMCP SDK: 標準準拠のMCPプロトコル実装
- stdioトランスポート: MCPクライアントとの効率的な通信に使用
- Pyth Hermes API: 価格フィードデータにアクセスするためのPythのREST API (
https://hermes.pyth.network)
- httpx: APIリクエストを行うための非同期HTTPクライアント
サーバーはステートレスで動作し、各リクエストでPythのHermes APIから新しいデータを取得します。バイナリデータはデフォルトで無効になっており、クリーンな人間が読める形式の応答を返します。
このサーバーとFastMCPの使い分け
このリポジトリには、Pyth Network MCPサーバーの2つの実装が含まれています。
公式MCP (このルートディレクトリ) ✅ 推奨
使用する場合:
- ✅ 本番環境のデプロイ - 標準準拠で実績のあるもの
- ✅ Claude Desktopとの統合 - 公式プロトコルのサポート
- ✅ Cursor/Windsurfとの統合 - AI IDEとの最適な互換性
- ✅ より高いパフォーマンス - 効率的なstdioトランスポート
- ✅ 将来性がある - MCP仕様に完全に準拠
- ✅ 安定して信頼性が高い - 適切なエラーハンドリングを備えた公式SDK
トランスポート: stdio (標準入出力)
プロトコル: 公式のMCP SDK
最適な用途: 本番環境、AIエージェント、実際のアプリケーション
FastMCP実装 (サブディレクトリ)
使用する場合:
- 🧪 学習と実験 - 理解しやすい
- 🧪 HTTP/SSEが好ましい場合 - HTTPベースのトランスポートが必要な場合
- 🧪 迅速なプロトタイピング - セットアップとテストが速い
- 🧪 教育目的 - MCPの概念を学ぶのに最適
トランスポート: サーバー送信イベント (SSE) を使用したHTTP
プロトコル: FastMCPフレームワーク
最適な用途: 学習、実験、HTTPベースのワークフロー
簡単な比較
| 機能 |
公式MCP (ルート) |
FastMCP (サブフォルダ) |
| 本番環境での使用準備 |
✅ Yes |
🔶 基本的な |
| パフォーマンス |
✅ 優れている |
🔶 良好 |
| Claude Desktop |
✅ 完全なサポート |
✅ サポートされている |
| トランスポート |
stdio |
HTTP/SSE |
| 学習の容易さ |
🔶 中程度 |
✅ 容易 |
| プロトコル準拠 |
✅ 公式仕様 |
🔶 フレームワークベース |
| 推奨用途 |
本番環境での使用 |
学習/テスト |
📝 注意: 両方の実装は、同じ5つのツールを提供し、同じPythネットワークデータにアクセスできます。違いは、基礎となるトランスポートとプロトコルの実装にあります。
FastMCPのドキュメントについては fastmcp-implementation/README.md を参照してください。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。
概要
Pyth Networkは、107以上のブロックチェーン上のスマートコントラクトにリアルタイムの市場データを提供する分散型オラクルプロトコルです。125以上の第一級パブリッシャー(主要な取引所、マーケットメーカー、およびトレーディングファームを含む)からのデータを集約することで、Pythはさまざまな資産クラスに対して信頼性が高く低遅延の価格フィードを提供します。
このMCPサーバーは、Model Context Protocolを介して、AIエージェント、自律システム、およびその他のアプリケーションがPythの広範な価格フィードネットワークに簡単にアクセスできるようにし、インテリジェントエージェントがリアルタイムの市場データに基づいて情報に基づいた決定を行えるようにします。
外部リソース
コントリビューション
コントリビューションは大歓迎です!プルリクエストを送信してください。
サポート
以下に関する問題の場合: