DeepFusion MCP Server
Provides access to Binance cryptocurrency data for crypto asset analysis, including BTC/ETH quotes, technical indicators, contract long/short ratios, funding rates, open interest, and Binance AI reports.
Integrates OKX as a cryptocurrency market data source, enabling retrieval of crypto market data for analysis within the server.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DeepFusion MCP Server分析A股最近一个月的行业轮动情况"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DeepFusion
中国金融市场全品类数据获取、周期定位与投研分析系统。以 MCP(Model Context Protocol)服务器 为核心,向上为 AI Agent 提供 177 个数据/分析工具;同时自带一套 React 可视化看板(dashboard),经由本地 HTTP API 消费同一套工具。
本文件面向接手项目的架构师 / 工程师,目标是给出系统结构、技术栈、能力边界与运维方式的完整、准确说明。AI 助手的协作约束见 AGENTS.md。
数字核实方式:运行
python -m deep_fusion inspect(FastMCP 自带子命令),输出 177 工具 / 14 资源 / 7 提示(核实于 2026-08-30)。本文档第 4、5 节以该输出与源码为准,替代此前 README 中过时的「140 工具 / 27 模块」描述。
1. 系统定位与两种运行形态
DeepFusion 在同一份 Python 代码上提供两种运行形态:
形态 | 入口 | 端口 | 用途 |
MCP 服务器(Stdio) |
| stdio | 供 Claude / Cursor / OpenCode 等 MCP 客户端接入,Agent 调用 177 个工具 |
Web 服务 + 看板 |
| 后端 | 浏览器访问可视化看板,前端经 |
两种形态共享同一套 deep_fusion/ 包与同一套工具实现,工具逻辑只有一份。Stdio 形态走 mcp.run()(FastMCP JSON-RPC over stdio);Web 形态把 FastMCP 实例包进 FastAPI(serve.py)+ Starlette(deep_fusion/__init__.py 的 --http 模式),对外暴露 MCP HTTP 路由。
后台采集已解耦:
serve.py/deep-fusion --http只启动 API 服务,不再内置常驻采集线程。周期预热、政策/行业/市场采集、日报类任务统一由deep-fusion-collectCLI(deep_fusion/scheduler.py)以「单次执行」模式运行,由外部调度(cron / systemd timer / docker sidecar)驱动。详见 §7。
⚠️ 关键约束(红线之一):本进程既作 stdio MCP 服务又作 Web 服务时,日志只能走 stderr / 文件,绝不可写 stdout——否则会污染 stdio JSON-RPC 协议流,导致任何 stdio 客户端
JSONDecodeError。见deep_fusion/logging_config.py(StreamHandler固定用sys.stderr)。
Related MCP server: cn-financial-mcp
2. 技术栈
2.1 后端(Python)
维度 | 选型 |
语言 / 运行时 | Python ≥ 3.11(项目 pyproject 要求),包管理用 uv( |
MCP 框架 | FastMCP( |
Web 框架 | FastAPI + uvicorn( |
数据处理 | pandas / numpy / scipy |
计量 / 统计 | statsmodels(Granger 因果)、arch(GARCH / DCC-GARCH)、scikit-learn(PCA / 聚类) |
频谱分析 | numpy.fft / scipy.signal(FFT / ACF / 小波 / EMD / Lomb / MUSIC / ESPRIT / MEM) |
数据源 | akshare(A股/港股/美股/基金/期货/外汇/财新等)、自研 NBS 客户端(国家统计局流式 API)、东方财富 / 新浪 / 同花顺 / 申万 / 99qh / OKX / Binance / SGE / FRED / 世界银行 / 雪球 |
持久化 | SQLite(多库,见 §5);可选 PostgreSQL(部分行业分析管线曾用,现已以 SQLite 为准) |
缓存 | 双层: |
日志 | structlog(结构化 JSON,含 |
图表 | matplotlib(Agg 后端,相位着色等公共工具在 |
2.2 前端(dashboard/)
维度 | 选型 |
框架 | React 18 + Vite 5( |
状态 | Zustand( |
数据请求 | TanStack Query v5( |
图表 | ECharts 5 |
路由 | react-router-dom v6(侧栏子导航卡片切换,无滚动定位) |
样式 | CSS( |
测试 | Vitest + @testing-library |
2.3 部署 / 运维
restart_all.sh:一键启动(先杀 5173/8080 占用,再 nohup 拉后端+前端,日志落logs/backend.log/logs/frontend.log)Dockerfile+docker-compose.yml:容器化部署smithery.yaml:Smithery 部署配置桌面快捷方式:
~/桌面/deepfusion.desktop(须chmod +x,Exec 指向restart_all.sh)
3. 整体架构
┌─────────────────────────────────────────────────────────────────┐
│ AI Agent (Claude / Cursor / OpenCode) │ 浏览器用户 │
│ MCP 客户端 (stdio) │ React Dashboard │
└───────────────┬──────────────────────────┴──────────┬───────────┘
│ stdio JSON-RPC │ HTTP
▼ ▼
┌──────────────────────────────────────────────────────┐
│ deep_fusion 包(单一工具实现) │
│ server.py (FastMCP 实例) │
│ ├── Stdio 形态: mcp.run() │
│ └── Web 形态: FastAPI(serve.py) │
│ /mcp (POST, streamable HTTP) │
│ (仅 API,无内置后台线程) │
└───────────────┬──────────────────────────────────────┘
│ @mcp.tool 注册的工具(177 个)
┌───────────────┼──────────────────────────────────────┐
│ tools/ (28 个工具模块文件) → analysis/ + data/sources/ + shared/ │
└───────────────┬──────────────────────────────────────┘
│ 数据获取 / 计算 / 落库
┌───────────────┴──────────────────────────────────────┐
│ 外部数据源 (akshare/NBS/东方财富/新浪/同花顺/申万/ │
│ FRED/WB/OKX/Binance/SGE/99qh/财新/政策爬虫/雪球) │
│ 本地持久层 (SQLite 多库 + diskcache 派生缓存) │
└──────────────────────────────────────────────────────┘模块分层(详见 AGENTS.md 架构边界):
tools/— 工具层:每个@mcp.tool函数即一个对外能力,参数用 PydanticField描述analysis/— 计算引擎层:周期引擎(基钦/朱格拉/库兹涅茨/康波)、行业轮动、个股筛选、宏观data/sources/— 数据源层:NBS 客户端、行情采集器、市场桥接(DB-first)、本地爬虫shared/— 跨工具复用:缓存、相关性/因果/GARCH 分析、图表工具、数据库辅助、频谱cache.py/freshness.py— 缓存与数据新鲜度(见 §6)prompts.py/resources.py/server.py— MCP 协议层(7 个 SOP 提示词 / 14 个资源 / 服务器实例)
4. 能力清单(177 个 MCP 工具,28 个工具模块 + 周期子模块)
工具名经
python -m deep_fusion inspect实测(2026-08-30)。每个模块为一个能力板块;括号内为@mcp.tool名。
4.1 工具模块一览(按文件)
模块 | 工具数 | 能力板块 / 关键工具 |
| 7 | 个股基础: |
| 1 |
|
| 7 | 财报/新闻: |
| 6 | 诊断/回测: |
| 1 |
|
| 1 |
|
| 20 | 行业全栈:分类/行情/估值/资金流/申万三级树(31/131/336)·成分·日报表 / 日采集·查询 / 主题(相关性聚类+动量+资金流 / DCC-GARCH / Granger 因果+龙头识别) / 现货(99qh) / 财新指数 / FF 因子 |
| 11 | 行情面板: |
| 3 | 公共行情库读写(DB-first, |
| 3 | 快照: |
| 13 | 宏观:GDP/工业增加值 / CPI·PPI / PMI / M2·社融·LPR·失业率·进出口 / 库存周期 / 固定资产投资 / 全球 PMI(DB-first 增量更新) |
| 16 + 6 | 四周期定位(基钦/朱格拉/库兹涅茨/康波)+ |
| 7 | 贵金属:SGE 现货 / 国际金银 / ETF 持仓 / COMEX 库存 / 基差 / 基准价 / 综合诊断 |
| 4 | 期货:主力合约 / 仓单库存 / 期现基差 / 机构持仓排名 |
| 4 | 债券/期权/美股: |
| 2 | 外汇: |
| 9 | 加密:BTC/ETH 行情+技术指标 / 合约多空比 / 恐惧贪婪指数( |
| 9 | 基金:信息/净值/持仓/排名/债持/行业配置/风险收益/盈利概率/资产配置 |
| 3 | 模拟持仓:增/查/图 |
| 1 |
|
| 9 | 政策:6 大官网采集(国务院/央行/财政部/发改委/统计局/外管局) → |
| 4 | 连板:扫描 / 最新 / 历史 / 校准(落 |
| 4 | 题材→个股映射: |
| 9 | 投研日历:采集/刷新/种子 + |
| 4 | 调度报告查看(四区): |
| 7 | 管家长期记忆: |
| 2 | 频谱周期检测: |
| 4 | 国际/跨市场: |
注:
event_calendar.py未直接列入_TOOL_MODULES,但被reports_view.py导入、作为副作用注册,其 9 个工具实际可用。周期图表/扩展数据工具定义于analysis/macro/cycles/dispatch.py(被cycles.py引用)。
4.2 按投研层次的能力域映射
能力域 | 主要模块 |
行情与数据底座 |
|
个股研究(基本面/技术/事件/诊断) |
|
行业与板块 |
|
宏观与经济指标 |
|
经济周期 |
|
大宗商品(贵金属/期货/现货) |
|
债券与期权 |
|
外汇 |
|
加密资产 |
|
基金 |
|
资产配置与组合 |
|
政策研究 |
|
资金·情绪·舆情 |
|
主题投资 |
|
投研日历 |
|
管家长期记忆 |
|
调度报告 |
|
缓存与运维 |
|
4.3 资源(14 个 skill://investment/*)
fundamental: internal-inspection · industry-comparison · quality-assessment
sentiment: institutional-behavior · public-opinion · market-trading · alternative-nbs_dictionary
cycle: kitchin-cycle · juglar-cycle · positioning-logic
integration: analysis-path · decision-framework
visualization: core-formula · chart-specs这些资源是投研方法论/SOP 知识,被 AI 推理时作为背景框架调用(对应
agents/下的 SOP 技能)。
4.4 提示(7 个 SOP)
analyze-stock-full(个股全景) · analyze-financial-quality(财务质量) · analyze-industry-position(行业地位) · analyze-cycle-position(周期位置) · generate-investment-charts(生成图表) · quick-health-check(快速体检) · full-investment-report(完整投研报告)
5. 数据层与落盘位置
数据按"原始数据(Actual)永不过期、增量追加;处理/信号数据(Derived)版本号锁定 + TTL"分层(见 §6)。
库 / 缓存 | 路径 | 性质 | 主要写入方 |
|
| 业务库 |
|
|
| 业务库 |
|
|
| Actual 永久库 |
|
|
| Actual 永久库 |
|
|
| 业务库 |
|
|
| Actual 永久库 |
|
|
| Actual 永久库(FRED/世界银行/周期原始序列) |
|
|
| Derived/通用 |
|
派生 diskcache |
| Derived |
|
后端内存 L1 |
| Derived(热数据,重启即清) |
|
运维红线:
cycle_cache.db/industry_data.db/market_data.db等 Actual 库不可整体删除——否则丢失增量基线,逼全量重拉(NBS 有频率限制)。清缓存只清派生 diskcache + 对应脏表 + 重启后端(见 §8)。
6. 缓存与数据新鲜度机制
核心原则:原始数据(Actual)永不过期,处理/信号数据(Derived)需新鲜度机制。管理模块 deep_fusion/shared/freshness.py(DATA_CLASSIFICATION 注册表)。
派生缓存(CacheKey):键名内嵌版本号。改算法逻辑时必须 +1 版本号,旧缓存自动失效,否则前端会一直看到旧数据。当前版本锁(2026-08):
康波:
kondratiev_cyclev3 /data_kondratievv5 /cycle_collectv3基钦:
data_kitchinv2;朱格拉:data_juglarv2;库兹涅茨:data_kuznetsv2扩展序列:
data_*_extendedv1;cycle_nestingv4版本号变更须同步登记到
freshness.py的DATA_CLASSIFICATION。
TTL 分级:轻量 1h/1d,中量 7d/30d,重量 1d/7d。
增量更新:Actual 库从"DB-first 永不过期"升级为"DB-first +
needs_incremental_update()检查";间隔按频率分级(实时 5min / 日频 4h / 月频 3d / 季频 15d / 年频 60d),用INSERT OR REPLACE只追加新日期不删旧行。
涉及周期相位/信号公式/阈值/数据源/置信度的计算定义享有最高保护优先级,重构不得改动(见
AGENTS.md红线)。
7. API 契约(前端消费方式)
前端看板已独立为
deepfusion-webui模块(见其仓库 README),本仓库只提供 HTTP API。
JSON-RPC 风格调用:前端
services/mcp.js以POST /api/tools/call({name, arguments})调用工具,GET /api/tools/list列出全部工具。面板deepfusion-desktop与 webui 均消费此接口(默认http://localhost:5173)。MCP 协议入口:
deep-fusion --http额外在/mcp暴露标准 MCP streamable-HTTP,供 Claude / Cursor 等 MCP 客户端接入。采集与 API 解耦:看板的"每日新鲜"数据由独立调度器
deep-fusion-collect周期性填充(写入data/*.db与派生缓存);API 进程本身不负责定时任务。若采集未跑,看板展示的是上次采集的快照,而非实时失效。调度方式见 §9。附加路由:
/api/butler/*(管家记忆 CRUD/导入导出)、/api/model-config(运行时模型配置)、/api/logs(运行时日志)、/metrics(Prometheus)。
8. 运维、健壮性约束与常见坑
8.1 启动 / 重启
API 服务(面板 / webui 消费):
uv run python serve.py(端口 5173,纯/api/*,无内置后台线程)。MCP 协议服务:
uv run deep-fusion --http --host 0.0.0.0 --port 5173(暴露/mcp)。后台采集:由
deep-fusion-collectCLI 单次执行,外部调度(cron / systemd timer / docker sidecar)周期触发。前端(webui / desktop panel)由各自独立模块启动,详见对应仓库 README。
8.2 健壮性硬约束(定时任务/后台线程 import 的模块)
logging_config.py:原无条件import structlog,环境缺则整个 serve 进程起不来 → 已加降级标准 logging。nbs_client.py:_NbsClient单例缓存/索引 JSON 原裸读,损坏即崩 → 已加 try/except + 原子写。任何被后台线程 import 的模块,顶层依赖必须有降级保护;读缓存/索引 JSON 必须 try/except,禁止裸
json.load(read_text)。
8.3 stdio 日志污染(critical)
deep_fusion/__init__.py 的 main() 各入口(含 stdio mcp.run())必须调 configure_logging(),日志只走 stderr/文件。否则 structlog 默认 PrintLogger 打 stdout 会破坏 stdio 协议流,e2e 测试 JSONDecodeError。
8.4 代理
东方财富(经 akshare)/ 同花顺(经 akshare)/ 雪球 等需 HTTP 代理(推荐 Clash Verge 混合端口
7897)。serve.py默认设HTTP(S)_PROXY=127.0.0.1:7897,并在NO_PROXY强制直连:申万、同花顺、新浪、雪球、巨潮、国家统计局 stats.gov.cn。境内源(申万/同花顺/新浪/雪球/巨潮/NBS)直连不经代理,代理不可达时不致命;腾讯 gtimg 行情直连始终可用。
8.5 清缓存 SOP(三层都要动,否则仍返旧值)
派生 diskcache:
rm -rf ~/.cache/deep_fusion与rm -rf data/cacheActual 脏表(只清脏表):
from deep_fusion.shared.cycle_db import clear; clear("<indicator>")后端内存 L1:重启后端
9. 测试与开发
# 依赖安装(uv)
uv sync
cp .env.example .env # 配置代理等
# 启动 MCP(Stdio)
uv run python -m deep_fusion
uv run python -m deep_fusion --inspect # 查看已注册工具/资源/提示词(实测 177/14/7)
# 启动 MCP HTTP API(端口 5173,纯 API,无后台采集)
uv run deep-fusion --http --host 0.0.0.0 --port 5173
# 或直接用便捷脚本(含 butler 记忆路由)
uv run python serve.py
# 后台采集(独立运行,由外部调度触发;不加 while True 常驻)
uv run deep-fusion-collect --kind warmup # 预热周期缓存
uv run deep-fusion-collect --kind daily # 每日数据采集
uv run deep-fusion-collect --kind all # 全部依次执行一次
# Docker 部署(API + 采集 sidecar 分离)
docker compose up -d deep-fusion # 仅 API
docker compose run --rm collector # 触发一次采集(可用 cron/systemd timer 周期调用)
# 初始化本地数据资产(可选;scripts/ 从源仓库取,或按需自建)
uv run python scripts/init_data.py # 若 scripts/ 未随仓库分发,可忽略此步
# 后端测试(pytest)
uv run pytest tests/ -v
# 语法检查
uv run python -m compileall .测试覆盖:
cache/correlation/industry_collector/industry_sw/policy_collector/market_*/reports_store/server/limit_up/calibrated_prob/chart_helpers/shared等。测试导入规范:
CacheKey从deep_fusion.cache导入(不在顶层包);load_portfolio/save_portfolio在deep_fusion/shared/utils.py;industry.py工具参数用_val()解包FieldInfo(兼容 MCP 框架与直接 Python 调用)。
10. 目录结构
DeepFusion/
├── deep_fusion/ # 主包(单一工具实现)
│ ├── __init__.py # 入口 + main() + --inspect + lazy import + configure_logging
│ ├── __main__.py # python -m deep_fusion
│ ├── server.py # FastMCP 实例 + 决策树 INSTRUCTIONS
│ ├── serve.py # Starlette Web 服务(5173,/api/*,无内置后台线程)
│ ├── cache.py # 双层缓存 L1 内存/L2 磁盘 + CacheKey 版本锁
│ ├── freshness.py # 数据分类注册表 + 新鲜度判定
│ ├── metrics.py / logging_config.py
│ ├── prompts.py / resources.py
│ ├── analysis/ # 计算引擎
│ │ ├── engine.py # CycleEngine 核心(IndicatorDef.fetch + 增量更新)
│ │ ├── kondratiev.py / juglar.py / kuznets.py / kitchin.py
│ │ ├── industry/rotation.py
│ │ ├── stock/screener.py
│ │ └── macro/cycles/ # engine.py + dispatch.py(chart_*/data_* 工具定义处)
│ ├── data/sources/ # 数据源层
│ │ ├── nbs_client.py # 国家统计局流式 API(_NbsClient 单例 + 8 fetch)
│ │ ├── industry_collector.py / market_collector.py / market_bridge.py
│ │ ├── fred.py / world_bank.py / data_lake.py
│ │ ├── registry.py # 数据源优先级登记(tdx/tencent/sina/ths/eastmoney/akshare/scrapers/xueqiu)
│ │ └── scrapers/ # 本地采集工具包(监管/财联社/新闻/热搜)
│ ├── shared/ # 跨工具复用
│ │ ├── chart_helpers.py / phase_utils.py
│ │ ├── correlation.py / dcc_garch.py / causality.py / network_analysis.py
│ │ ├── industry_db.py / cycle_db.py / policy_db.py
│ │ ├── spectral.py / indicators.py / normalize.py / schema.py
│ │ ├── request.py / utils.py(ak_cache + EM 回退)
│ └── tools/ # 28 个工具模块文件(177 @mcp.tool)
├── agents/skills/ # 投研 SOP 技能(adversarial-review / cycle-allocator / ...)
├── references/ # 投研参考文档
├── tests/ # 测试文件
├── scripts/ # 可选辅助脚本(calendar_collect / report_writer / init_data / 健康检查等,从源仓库取)
├── logs/ # 运行日志 + API 健康报告(运行时生成)
├── Dockerfile / docker-compose.yml
├── smithery.yaml / server.json / pyproject.toml / uv.lock
└── README.md / AGENTS.md前端已独立:React 看板在
deepfusion-webui仓库;桌面面板在deepfusion-desktop仓库。两者均经本仓库的/api/tools/call消费工具。
11. 扩展指南(给架构师)
新增一个 MCP 工具:
在合适的
tools/<module>.py中写函数,用@mcp.tool装饰(可name=显式命名)。参数用 Pydantic
Field(default, description=...);若可能被框架传FieldInfo默认值,参考industry.py的_val()解包。若该模块未在
deep_fusion/__init__.py的_TOOL_MODULES注册,追加模块名(触发@mcp.tool执行注册)。返回
str:结构化数据用 JSON,表格用 CSV,报告用 text。
新增周期/信号处理算法:
必须保留旧计算的输入/输出接口;改算法时把
freshness.py/ 相关缓存键版本号 +1。涉及相位/信号公式/阈值的改动,执行前列出旧↔新逻辑差异,并
@相关方确认(见AGENTS.md红线)。
新增数据源:
走
data/sources/,优先 DB-first + 增量更新;读缓存/索引 JSON 必须 try/except。实测验证接口可用(项目铁律:引入 URL/接口必须逐一 http 实测,不可盲搬)。
12. 文档索引
文件 | 用途 |
| AI 助手/架构师协作指南:架构边界、红线禁令、缓存版本锁、共享模块契约、工具注册表、扩展 SOP |
| MCP 客户端配置模板 |
| 12 个投研 SOP 技能 |
| 投研参考词典(宏观/中观/微观) |
| 量化分析师 ↔ 代码维护 Agent 跨 Agent 异步交接板 |
| 本项目的深度能力/板块/数据支持分析(与本文档 §4/§5 同源,由 |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
China A-share market data for research, backtesting and AI agents via MCP.
Provide access to Chinese stock market data including historical prices, real-time data, news, and…
Read-only China A-share data for AI agents: market, limit-up, capital flow and disclosures.
Access real-time and historical market data for China A-shares and Hong Kong stocks, along with ne…
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides comprehensive financial research tools including A-share stock analysis, web scraping, entity extraction, and multi-source search capabilities for building intelligent financial research agents.425Apache 2.0
- AlicenseNot gradedqualityFmaintenanceProvides access to Chinese mainland financial data including A-stock quotes, financial statements, industry analysis, and macroeconomics through 42 MCP tools, with automatic data source fallback and no API key required.40Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI assistants to access comprehensive Chinese financial market data including stocks, funds, futures, and economic indicators via AKShare.56MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with direct access to Wind Financial Terminal data, including market data, fundamentals, screening, macro economics, and portfolio management through 23 tools and a resource.4MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chestnutsheep/deepfusion-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server