by huweihua123
专业的金融市场数据 MCP 服务器 - 支持A股/美股/加密货币,原生 MCP 协议,AI Agent 友好
# Add to your Claude Code skills
git clone https://github.com/huweihua123/stock-mcpEnglish | 中文
开源金融数据 MCP / HTTP 服务,面向 AI Agent、量化脚本和普通后端集成。
stock-mcp 是一个开源金融数据服务,提供两套对外接口:
MCP:给 Claude Desktop、Cursor、DeerFlow、各类 Agent 使用HTTP API:给普通后端、脚本和服务直接调用它的定位不是“给投资建议”,而是提供:
如果你只是想先把服务跑起来,最短路径就是:
git clone https://github.com/yourusername/stock-mcp.git
cd stock-mcp
cp .env.example .env
docker compose up -d --build
启动后默认可访问:
http://127.0.0.1:9898/healthhttp://127.0.0.1:9898/docshttp://127.0.0.1:9898/mcp默认 Docker 栈会一起启动:
stock-mcpredispostgres默认端口:
stock-mcp: 127.0.0.1:9898postgres: 127.0.0.1:15432说明:
15432 是为了避免占用你本机已有的 5432postgres:5432DOCKER_POSTGRES_PORT 即可No comments yet. Be the first to share your thoughts!
code-export HTTP 接口,可直接导出 CSV / JSON 给代码执行型 agent国内源:
TushareAkshareBaostock国外源:
Yahoo / yfinanceFinnhubAlpha VantageTwelve DataFREDCCXTCryptoEDGAR当前 HTTP 路由主要分为这些组:
/api/v1/market/*
/api/v1/fundamental/*
/api/v1/money-flow/*
/api/v1/news/*
/api/v1/filings/*
/api/v1/code-export/*
/health
/docs / /redoc
也就是说,这个项目不是只有 MCP。
如果你不打算接 MCP 客户端,完全可以只把它当普通 HTTP 服务来用。
MCP 侧会把这些能力暴露成 tools,主要对应:
MCP 入口:
POST /mcp适用场景:
+-----------------------------+
| MCP Clients / HTTP Apps |
| Claude / Cursor / Backends |
+--------------+--------------+
|
v
+-----------------------+
| Thin Transports |
| HTTP / MCP / Docs |
+-----------+-----------+
|
v
+-----------------------+
| Runtime |
| auth / proxy / health |
| lifecycle / registry |
+-----------+-----------+
|
+---------------+----------------+
| |
v v
Capability Plugins Provider Plugins
market / filings / news tushare / yahoo / edgar
money_flow / code_export finnhub / fred / akshare
| |
+---------------+----------------+
|
v
Redis / Postgres
职责分层大致是:
src/server/runtime/
src/server/capabilities/
plugin / service / http / mcp / schemasrc/server/providers/
src/server/transports/
src/server/domain/
当前重构方向是:
BaseDataAdapter 扩展stock-mcp 支持三档认证:
none127.0.0.1tokenjwtJWTVerifier + OIDC / JWKS在 token 和 jwt 模式下:
/health 匿名开放/mcp、/api/v1/*、/docs、/redoc、/openapi.json、/ 需要 Bearer token当前项目采用“国外源显式代理,国内源直连”的边界:
显式走代理:
Yahoo / yfinanceFinnhubFuturesAlpha VantageTwelve DataFREDCCXTCryptoEDGAR保持直连:
TushareAkshareBaostockDocker 下默认会把:
PROXY_HOST覆盖成:
host.docker.internal这样容器里的国外源可以访问宿主机代理。
如果你的代理不在宿主机上,可以改:
DOCKER_PROXY_HOSTuv sync --dev
cp .env.example .env
export STOCK_MCP_AUTH_MODE=none
uv run python -m uvicorn src.server.app:app --host 127.0.0.1 --port 9898
cp .env.example .env
docker compose up -d --build
如果你切换过数据库配置或旧卷和当前配置不一致,建议首次执行:
docker compose down -v
docker compose up -d --build
uv run python -c "import src.server.mcp.server as m; m.create_mcp_server().run(transport='stdio')"
curl -X POST http://127.0.0.1:9898/api/v1/technical/indicators/calculate \
-H "Content-Type: application/json" \
-d '{
"symbol": "SSE:600519",
"period": "6mo",
"interval": "1d"
}'
curl -X POST http://127.0.0.1:9898/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_kline_data",
"arguments": {
"symbol": "SSE:600519"
}
},
"id": "1"
}'
推荐优先关注这些变量:
STOCK_MCP_AUTH_MODE=none|token|jwtSTOCK_MCP_STATIC_BEARER_TOKENMCP_HOST, MCP_PORTDOCKER_POSTGRES_PORT, DOCKER_POSTGRES_USER, DOCKER_POSTGRES_PASSWORD, DOCKER_POSTGRES_DBPROXY_ENABLED, PROXY_HOST, PROXY_PORTDOCKER_PROXY_HOSTTUSHARE_ENABLED, TUSHARE_TOKEN, TUSHARE_HTTP_URLFINNHUB_ENABLED, FINNHUB_API_KEYTAVILY_API_KEYSECURITY_MASTER_BACKEND, SECURITY_MASTER_SQLITE_PATHDATABASE_URLMCP_TOOL_TIMEOUT_SECONDS, PROVIDER_CALL_TIMEOUT_SECONDS完整示例见:
uv run pytest
stock-mcp/
├── src/server/api/ # FastAPI HTTP 路由
├── src/server/mcp/ # MCP server 与 tools
├── src/server/domain/ # adapter / service / router
├── src/server/infrastructure/ # Redis / Postgres / 外部连接
├── src/server/core/ # 配置、依赖注入、启动流程
├── docs/ # 补充文档
└── tests/ # pytest 测试
MIT
stock-mcp is an open-source financial data service with two public interfaces:
MCP for AI agents such as Claude Desktop, Cursor, and DeerFlowHTTP API for regular backends, scripts, and service integrationsIt is designed to provide reliable market data and analysis tools, not investment advice.
git clone https://github.com/yourusername/stock-mcp.git
cd stock-mcp
cp .env.example .env
docker compose up -d --build
Default endpoints:
http://127.0.0.1:9898/healthhttp://127.0.0.1:9898/docshttp://127.0.0.1:9898/mcpDefault services:
stock-mcpredispostgresDefault host ports:
stock-mcp: 127.0.0.1:9898postgres: 127.0.0.1:15432HTTP route groups:
/api/v1/market/*/api/v1/technical/*/api/v1/fundamental/*/api/v1/money-flow/*/api/v1/news/*/api/v1/filings/*/api/v1/code-export/*/health/docs / /redocMCP endpoint:
/mcpMCP clients / HTTP apps
|
v
Thin transports (HTTP / MCP)
|
v
Runtime substrate
auth / proxy / lifecycle / registries
|
v
Capability plugins <-> Provider plugins
|
v
Redis / Postgres
The runtime/plugin refactor is complete. Internal layering:
src/server/runtime/
src/server/capabilities/
market, filings, news, money_flow, code_exportsrc/server/providers/
src/server/transports/
src/server/domain/
Only heavy internal logic remains in src/server/domain/services/; lightweight capabilities stay capability-local by default.
Extension rules:
none: local development and quick trialtoken: static Bearer token for personal or intranet deploymentjwt: production mode using OIDC / JWKS compatible JWT verificationExplicit proxy for foreign providers:
Yahoo / yfinanceFinnhubFuturesAlpha VantageTwelve DataFREDCCXTCryptoEDGARDirect connection for domestic providers:
TushareAkshareBaostockIn Docker mode, PROXY_HOST is overridden to host.docker.internal by default. Overri