🚀 Pyth Network MCP Server
Pyth Network MCP Server 是一個 MCP 服務器,它通過 Hermes API 提供對 Pyth Network 去中心化預言機價格饋送的即時訪問。該服務器經過優化,可無縫集成到 AI 代理和自治系統中。

作者: @itsomsarraf
🚀 快速開始
Pyth Network MCP Server 為 AI 代理和自治系統提供了便捷的方式來訪問 Pyth Network 的價格數據。按照以下步驟,你可以快速搭建並使用該服務器。
✨ 主要特性
🔧 工具(共 5 個)
- 搜索價格饋送:可按符號或資產類型搜索和過濾 1930 多個價格饋送,覆蓋 107 多個區塊鏈。
- 獲取最新價格:獲取特定價格饋送 ID 的即時價格更新,數據已解析(無二進制雜亂信息)。
- 歷史價格數據:查詢特定時間戳的價格更新,用於回測和分析。
- 發佈者質押上限:訪問 Pyth 網絡的最新發布者質押上限數據。
- 時間加權平均價格(TWAP):可自定義時間窗口(1 - 600 秒)計算 TWAP,以獲得更穩定的定價。
💬 提示(共 4 個)
- 分析價格饋送:獲取任何資產的詳細分析,包括當前價格、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(macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上的 %APPDATA%\Claude\claude_desktop_config.json):
{
"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"
}
}
}
💻 使用示例
運行服務器
服務器使用標準輸入/輸出(stdio)進行 MCP 通信:
python3 pyth_mcp_server.py
若要使用附帶的客戶端測試服務器:
python3 pyth_mcp_client.py
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": "比特幣兌美元"
}
}
]
}
工具: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)
示例用法:
"使用 compare_prices 提示,符號為 BTC、ETH、SOL"
創建一個比較表,顯示相對錶現和波動率。
提示:market_overview
描述:為特定資產類型生成綜合市場報告。
參數:
asset_type(必需):crypto、equity、fx、metal 或 rates
示例用法:
"對加密資產使用 market_overview 提示"
提供所有加密饋送的價格和趨勢概述。
提示:price_alert_setup
描述:獲取設置自動價格監控的分步說明。
參數:
asset_symbol(必需):要監控的資產符號
示例用法:
"對 SOL 使用 price_alert_setup 提示"
提供饋送 ID、當前價格、輪詢建議和代碼示例。
資源
資源提供有關 Pyth 網絡的靜態參考信息。
資源:pyth://network/info
內容:Pyth 網絡的一般信息
- 網絡概述
- 125 多個數據提供商
- 覆蓋統計(1930 多個饋送,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 文檔資源"
📚 詳細文檔
測試服務器
倉庫中包含一個演示客戶端 (pyth_mcp_client.py),展示瞭如何使用官方 MCP 協議的所有五個工具。運行以下命令:
python3 pyth_mcp_client.py
查找價格饋送 ID
若要查找所需資產的正確價格饋送 ID,可以:
- 使用
get_price_feeds 工具按符號搜索:"Search for Ethereum price feeds"
- 訪問 Pyth 網絡價格饋送頁面 瀏覽所有可用的饋送。
- 常見價格饋送 ID:
- BTC/USD:
e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43
- ETH/USD:
ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace
- SOL/USD:
ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d
項目結構
pyth-network-mcp/
├── pyth_tools.py # Pyth 網絡 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 網絡 MCP 服務器的 兩種實現:
官方 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(子文件夾) |
| 適用於生產 |
✅ 是 |
🔶 基本可用 |
| 性能 |
✅ 優秀 |
🔶 良好 |
| Claude Desktop 支持 |
✅ 完全支持 |
✅ 支持 |
| 傳輸方式 |
stdio |
HTTP/SSE |
| 學習難度 |
🔶 中等 |
✅ 簡單 |
| 協議合規性 |
✅ 官方規範 |
🔶 基於框架 |
| 推薦用途 |
生產使用 |
學習/測試 |
📝 注意:兩種實現都提供相同的五個工具,並可訪問相同的 Pyth 網絡數據。區別在於底層的傳輸和協議實現。
有關 FastMCP 的文檔,請參閱 fastmcp-implementation/README.md。
🔧 技術細節
Pyth Network 從 125 多個第一方金融機構(包括主要交易所、做市商和交易公司)聚合數據,提供:
- 1930 多個價格饋送,覆蓋 107 多個區塊鏈
- 資產類型:
crypto - 加密貨幣(BTC/USD、ETH/USD、SOL/USD 等)
equity - 傳統股票
fx - 外匯對
metal - 貴金屬(黃金、白銀等)
rates - 利率和利率產品
Pyth 採用 基於拉取的預言機模型,直接從數據提供商向包括以太坊、Solana、Avalanche、BNB Chain、Aptos、Sui、Near 等多個鏈上的智能合約提供高頻價格更新(約每 400 毫秒刷新一次)。
📄 許可證
本項目採用 MIT 許可證。
關於 Pyth Network
Pyth Network 是一個去中心化的預言機協議,它為 107 多個區塊鏈上的智能合約提供即時市場數據。通過聚合來自 125 多個第一方發佈者(包括主要交易所、做市商和交易公司)的數據,Pyth 為各種資產類別提供可靠且低延遲的價格饋送。
這個 MCP 服務器通過模型上下文協議使 Pyth 廣泛的價格饋送網絡易於被 AI 代理、自治系統和其他應用程序訪問,使智能代理能夠根據即時市場數據做出明智的決策。
外部資源
貢獻
歡迎貢獻代碼!請隨時提交拉取請求。
支持
若遇到以下相關問題: