DataBento MCP服务器和技能
通过DataBento API访问专业市场数据,可作为MCP服务器和Claude Code技能使用。
最新动态
3.0版本-双重部署:MCP服务器+克劳德代码技能
此项目现在支持两种部署模式:
- MCP服务器:适用于Claude Desktop和其他MCP客户端(18个工具)
- Claude代码技能:Claude Code CLI的原生技能(8个技能脚本)
这两种模式共享相同的核心功能:
- 完整的Databento API覆盖范围(时间序列、元数据、批次、符号、参考)
- 具有灵活架构的API完整历史支持
- 实时期货报价(ES、NQ)
- 贯穿始终的类型安全TypeScript实现
选择最适合您工作流程的部署!
特性
- 🎯 实时期货报价 -ES和NQ合同的当前价格
- 📊 历史时间序列 -跨日期范围流式传输任何市场数据模式
- 📈 批量下载 -提交和管理大型历史数据作业
- 🔍 符号分辨率 -跨数据集将符号解析为仪器ID
- 📚 元数据发现 -探索数据集、模式、字段和定价
- 🏢 参考数据 -访问安全主机、公司操作和调整
- ⏰ 会话检测 -自动亚洲/伦敦/纽约会话识别
- 🚀 速率限制 -内置请求限制和缓存(30s TTL)
- 🔒 错误处理 -优雅的失败,错误信息清晰
安装
先决条件
- Node.js v18+或兼容的运行时环境
- Databent API密钥(在这里买一个)
- 对于MCP:Claude Desktop或兼容的MCP客户端
- 技能:克劳德代码CLI
设置
- 克隆或下载此存储库:
cd ~/Dev
git clone databento-mcp-server
cd databento-mcp-server- 安装依赖项:
npm install- 创建
.env使用您的DataBento API密钥文件:
cp .env.example .env
# Edit .env and add your API key你的 .env 应包含:
DATABENTO_API_KEY=db-your-api-key-here
DATABENTO_DATASET=GLBX.MDP3- 在下面选择您的部署模式
配置
选项1:MCP服务器(用于克劳德桌面)
构建MCP服务器:
npm run build:mcp添加到您的Claude Desktop MCP配置(~/.claude/mcp.json):
{
"mcpServers": {
"databento": {
"command": "node",
"args": ["/Users/yourusername/Dev/databento-mcp-server/dist/mcp/mcp/index.js"],
"env": {
"DATABENTO_API_KEY": "db-your-api-key-here"
}
}
}
}或使用 npx 直接(如果发布到npm):
{
"mcpServers": {
"databento": {
"command": "npx",
"args": ["-y", "databento-mcp-server"],
"env": {
"DATABENTO_API_KEY": "db-your-api-key-here"
}
}
}
}选项2:Claude代码技能
构建和安装技能:
npm run install:skills这将:
- 编译TypeScript的技能
- 将它们复制到
~/.claude/skills/databento/ - 使脚本可执行
设置API关键环境变量:
export DATABENTO_API_KEY="db-your-api-key-here"
# Or add to your .bashrc/.zshrc for persistence验证安装:
node ~/.claude/skills/databento/scripts/get-quote.js ES环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
DATABENTO_API_KEY | ✅ | - | 您的DataBento API密钥(以 db-) |
DATABENTO_DATASET | ❌ | GLBX.MDP3 | CME期货数据集 |
可用工具
MCP服务器提供18个工具,分为6类:
| 类别 | 工具 | 描述 |
|---|---|---|
| 原版 | 3个工具 | ES/NQ期货报价、交易时段信息、历史柱状图 |
| 时间序列 | 1个工具 | 具有灵活模式的历史市场数据流 |
| 符号学 | 1工具 | 符号解析和转换 |
| 元数据 | 6个工具 | 数据集发现、模式信息、成本估算 |
| 批次 | 3个工具 | 大规模数据下载作业管理 |
| 参考 | 3个工具 | 安全大师、公司行为、价格调整 |
原始工具(期货和交易时段)
1. get_futures_quote
获取ES或NQ期货的当前报价。
输入:
{
"symbol": "ES"
}输出:
{
"symbol": "ES",
"price": 5845.25,
"bid": 5845.00,
"ask": 5845.50,
"spread": 0.50,
"timestamp": "2024-10-02T14:30:00.000Z",
"dataAge": "15s ago",
"source": "DataBento"
}2. get_session_info
获取当前交易时段信息。
输入:
{
"timestamp": "2024-10-02T14:30:00Z"
}_注: timestamp 是可选的,默认为当前时间_
输出:
{
"currentSession": "NY",
"sessionStart": "2024-10-02T14:00:00.000Z",
"sessionEnd": "2024-10-02T22:00:00.000Z",
"timestamp": "2024-10-02T14:30:00.000Z",
"utcHour": 14
}会议:
- 亚洲的:00:00-07:00 UTC
- 伦敦:07:00-14:00 UTC
- 纽约:格林尼治标准时间14:00-22:00
3. get_historical_bars
获取期货合约的历史OHLCV柱。
输入:
{
"symbol": "NQ",
"timeframe": "H4",
"count": 10
}输出:
{
"symbol": "NQ",
"timeframe": "H4",
"count": 10,
"bars": [
{
"timestamp": "2024-10-02T00:00:00.000Z",
"open": 20150.25,
"high": 20175.50,
"low": 20145.00,
"close": 20160.75,
"volume": 125000
}
]
}支持的时间范围:
1h-每小时酒吧H4-4小时酒吧(从1小时开始聚合)1d-每日酒吧
______________________________________________________________________
时间序列工具
4. timeseries_get_range
使用灵活的模式和日期范围流式传输历史市场数据。支持所有Databento模式。
输入:
{
"dataset": "GLBX.MDP3",
"symbols": "ES.c.0,NQ.c.0",
"schema": "trades",
"start": "2024-10-01",
"end": "2024-10-02",
"stype_in": "raw_symbol",
"stype_out": "instrument_id",
"limit": 1000
}支持的架构:
mbp-1,mbp-10-按价格划分的市场(1或10个级别)mbo-按订单市场trades-贸易数据ohlcv-1s,ohlcv-1m,ohlcv-1h,ohlcv-1d,ohlcv-eod-OHLCV钢筋statistics,definition,imbalance,status-市场元数据
输出:
{
"dataset": "GLBX.MDP3",
"schema": "trades",
"symbols": ["ES.c.0"],
"dateRange": {
"start": "2024-10-01T00:00:00Z",
"end": "2024-10-02T00:00:00Z"
},
"recordCount": 1000,
"data": [
{
"ts_event": "2024-10-01T09:30:00.123456789Z",
"price": 5845.25,
"size": 10,
"side": "B"
}
]
}______________________________________________________________________
符号学工具
5. symbology_resolve
将符号解析为仪器ID或跨日期范围的其他符号类型。
输入:
{
"dataset": "GLBX.MDP3",
"symbols": ["ES", "NQ"],
"stype_in": "continuous",
"stype_out": "instrument_id",
"start_date": "2024-10-01",
"end_date": "2024-10-02"
}符号类型:
raw_symbol-本地交换符号instrument_id-数据库仪器idcontinuous-连续期货(c.0、c.1等)parent-父符号nasdaq,cms,bats,smart-场馆特定符号
输出:
{
"dataset": "GLBX.MDP3",
"stype_in": "continuous",
"stype_out": "instrument_id",
"date_range": {
"start": "2024-10-01",
"end": "2024-10-02"
},
"symbol_count": 2,
"result": "partial",
"mappings": [
{
"input_symbol": "ES.c.0",
"output_symbol": "123456",
"start_date": "2024-10-01",
"end_date": "2024-10-02"
}
]
}______________________________________________________________________
元数据工具
6. metadata_list_datasets
列出所有可用的Databento数据集,并可选择日期范围过滤。
输入:
{
"start_date": "2024-01-01",
"end_date": "2024-12-31"
}输出:
{
"datasets": [
{
"dataset": "GLBX.MDP3",
"description": "CME Globex MDP 3.0",
"start_date": "2020-01-01",
"end_date": null
}
],
"count": 1
}7. metadata_list_schemas
列出特定数据集的可用数据模式。
输入:
{
"dataset": "GLBX.MDP3"
}输出:
{
"dataset": "GLBX.MDP3",
"schemas": ["trades", "mbp-1", "mbp-10", "ohlcv-1h", "ohlcv-1d"],
"count": 5
}8. metadata_list_publishers
列出发布者及其详细信息,可选择按数据集过滤。
输入:
{
"dataset": "GLBX.MDP3"
}输出:
{
"publishers": [
{
"publisher_id": 1,
"dataset": "GLBX.MDP3",
"venue": "CME",
"description": "Chicago Mercantile Exchange"
}
],
"count": 1,
"dataset_filter": "GLBX.MDP3"
}9. metadata_list_fields
列出特定模式可用的字段及其类型和描述。
输入:
{
"schema": "trades",
"encoding": "json"
}输出:
{
"schema": "trades",
"encoding": "json",
"fields": [
{
"name": "ts_event",
"type": "uint64",
"description": "Event timestamp in nanoseconds"
},
{
"name": "price",
"type": "int64",
"description": "Price in fixed-point notation"
}
],
"count": 2
}10. metadata_get_cost
下载前计算历史数据查询的成本(单位:美元)。
输入:
{
"dataset": "GLBX.MDP3",
"symbols": "ES.c.0",
"schema": "trades",
"start": "2024-10-01",
"end": "2024-10-02",
"stype_in": "raw_symbol"
}输出:
{
"dataset": "GLBX.MDP3",
"symbols": ["ES.c.0"],
"schema": "trades",
"cost_usd": 15.50,
"record_count_estimate": 1500000,
"size_bytes_estimate": 45000000
}11. metadata_get_dataset_range
获取数据集的可用日期范围。
输入:
{
"dataset": "GLBX.MDP3"
}输出:
{
"dataset": "GLBX.MDP3",
"start_date": "2020-01-01",
"end_date": null,
"description": "Data available from 2020-01-01 to present"
}______________________________________________________________________
批处理工具
12. batch_submit_job
为大型历史数据集提交批量数据下载作业。返回作业ID和状态。
输入:
{
"dataset": "GLBX.MDP3",
"symbols": ["ES.c.0", "NQ.c.0"],
"schema": "trades",
"start": "2024-10-01",
"end": "2024-10-02",
"encoding": "csv",
"compression": "zstd",
"stype_in": "raw_symbol",
"split_duration": "day"
}输出:
{
"status": "submitted",
"job_id": "abc123def456",
"state": "received",
"dataset": "GLBX.MDP3",
"schema": "trades",
"symbols_count": 2,
"cost_usd": 25.00,
"date_range": {
"start": "2024-10-01",
"end": "2024-10-02"
},
"encoding": "csv",
"compression": "zstd",
"ts_received": "2024-10-03T10:00:00Z",
"message": "Job submitted successfully. Use batch_list_jobs or batch_download to check status and download files when ready."
}13. batch_list_jobs
列出所有批处理作业及其当前状态。可选择按作业状态或时间范围进行筛选。
输入:
{
"states": ["done", "processing"],
"since": "2024-10-01T00:00:00Z"
}输出:
{
"total_jobs": 5,
"jobs_by_state": {
"done": 3,
"processing": 2
},
"jobs": [
{
"id": "abc123def456",
"state": "done",
"dataset": "GLBX.MDP3",
"schema": "trades",
"symbols_count": 2,
"cost_usd": 25.00,
"date_range": {
"start": "2024-10-01",
"end": "2024-10-02"
},
"record_count": 1500000,
"file_count": 2,
"total_size_bytes": 45000000,
"ts_received": "2024-10-03T10:00:00Z",
"ts_process_done": "2024-10-03T10:15:00Z",
"ts_expiration": "2024-10-10T10:00:00Z"
}
]
}14. batch_download
获取已完成批处理作业的下载信息。返回下载URL和元数据。
输入:
{
"job_id": "abc123def456"
}输出:
{
"job_id": "abc123def456",
"state": "done",
"files": [
{
"filename": "20241001.csv.zst",
"size_bytes": 22500000,
"hash": "sha256:abc123...",
"download_url": "https://download.databento.com/..."
}
],
"total_size_bytes": 45000000,
"expiration": "2024-10-10T10:00:00Z"
}______________________________________________________________________
参考工具
15. reference_search_securities
在安全主数据库中搜索仪器元数据。
输入:
{
"dataset": "GLBX.MDP3",
"symbols": "ES.c.0,NQ.c.0",
"start_date": "2024-10-01",
"end_date": "2024-10-02",
"limit": 100
}输出:
{
"dataset": "GLBX.MDP3",
"symbols": "ES.c.0,NQ.c.0",
"date_range": {
"start": "2024-10-01",
"end": "2024-10-02"
},
"record_count": 2,
"securities": [
{
"instrument_id": "123456",
"raw_symbol": "ESZ4",
"description": "E-mini S&P 500 Dec 2024",
"asset_class": "futures",
"exchange": "CME",
"currency": "USD",
"first_date": "2023-09-18",
"last_date": "2024-12-20",
"min_price_increment": 0.25,
"display_factor": 1.0
}
]
}16. reference_get_corporate_actions
获取符号的公司行为(股息、拆分等)。
输入:
{
"dataset": "XNAS.ITCH",
"symbols": "AAPL,MSFT",
"start_date": "2024-01-01",
"end_date": "2024-12-31",
"action_types": ["dividend", "split"]
}输出:
{
"dataset": "XNAS.ITCH",
"symbols": "AAPL,MSFT",
"date_range": {
"start": "2024-01-01",
"end": "2024-12-31"
},
"record_count": 5,
"action_types_filter": ["dividend", "split"],
"corporate_actions": [
{
"instrument_id": "789012",
"raw_symbol": "AAPL",
"action_type": "dividend",
"ex_date": "2024-05-10",
"record_date": "2024-05-13",
"payment_date": "2024-05-16",
"amount": 0.25,
"currency": "USD"
}
]
}17. reference_get_adjustments
获取反向调整价格的价格调整系数。
输入:
{
"dataset": "XNAS.ITCH",
"symbols": "AAPL",
"start_date": "2024-01-01",
"end_date": "2024-12-31"
}输出:
{
"dataset": "XNAS.ITCH",
"symbols": "AAPL",
"date_range": {
"start": "2024-01-01",
"end": "2024-12-31"
},
"record_count": 2,
"adjustments": [
{
"instrument_id": "789012",
"raw_symbol": "AAPL",
"adjustment_date": "2024-05-10",
"adjustment_type": "dividend",
"price_factor": 0.998654,
"volume_factor": 1.0
}
]
}使用示例
使用克劳德桌面
配置后,您可以询问Claude:
原始期货工具:
“目前的ES价格是多少?”
克劳德将使用 get_futures_quote 获取实时数据的工具。
“获取NQ的最后10个H4条”
克劳德将使用 get_historical_bars 工具。
“我们现在在哪个环节?”
克劳德将使用 get_session_info 工具。
新的Databento API工具:
“列出所有可用的Databento数据集”
克劳德将使用 metadata_list_datasets 显示所有可用数据集。
“获取10月1日ES的交易数据”
克劳德将使用 timeseries_get_range 以获取历史贸易数据。
“将符号ES.c.0解析为仪器ID”
克劳德将使用 symbology_resolve 转换符号类型。
“9月份下载AAPL的所有交易需要多少钱?”
克劳德将使用 metadata_get_cost 以计算查询成本。
“提交上周NQ交易数据的批处理作业”
克劳德将使用 batch_submit_job 创建批量下载作业。
“获取ESZ4的安全详细信息”
克劳德将使用 reference_search_securities 以获取仪器元数据。
“获取AAPL 2024年的股息历史”
克劳德将使用 reference_get_corporate_actions 以获取公司行为。
发展模式
在开发模式下运行服务器并自动重新加载:
npm run dev生产模式
构建并运行:
npm run build
npm start技术细节
数据提供者
- 来源:芝加哥商品交易所期货数据
- 符号:欧洲标准普尔500指数(ES.c.0),纳斯达克100指数(NQ.c.0)
- 数据集:GLBX。MDP3(CME Globex MDP 3.0)
- 精确度:纳秒时间戳,1e9价格单位
缓存策略
- 报价缓存:30秒TTL(减少API调用)
- 周末处理:非工作时间数据的7天回顾
- 速率限制:内置请求限制
错误处理
所有工具都返回结构化错误:
{
"error": "No quote data available for ES"
}常见错误:
- 缺少API密钥
- 无效符号(仅支持ES/NQ)
- 无可用数据(周末、节假日)
- API请求频率超限
Claude代码技能使用
安装后,这些技能可以在Claude Code中自然调用:
获取实时报价:
> Get the current ES futures quote历史数据:
> Fetch 50 daily bars for NQ符号分辨率:
> Resolve ESM4 symbol to instrument ID in GLBX.MDP3元数据查询:
> List all available schemas for GLBX.MDP3 dataset批量操作:
> List my databento batch jobs这些技能会根据上下文和关键字自动检测。
项目结构
databento-mcp-server/
├── src/ # Shared code (used by both MCP & Skills)
│ ├── databento-client.ts # Futures client (quotes, bars, sessions)
│ ├── http/
│ │ └── databento-http.ts # Base HTTP client with auth, retry, caching
│ ├── api/ # API clients
│ │ ├── metadata-client.ts
│ │ ├── timeseries-client.ts
│ │ ├── batch-client.ts
│ │ ├── symbology-client.ts
│ │ └── reference-client.ts
│ └── types/ # TypeScript type definitions
│ ├── metadata.ts
│ ├── timeseries.ts
│ ├── batch.ts
│ ├── symbology.ts
│ └── reference.ts
├── mcp/ # MCP Server specific code
│ └── index.ts # MCP server entry point & 18 tool definitions
├── skills/ # Claude Code Skills
│ ├── databento/
│ │ ├── skill.md # Skill documentation
│ │ ├── scripts/ # 8 executable skill scripts
│ │ │ ├── get-quote.ts
│ │ │ ├── get-historical.ts
│ │ │ ├── get-session.ts
│ │ │ ├── resolve-symbols.ts
│ │ │ ├── timeseries.ts
│ │ │ ├── metadata.ts
│ │ │ ├── batch.ts
│ │ │ └── reference.ts
│ │ └── data/
│ └── manifest.json # Skills manifest
├── scripts/
│ └── install-skills.sh # Skill installation script
├── dist/ # Compiled JavaScript (build output)
│ ├── mcp/ # MCP server build
│ ├── skills/ # Skills build
│ └── src/ # Shared code build
├── docs/
│ ├── adrs/ # Architecture Decision Records
│ └── journals/ # Implementation journals
├── tsconfig.json # Base TypeScript config
├── tsconfig.mcp.json # MCP build config
├── tsconfig.skills.json # Skills build config
├── package.json
├── .env.example
└── README.md发展
建筑
构建一切:
npm run build仅构建MCP服务器:
npm run build:mcp仅培养技能:
npm run build:skills添加新功能
对于MCP服务器:
- 将工具定义添加到
ListToolsRequestSchema处理程序在mcp/index.ts - 在中实现处理程序
CallToolRequestSchemaswitch语句 - 将客户端方法添加到中相应的API客户端
src/api/ - 重建:
npm run build:mcp
对于技能:
- 在中创建新脚本
skills/databento/scripts/ - 从导入和使用共享客户端
src/ - 更新
skills/manifest.json使用新脚本 - 重建并安装:
npm run install:skills
对于共享功能:
- 在中为适当的客户端添加逻辑
src/api/ - 更新MCP和技能以使用它
- 重建两者:
npm run build
本地测试
# Set API key
export DATABENTO_API_KEY=db-your-key
# Run dev server
npm run dev局限性
- 原始工具:
get_futures_quote和get_historical_bars仅支持ES和NQ期货 - 新工具:支持所有Databento数据集和符号(GLBX.MDP3、XNAS.ITCH、DBEQ.BASIC等)
- 数据延迟:历史API(不是逐帧实时流)
- 周末数据:周末/节假日可能会显示过时的数据
- 速率限制:尊重DataBento API限值(60 req/min)
- 批量下载:返回下载URL,但文件内容不通过MCP流式传输
- API密钥权限:访问数据集需要适当的Databento订阅
故障排除
“需要DATABENTO_API_KEY”
确保您的 .env 文件包含以开头的有效API密钥 db-.
“没有可用的报价数据”
- 检查市场是否开放(期货交易在工作日每天23小时)
- 验证您的DataBento帐户是否具有CME期货访问权限
- 检查API密钥权限
“HTTP 401”错误
您的API密钥无效或已过期。从datamento.com获取一个新的。
许可证
麻省理工学院
贡献
欢迎投稿!请在GitHub上打开问题或PR。
相关项目
______________________________________________________________________
内置于❤️ Wolf Agents生态系统
