Pyth Network MCP 服务器
一个MCP服务器,通过Hermes API提供对Pyth Network去中心化预言机价格数据流的实时访问,优化了与AI代理和自主系统的无缝集成。
](https://lobehub.com/mcp/itsomsarraf-pyth-network-mcp)   
作者: @itsomsarraf(这个用户名直接翻译仍为“@itsomsarraf”,因为用户名通常是特定的标识符,不直接翻译其含义)
目录
- 工具 - 获取价格数据 - 获取最新价格更新 - 在特定时间获取价格更新 - 获取发布者权益上限 - 获取最新TWAP(时间加权平均价格) - 提示 - 资源
特点/特性
🔧 工具(5个可用)
- 搜索价格数据源在107多个区块链上,通过符号或资产类型搜索并筛选1,930多个价格数据源
- 获取最新价格获取特定价格数据源ID的实时价格更新,并附带解析后的数据(无二进制杂项)
- 历史价格数据查询特定时间戳的价格更新,用于回测和分析
- 出版商股份上限访问Pyth网络中的最新发布者权益上限数据
- 时间加权平均价格(TWAP)计算自定义时间窗口(1-600秒)内的时间加权平均价格(TWAP),以实现更稳定的定价
💬 提示(4个可用)
- 分析价格数据源获取任何资产的详细分析,包括当前价格、时间加权平均价格(TWAP)和波动率指标
- 比较价格多个资产的并列对比与波动率分析
- 市场概览针对任何资产类型(加密货币、股票、外汇、金属、利率)的全面市场报告
- 价格警报设置建立价格监测系统的分步指南
📚 资源(3个可用)
- Pyth网络信息网络、数据提供商及功能概述
- 流行的价格数据源主要资产常用价格数据源ID的快速参考
- API文档参考Hermes API端点快速参考指南
🌐 通用功能
- 通用价格数据源ID与特定于链的预言机不同,Pyth 使用的是通用的价格数据源ID,这些ID适用于所有支持的区块链
- 完全符合MCP标准根据MCP规范实现工具、提示和资源
支持的资产类型及覆盖范围
Pyth Network汇总来自 125+家第一方金融机构包括主要交易所、做市商和交易公司,提供:
- 1,930+ 价格数据源 跨越;遍及 107+条区块链
- 资产类型:
- crypto - 加密货币(BTC/美元、ETH/美元、SOL/美元等) - equity - 传统股票和股权 - fx - 外汇对 - metal - 贵金属(金、银等) - rates - 利率及利率产品
Pyth 运行于一个 基于拉取的预言机模型直接从数据提供商向包括以太坊、索拉纳、阿瓦洛瓦、BNB链、阿波斯、邃、耐克等在内的多个链上的智能合约提供高频价格更新(每约400毫秒刷新一次)。
先决条件
- python版本3.10或更高版本
- 包管理器pip 或 紫外线 (推荐)
- Claude 桌面版 (可选):用于与Anthropic的Claude接口集成
- 光标/风帆冲浪 (可选):用于集成到IDE中
安装
克隆仓库
git clone https://github.com/itsomsarraf/pyth-network-mcp.git
cd pyth-network-mcp安装依赖项
使用紫外线(推荐):
uv sync使用 pip:
pip install mcp httpx该项目要求:
mcp>=1.0.0- 官方MCP SDKhttpx>=0.27.0对于发送到Pyth Hermes API的HTTP请求
配置MCP客户端
要使用此服务器与如Claude Desktop之类的MCP客户端配合,需在您的MCP设置配置文件中添加以下内容:
对于Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json 在 macOS 上, %APPDATA%\Claude\claude_desktop_config.json (在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"
}
}
}运行服务器
服务器使用stdio传输(标准输入/输出)进行MCP通信:
python3 pyth_mcp_server.py使用随附的客户端测试服务器:
python3 pyth_mcp_client.py使用方法
服务器暴露了 5个工具, 4个提示,和 3个资源 通过MCP协议,可使用Claude Desktop(用于自然语言查询)、Cursor/Windsurf或编程方式访问。
MCP(可能指某种特定系统或平台,如“微控制器平台”等,具体需根据上下文确定)功能概览
| 能力 | 数量 | 描述 |
|---|---|---|
| 工具 直接通过API交互获取价格数据 | ||
| 提示 | 4 | 为常见任务预配置的分析模板 |
| 资源 | 3 | 静态参考信息和文档 |
以下是每项能力的详细描述及示例。
______________________________________________________________________
工具: get_price_feeds
描述通过符号或资产类型搜索并过滤来自Pyth网络的价格数据源。这在查询价格之前发现可用的价格数据源时非常有用。
参数:
query(字符串,可选):过滤结果以仅包含此字符串的价格数据源(不区分大小写)。示例:“bitcoin”,“eth”,“gold”asset_type(字符串,可选):按资产类型过滤(不区分大小写)。选项:crypto,equity,fx,metal,rates
退货包含ID和属性的价格数据源元数据列表。
自然语言示例(Claude 桌面版):
用户“有哪些可用的比特币价格数据源?” 助手“我找到了几个比特币价格数据源,包括: - 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(list\[string\], (列表\[字符串\], 所需的;要求的): 需获取更新的价格数据源ID列表encoding(字符串,可选):二进制数据的编码类型。选项:hex,base64默认:hexparsed(布尔值,可选):如果为真,则包含解析后的价格数据。默认值:trueignore_invalid_price_ids(布尔值,可选):如果为真,则忽略无效的价格ID。默认值:falseinclude_binary(布尔值,可选):如果为真,则包含二进制数据。默认值:false(清洁输出)
回报价格更新,包含解析后的、易于人类阅读的数据。
自然语言示例(Claude 桌面版):
用户“比特币当前的美元价格是多少?” 助手“当前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(list\[string\], (列表\[字符串\], 所需的;要求的): 需获取更新的价格馈送ID列表encoding(字符串,可选):二进制数据的编码类型。选项:hex,base64默认:hexparsed(布尔值,可选):如果为真,则包含解析后的价格数据。默认值:trueignore_invalid_price_ids(布尔值,可选):如果为真,则忽略无效的价格ID。默认值:falseinclude_binary(布尔值,可选):如果为真,则包含二进制数据。默认值:false
退货在指定时间戳或之后更新价格。
自然语言示例(Claude 桌面版):
用户“在时间戳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默认值:hexparsed(布尔型,可选):如果为真,则包含解析后的更新数据。默认值:trueinclude_binary(布尔值,可选):如果为真,则包含二进制数据。默认值:false
回报最新出版商持股上限更新数据已解析为可读格式。
自然语言示例(Claude 桌面版):
用户“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分钟TWAPids(list\[string\], (列表\[字符串\], 所需的): 要获取TWAP(时间加权平均价格)的价格馈送ID列表encoding(字符串,可选):二进制数据的编码类型。选项:hex,base64默认:hexparsed(布尔值,可选):如果为真,则在解析的字段中包含计算得出的TWAP(时间加权平均价格)。默认值:trueignore_invalid_price_ids(布尔值,可选):如果为真,则忽略无效的价格ID。默认值:falseinclude_binary(布尔型,可选):如果为真,则包含二进制数据。默认值:false
退货指定窗口的时间加权平均价格。
自然语言示例(Claude 桌面版):
用户“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桌面版中的示例用法:
用户“使用analyze_price_feed提示进行以太坊(ETH)的价格分析” 克劳德: *执行包括以下步骤在内的多步分析:* 1. 搜索以太坊(ETH)价格数据源 1. 获取最新价格 1. 计算5分钟时间加权平均价格(TWAP) 1. 提供包含趋势的全面分析
______________________________________________________________________
提示: compare_prices
描述并排比较多种资产,包括价格、时间加权平均价格(TWAP)和波动率分析。
论点;争论点:
symbols(必填):以逗号分隔的资产符号列表(例如,BTC,ETH,SOL)
示例用法:
“使用 compare_prices 提示符,并包含 BTC、ETH、SOL 这些符号”
创建一个比较表,展示相对表现和波动性。
______________________________________________________________________
提示: market_overview
描述为特定资产类型生成一份全面的市场报告。
论点;论据:
asset_type(必需):加密货币、股票、外汇、金属或利率
示例用法:
“使用市场概览提示词来获取加密资产信息”
提供所有加密货币行情的概览,包括价格和趋势。
______________________________________________________________________
提示: price_alert_setup
描述获取设置自动化价格监控的分步指南。
论点;论据:
asset_symbol(必填):要监控的资产的符号
示例用法:
“使用价格提醒设置功能(针对SOL)”
提供饲料ID、当前价格、轮询建议以及代码示例。
______________________________________________________________________
资源
资源提供了关于Pyth Network的静态参考信息。
资源: pyth://network/info
内容Pyth Network 的一般信息
- 网络概览
- 125+家数据提供商
- 覆盖统计(1,930+个源,107+条链)
- 主要特性和功能
在Claude桌面版中访问“给我展示Pyth Network的信息资源”
______________________________________________________________________
资源: pyth://feeds/popular
内容流行价格馈送ID的JSON参考
- 顶级加密货币交易对(BTC/USD、ETH/USD、SOL/USD等)
- 主要股票(AAPL,TSLA,MSFT)
- 外汇交易对(欧元/美元,英镑/美元)
- 贵金属(金、银)
访问“给我看看流行的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 Network 价格数据页面 浏览所有可用的订阅源
- 常用的价格馈送ID:
- BTC/USD:比特币/美元 e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43 - 以太坊/美元: ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace - SOL/USD:(可翻译为)“索拉纳/美元”或“SOL兑美元” ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d
项目结构
pyth-network-mcp/
├── pyth_tools.py # Pyth Network API client
├── pyth_mcp_server.py # Official MCP server
├── pyth_mcp_client.py # Example client
├── pyproject.toml # Dependencies
├── README.md # This file
├── STRUCTURE.md # Structure guide
├── .gitignore
└── fastmcp-implementation/ # Alternative FastMCP implementation建筑
这个官方MCP服务器使用的是:
- 官方MCP SDK符合标准的MCP协议实现
- 标准I/O传输为了与MCP客户端进行高效通信
- Pyth Hermes APIPyth的REST API用于访问价格数据流(
https://hermes.pyth.network) - httpx(注:这是一个技术术语或工具名称,直接翻译为中文可能无法准确传达其含义,因此保持原样)用于发送API请求的异步HTTP客户端
服务器以无状态方式运行,每次请求时从Pyth的Hermes API获取最新数据。二进制数据默认禁用,以确保响应清晰且易于人类阅读。
何时使用这个而不是FastMCP?
这个存储库包含 两种实现方式 Pyth网络MCP服务器的:
官方MCP(此根目录)✅ 推荐
使用时机:
- ✅ 生产环境部署 - 符合标准且经过实战检验
- ✅ Claude Desktop 集成 - 官方协议支持
- ✅ 光标/风帆冲浪集成 - 与AI集成开发环境(IDEs)的最佳兼容性
- ✅ 更好的性能 - 高效的stdio传输
- ✅ 具有前瞻性,能适应未来变化 - 严格遵循MCP规范
- ✅ 稳定可靠 - 官方SDK,具备完善的错误处理机制
交通: stdio(标准输入/输出)\ 协议: 官方MCP软件开发工具包\ 最适合用于: 生产、人工智能代理、实际应用
FastMCP 实现(子目录)
使用时机:
- 🧪 翻译为中文是“🧪(化学实验/试管等意象)”。不过,通常在没有具体上下文的情况下,这个符号本身在中文里并没有一个固定的、广泛认可的翻译,它更多地是作为一种图像或符号被使用,代表着化学实验、试管等与化学相关的意象。如果非要给它一个简短的翻译,可以是“化学实验符号”或“试管符号”,但具体翻译还需根据上下文来确定。在这里,为了简洁明了,可以翻译为“🧪(化学实验/试管等)”。 学习与实验 - 更容易理解
- 🧪 试管/实验器材 首选HTTP/SSE - 如果你需要基于HTTP的传输
- 🧪 试管/实验器材 快速原型制作 - 快速设置和测试
- 🧪 试管/实验器材 教育目的 - 非常适合学习MCP(可能是指某种概念或课程)
交通: 带有服务器发送事件(SSE)的HTTP\ 协议: FastMCP框架\ 最适合用于: 学习、实验、基于HTTP的工作流程
快速比较
| 特性 | 官方MCP(根目录) | FastMCP(子文件夹) |
|---|---|---|
| 生产就绪 | ✅ 是 | 🔶 基本 |
| 演出 | ✅ 优秀 | 🔶 良好 |
| Claude Desktop(可译为“Claude桌面版”或“Claude桌面应用”) | ✅ 完全支持 | ✅ 支持 |
| 交通 | stdio | HTTP/SSE |
| 易于学习 | 🔶 中等 | ✅ 简单 |
| 协议合规性 | ✅ 官方规范 | 🔶 基于框架 |
| 推荐给 | 生产使用 | 学习/测试 |
📝 备注: 两种实现都提供了相同的五种工具,并且可以访问相同的Pyth Network数据。它们的区别在于底层传输和协议的实现。
许可证
这个项目采用MIT许可证授权。
关于
Pyth Network是一个去中心化的预言机协议,它能在107多个区块链上向智能合约提供实时市场数据。通过汇集来自125多家第一方发布者(包括主要交易所、做市商和交易公司)的数据,Pyth为各类资产类别提供可靠且低延迟的价格数据。
这台MCP服务器通过模型上下文协议,使Pyth广泛的报价网络能够轻松被人工智能代理、自主系统和其他应用程序访问,从而使智能代理能够基于实时市场数据做出明智的决策。
外部资源
- Pyth Network(中文可译为“Pyth网络”): https://pyth.network 翻译为中文可以是:“https://pyth.network(网址,保持原样)”。不过,通常在中文语境下,我们不会直接翻译网址,而是直接使用原网址或者简单说明其为网址。如果非要给出一个类似于中文表达的描述,可以是:“这是Pyth网络的网址”。但最准确的表达还是直接使用原网址
- Pyth 文档: https://docs.pyth.network 的中文翻译为:“https://pyth网络文档(或类似表述,具体根据网站内容确定,此处为直译)”。不过,通常我们不会直接翻译网址,而是直接使用原网址或在中文语境下解释其含义。如果需要在中文中提及这个网址,可以简单说成:“访问 Pyth 网络的官方文档,网址为 https://docs.pyth.network”
- Hermes API 文档: https://hermes.pyth.network/docs 的中文翻译可以是:“https://hermes.pyth.network/文档” 或者更自然一点的表达:“https://hermes.pyth.network/文档中心”。这里,“docs”通常代表“文档”(documents)的意思,所以在中文语境下,我们将其翻译为“文档”或“文档中心”以更贴合中文表达习惯
- 价格数据馈送(或价格信息源): https://pyth.network/价格数据源
- MCP协议: https://modelcontextprotocol.io(该网址可直接作为翻译,无需具体翻译其内容,若需说明,可表述为“模型上下文协议官方网站”)
- GitHub:
做出贡献
欢迎贡献!请随时提交拉取请求。
支持
对于以下相关问题:
- 这个MCP服务器在(某个平台或项目)上提交一个问题
- Pyth Network(中文可译为“Pyth网络”或根据具体语境简化为“Pyth链”,但通常直接保留原名以体现其品牌特色)参观 Pyth的Discord服务器 或者 文件资料
- MCP协议见 模型上下文协议文档
