EODHD MCP服务器
模型上下文协议(MCP)服务器 EOD历史数据 API。
当前服务器暴露 75个只读MCP工具 通过三种运输方式:
streamable-http通过server.py上/mcp默认情况下ssestdio
它还提供捆绑的MCP提示和文档资源。
覆盖
核心数据集
- 日终、日内和美国分时数据
- 实时报价和US Live v2扩展报价
- 基本面、收益和财务报表
- 公司新闻、情绪和新闻词权重
- 筛选器、搜索和技术指标
- 公司行为:首次公开募股、分拆、股息、交易品种变更
- 宏观指标、经济事件、交易所和上市
- 芝加哥期权交易所指数工具
- 国库券、收益率、实际收益率和长期利率
市场和合作伙伴数据集
- 美国期权:合同、EOD和基础
- illio:绩效、风险和市场洞察
- Praams:风险评分、债券、银行对账单、报告、筛选器
- Investverte ESG:公司、国家和行业
- TradingHours市场查询、市场详细信息和状态
当前行为
- 所有工具都是只读的,并通过注册
app/tools/__init__.py. - 所有HTTP请求都通过共享异步客户端
app/api_client.py. - 上游API错误保留为MCP
ToolError带有状态代码和上游详细信息(如有)。 - API令牌被注入到EODHD请求中,作为
api_token=...查询参数。 - 可选重试支持由控制
EODHD_RETRY_ENABLED或代码中的每次通话设置。
需求
- python
3.10+ - 有效的EODHD API密钥
- MCP兼容客户端,如Claude Desktop、Claude Code、ChatGPT MCP/连接器或MCP检查器
安装
git clone https://github.com/EodHistoricalData/EODHD-MCP-Server.git
cd EODHD-MCP-Server
pip install -r requirements.txt对于开发工具:
pip install -e ".[dev]"创建一个 .env 存储库根目录下的文件:
EODHD_API_KEY=YOUR_EODHD_API_KEY
MCP_HOST=127.0.0.1
MCP_PORT=8000
MCP_PATH=/mcp
LOG_LEVEL=INFO
# Optional:
EODHD_RETRY_ENABLED=false运行服务器
推荐入口点
server.py 是维护的主要入口点。
运行HTTP(默认):
python server.py显式运行HTTP:
python server.py --http --host 127.0.0.1 --port 8000 --path /mcp运行SSE:
python server.py --sse运行stdio:
python server.py --stdio从CLI覆盖API键:
python server.py --stdio --apikey YOUR_EODHD_API_KEY兼容性入口点
该仓库仍然包含旧版兼容性入口点 entrypoints/:
python -m entrypoints.server_http
python -m entrypoints.server_sse
python -m entrypoints.server_stdio --apikey YOUR_EODHD_API_KEY这些仍然可用,但是 server.py 是主运行时表面。
认证模型
对于传出的EODHD请求,服务器最终将令牌发送为 api_token 在查询字符串中。
对于传入的HTTP MCP请求,服务器可以从以下位置解析EODHD令牌:
Authorization: BearerX-API-Key:- 查询参数:
apikey,api_key,或token - 回退服务器环境:
EODHD_API_KEY
许多工具还公开了一个显式 api_token 每次调用覆盖的参数。
与Claude Desktop一起使用
打包扩展
打包的MCP清单在中使用stdio入口点 manifest.json.
源代码校验示例
{
"mcpServers": {
"eodhd-mcp": {
"command": "python3",
"args": [
"/absolute/path/to/EODHD-MCP-Server/server.py",
"--stdio"
],
"env": {
"EODHD_API_KEY": "YOUR_EODHD_API_KEY"
}
}
}
}与ChatGPT MCP/连接器一起使用
对于本地HTTP测试,请使用:
- 网址:
http://127.0.0.1:8000/mcp
如果您的MCP客户端支持标头,您可以通过以下方式提供EODHD令牌 Authorization: Bearer ... 或 X-API-Key: ...。否则,设置 EODHD_API_KEY 在服务器上。
开发命令
pytest tests/auto/ -v --tb=short
pytest tests/auto/ -v --cov=app --cov-report=term-missing
ruff check app/ server.py
ruff format --check app/ server.py
mypy app/ server.py --ignore-missing-imports --explicit-package-bases
bandit -r app/ -ll -ii -x app/resources/
semgrep scan --config p/python --config p/owasp-top-ten --config p/secrets --config p/jwt --error app/
python server.py
python server.py --stdio手动端到端客户端
该存储库包括手动MCP客户端 tests/manual/.
在一个终端中启动主服务器:
python server.py然后运行HTTP手动客户端:
python tests/manual/test_client_http.py --endpoint http://127.0.0.1:8000/mcp对于SSE:
python server.py --sse
python tests/manual/test_client_sse.py --endpoint http://127.0.0.1:8000/sse对于stdio:
python tests/manual/test_client_stdio.py --cmd "python server.py --stdio --apikey YOUR_EODHD_API_KEY"手动测试目录从以下位置加载 tests/manual/all_tests.py 默认情况下。
码头工人
使用Docker Compose运行:
docker compose up --build撰写服务启动 python server.py 和地图 ${MCP_PORT_OUT} 到 ${MCP_PORT}.
项目布局
server.py--主要入口和交通选择app/api_client.py--共享异步HTTP客户端、身份验证注入、速率限制、重试逻辑app/response_formatter.py-MCP资源格式化和API错误引发app/input_formatter.py--输入净化和日期强制app/tools/--MCP工具实现app/prompts/--捆绑的MCP提示app/resources/--捆绑的MCP资源和参考文档tests/auto/--自动化测试tests/manual/--手动端到端MCP客户端
备注
- 一些市场端点需要特定的EODHD订阅访问权限。
- 有效的API密钥仍然可能收到未包含在帐户计划中的工具或观察列表的上游权限错误。
- 服务器现在将这些上游原因保留在代理可见的工具错误中,而不是在一般故障后掩盖它们。
