
如果你正在做组合监控、自动化研究周报,或者想把4小时的手工活压缩到20分钟以内,今天这篇文章正好解决了这个痛点。我会手把手教你用MCP协议让AI直连金融数据库,10分钟配好,从晨间简报到财报预览,全部自动化搞定。文中示例仅用于技术讨论,不构成任何操作建议。
量化策略开发应以学习和技术交流为目的。
本公众号不荐股、不卖课、不承诺收益。
市场有风险,请合法合规投资。
本文开始前,大家可以先看看下面的视频:
我输入【帮我分析英伟达这三年的财务数据】,通过 MCP 协议原生接入 Financial Datasets 金融数据库,24秒后,可一键连接全球 17,000+ 只股票、30+ 年完整财务数据。由Claude 输出五大投研板块:
• 盈利能力穿透
• 核心利润率分析
• 资产负债扫描
• 现金流底稿
• 多维估值建模
从源头打破信息差~ 拒绝 AI 幻觉。
接下来希望大家看完这篇文章后,能对你的投研决策有所帮助。
一、为什么AI金融工具总卡在数据层
这个场景很多人肯定很熟悉:你花了不少精力搭好了一个Claude或者其他AI做的工作流,提示词写得很好,逻辑也对,但一到"获取真实金融数据"这一步就卡住了。要么是数据拿不到,要么是拿到了但格式乱七八糟。
过去我们能选的方案,说实话都很勉强:
| 方案 | 问题 |
|---|---|
三个方案都没有可扩展性,而且随时可能出问题。本质上,这不是智能的问题,是基础设施的问题。
国内金融行业也在积极应对这个痛点。早在去年4月,盈米基金发布了业内首个财富管理MCP Server,把基金数据和投顾能力通过MCP协议标准化封装,打通了AI大模型获取金融数据与服务的桥梁。这说明MCP在金融领域正在从实验性功能快速走向主流应用。
二、MCP协议到底是什么
MCP的全称是Model Context Protocol(模型上下文协议),由Anthropic公司开发并开源。简单来说,它是一套标准化的协议,让AI模型能用统一的方式访问各种外部数据源和工具。
你可以把MCP想象成AI世界的USB-C接口:不管你接什么设备,标准统一,即插即用。
MCP在金融领域的核心价值在于三个方面:
| 特性 | 说明 |
|---|---|
三、FMP MCP Server能做什么
Financial Modeling Prep(简称FMP)推出了官方的MCP服务器,把它的整个金融数据库直接暴露给Claude。没有中间件,没有自定义连接器,没有解析逻辑,Claude直接读取可用工具列表,需要什么数据就调用什么工具,返回结构化的结果。
打个比方,这就像一个资深分析师在彭博终端上查询数据,但你不需要每年花24000美元买硬件。
FMP的MCP Server覆盖的数据范围非常广泛:
| 数据类别 | 具体内容 |
|---|---|
一个服务器,一次配置,你研究工作流需要的所有数据就全了。
四、10分钟完成配置
下面是完整的搭建步骤,跟着做就行,零代码基础也能搞定。
第一步:获取FMP API密钥
前往Financial Modeling Prep官网注册账号,在控制台获取你的API密钥。免费套餐覆盖了足够多的接口,完全可以用来测试和搭建核心工作流。

第二步:安装MCP服务器
打开终端,运行以下命令:
npm install -g @financialmodelingprep/mcp-server第三步:配置Claude Desktop
打开你的claude_desktop_config.json文件,添加以下配置:
{"mcpServers": {"fmp": {"command": "npx","args": ["-y", "@financialmodelingprep/mcp-server"],"env": {"FMP_API_KEY": "你的API密钥"}}}}
~/.config/claude/,Windows一般在%APPDATA%\Claude\。第四步:测试连接
直接用自然语言提问:
Claude会自动调用FMP工具,获取实时数据,返回结构化的回答。不用复制粘贴,不用手动查数据。
到这一步,基础配置就完成了。如果你只想要一个交互式的金融问答助手,到这里就已经可以用了。
五、三个实战系统,本周就能搭好
下面是三个实用系统,从简单到进阶,把时间节省的效果真正落到实处。
系统一:晨间组合简报(每天节省15分钟)
很多朋友每天早上要打开好几个Tab,挨个看自己关注的标的。用了MCP之后,一个提示词全搞定:
Claude查询FMP,对比各持仓,给你一份排好序的简报。以前要20分钟的切换操作,现在90秒搞定。
| 对比项 | 传统方式 | MCP方式 |
|---|---|---|
系统二:财报季预研自动化(每家公司节省2小时)
财报发布前,大多数研究者每次都要拉同样的数据:营收趋势、利润率变化、分析师共识、同比对比。Claude一条指令全搞定:
不到一分钟,你就拿到了一份结构化的财报预览。
基于这个系统,你还可以进一步拓展:
批量预研模板:为你的整个关注列表生成财报前简报。
预期偏差预警:当某公司预期与共识偏差超过10%时自动提醒。
跨行业对比:在财报季前进行行业间横向分析。
系统三:自然语言基本面筛选
传统的选股工具是固定的,只能看工具设计好的维度。用FMP MCP加上Claude,你可以用自然语言筛选:
Claude自动把这个需求翻译成FMP查询,汇总结果,给你一个干净的列表。你自己的筛选器,不用写SQL,不用配置过滤条件。
六、用Python搭建自动化流水线
如果你需要自动化调度而不是交互式问答,FMP的REST API可以和MCP层并行使用,集成到Python工作流里。
基础数据拉取
import requestsAPI_KEY = "你的API密钥"BASE_URL = "https://financialmodelingprep.com/api/v3"def get_income_statement(ticker: str, limit: int = 4) -> list:# 获取利润表数据url = f"{BASE_URL}/income-statement/{ticker}"params = {"apikey": API_KEY, "limit": limit}response = requests.get(url, params=params)return response.json()def get_ratios(ticker: str) -> dict:# 获取TTM财务比率url = f"{BASE_URL}/ratios-ttm/{ticker}"params = {"apikey": API_KEY}response = requests.get(url, params=params)return response.json()# 拉取最近4个季度的财报+当前财务比率ticker = "AAPL"income = get_income_statement(ticker)ratios = get_ratios(ticker)print(f"最近季度营收: {income[0]['revenue']:,}")print(f"净利润率: {ratios[0]['netProfitMarginTTM']:.2%}")print(f"市盈率(TTM): {ratios[0]['peRatioTTM']:.2f}")
运行后的输出示例:
有了这个基础,你可以进一步搭建:
自动周报:定时生成报告推送到Slack或邮件。
实时看板:按计划刷新数据的组合监控面板。
阈值提醒:当某个指标突破设定阈值时自动通知。
七、搭建组合监控看板
这一步把整条链路变成一个真正省时间的系统。目标是:一个HTML文件,在任何浏览器里打开,就能看到你的组合核心指标,每天早上自动刷新,不用手动操作。
整体架构

三个模块各司其职:
| 模块 | 职责 | 适用场景 |
|---|---|---|
第一步:定义你的看板指标
选择5-8个真正驱动你决策的指标,不要贪多。一个好的起步配置:
# 你的组合配置PORTFOLIO = {"AAPL": 15, # 持仓数量"MSFT": 10,"NVDA": 8,"AMZN": 12,}# 需要监控的指标METRICS = ["price", # 当前价格"changesPercentage", # 日内涨跌幅"pe", # 市盈率"eps", # 每股收益"52WeekHigh", # 52周最高价"52WeekLow", # 52周最低价]
第二步:批量拉取所有持仓数据
import requestsimport osAPI_KEY = os.getenv("FMP_API_KEY")BASE_URL = "https://financialmodelingprep.com/api/v3"def get_quotes(tickers: list) -> list:# 批量获取多个标的的实时报价symbols = ",".join(tickers)url = f"{BASE_URL}/quote/{symbols}"response = requests.get(url, params={"apikey": API_KEY})return response.json()portfolio_tickers = list(PORTFOLIO.keys())quotes = get_quotes(portfolio_tickers)
第三步:计算组合价值和生成报告
from datetime import datetimedef build_report(quotes: list, portfolio: dict) -> dict:report = {"date": datetime.now().strftime("%Y-%m-%d%H:%M"),"positions": [],"total_value": 0,"total_daily_change": 0,}for q in quotes:ticker = q["symbol"]shares = portfolio.get(ticker, 0)value = q["price"] * sharesdaily_pnl = q["change"] * sharesreport["positions"].append({"ticker": ticker,"price": q["price"],"change_pct": q["changesPercentage"],"pe": q.get("pe", "N/A"),"shares": shares,"value": round(value, 2),"daily_pnl": round(daily_pnl, 2),})report["total_value"] += valuereport["total_daily_change"] += daily_pnlreport["total_value"] = round(report["total_value"], 2)report["total_daily_change"] = round(report["total_daily_change"], 2)return reportreport = build_report(quotes, PORTFOLIO)
第四步:导出为HTML看板
def export_html(report: dict, filename: str = "dashboard.html"):rows = ""for p in report["positions"]:color = "#22c55e" if p["daily_pnl"] >= 0 else "#ef4444"sign = "+" if p["daily_pnl"] >= 0 else ""rows += f"""<tr><td><strong>{p['ticker']}</strong></td><td>{p['price']}</td><tdstyle="color:{color}">{p['change_pct']:.2f}%</td><td>{p['pe']}</td><td>{p['shares']}</td><td>{p['value']}</td><tdstyle="color:{color}">{sign}{p['daily_pnl']}</td></tr>"""html = f"""<!DOCTYPE html><html><head><title>组合监控看板</title><style>body {{ font-family: sans-serif; padding: 20px; }}table {{ width: 100%; border-collapse: collapse; }}th, td {{ padding: 10px; border-bottom: 1px solid#eee; }}th {{ background:#667eea; color:#fff; }}.total {{ margin-top: 16px; font-size: 18px; font-weight: bold; }}</style></head><body><h1>组合监控看板 — {report['date']}</h1><table><tr><th>标的</th><th>价格</th><th>涨跌</th><th>市盈率</th><th>持仓</th><th>市值</th><th>日内盈亏</th></tr>{rows}</table><divclass="total">组合总值: {report['total_value']} |今日盈亏: {report['total_daily_change']}</div></body></html>"""with open(filename, "w") as f:f.write(html)print(f"看板已保存: {filename}")export_html(report)
用浏览器打开dashboard.html,你的组合简报就出来了。配合定时任务,每天早上7:30自动运行,等你倒好咖啡,报告已经准备好了。
八、定时调度与安全实践
自动化流水线要真正跑起来,定时调度和密钥安全是两个绕不开的话题。
定时调度
用Python的schedule库非常简单:
import scheduleimport timedef run_morning_brief():# 你的FMP数据拉取+报告生成逻辑print("晨间简报已生成。")# 每天早上7:30执行schedule.every().day.at("07:30").do(run_morning_brief)while True:schedule.run_pending()time.sleep(60)
也可以用系统级的cron(macOS/Linux)或任务计划程序(Windows)来做调度,更稳定可靠。
密钥安全
API密钥绝对不要硬编码在代码里。正确做法是存为环境变量:
# 终端中设置环境变量export FMP_API_KEY="你的密钥"# Python中读取import osAPI_KEY = os.getenv("FMP_API_KEY")
.gitignore忽略包含密钥的配置文件,或使用.env文件+python-dotenv来管理。九、老余的实战经验总结
最后分享几条真金白银换来的经验,帮你少走弯路。
从一个工作流开始,不要一上来就搞三个。最常见的错误是第一天就想把所有事情自动化。先选你最痛的那个环节:对大多数朋友来说是晨间数据查询,先把这一条做到丝滑。跑稳了再扩展。
用具体代码提问,不要问模糊问题。"苹果怎么样"给不了你有价值的输出。"获取AAPL当前的市盈率、52周高低区间和Q2分析师共识"才能得到结构化的、可操作的数据。
链式提问,不要堆砌。与其一条提示词让AI做所有事情,不如分步走:第一步拉数据,第二步做分析,第三步格式化输出。这样模型注意力更集中,出了错也好排查。
定时任务固定时间运行。用Python流水线的话,建议设在早上7:30,开盘前刚好拿到最新数据。
免费套餐先跑通,遇到瓶颈再升级。FMP的免费套餐覆盖了行情、财报和比率等常用接口。只有当你需要高频实时数据、小盘股或海外标的、或者机构持仓等高级接口时,才需要考虑付费套餐。
十、常见问题
问:不会写代码能用FMP MCP吗?
完全可以。Claude Desktop的设置只需要编辑一个JSON配置文件,不涉及任何编程。配好之后用自然语言就能查询金融数据。Python示例是给想搭自动化流水线的朋友准备的,属于可选进阶。
问:FMP MCP收费吗?
FMP有免费套餐,覆盖了足够多的接口,完全可以测试和搭建核心工作流。付费套餐开放更高的请求频率、更多历史数据和机构持仓等高级接口。
问:REST API和MCP有什么区别?
REST API需要你自己写对接代码:认证、请求格式化、响应解析。MCP把同样的接口暴露成Claude可以直接调用的工具,不需要写任何中间代码。对于交互式场景和自然语言查询,MCP的搭建速度和扩展性都明显更优。
问:除了Claude Desktop,还能用在什么地方?
同样的MCP服务器配置也可以用在Claude Code里,在开发环境中直接引用FMP数据,不需要切换上下文。Cursor、Cline等支持MCP的客户端也已经在2026年初跟进支持。
问:数据时效性如何?
付费套餐提供低延迟的实时行情。历史数据、财报和比率在每次财报发布后更新。如果是日内高频决策,建议与券商的实时行情做交叉验证。
文章总结
这篇文章从"AI+金融"最核心的痛点:数据管道入手,系统讲解了如何通过MCP协议让Claude直连Financial Modeling Prep的金融数据库,实现零代码的自然语言查询,以及如何用Python构建自动化投资研究流水线。无论是晨间组合简报、财报季前预研,还是基本面筛选,都可以从数小时的手工劳动压缩到几分钟内完成。
MCP协议是AI连接外部数据的标准桥梁,类似设备界的USB-C接口。
FMP MCP Server提供实时行情、财报、估值指标、加密货币等全品类金融数据。
10分钟即可完成Claude Desktop的MCP配置,无需编写任何代码。
三个实战系统:晨间组合简报、财报预研自动化、自然语言基本面筛选。
Python流水线可实现定时调度、HTML看板、消息推送等自动化闭环。
风险提示:本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。
版权声明:本文为原创内容,转载请注明出处。
#MCP协议 #AI金融 #Claude #金融数据 #FMP #量化研究 #数据管道 #投资自动化 #Python #投研效率 #大模型应用 #金融建模



夜雨聆风