🚀 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 代理、自治系统和其他应用程序访问,使智能代理能够根据实时市场数据做出明智的决策。
外部资源
贡献
欢迎贡献代码!请随时提交拉取请求。
支持
若遇到以下相关问题: