如果你正在做组合监控、自动化研究周报,或者想把4小时的手工活压缩到20分钟以内,今天这篇文章正好解决了这个痛点。我会手把手教你用MCP协议让AI直连金融数据库,10分钟配好,从晨间简报到财报预览,全部自动化搞定。
文中示例仅用于技术讨论,不构成任何操作建议。量化策略开发应以学习和技术交流为目的。

我输入「帮我分析英伟达这三年的财务数据」,通过 MCP 协议原生接入 Financial Datasets 金融数据库,24秒后,可一键连接全球 17,000+ 只股票、30+ 年完整财务数据。由Claude 输出五大投研板块:
• 盈利能力穿透
• 核心利润率分析
• 资产负债扫描
• 现金流底稿
• 多维估值建模
从源头打破信息差~ 拒绝 AI 幻觉。接下来希望大家看完这篇文章后,能对你的投研决策有所帮助。

一、为什么AI金融工具总卡在数据层
这个场景很多人肯定很熟悉:你花了不少精力搭好了一个Claude或者其他AI做的工作流,提示词写得很好,逻辑也对,但一到「获取真实金融数据」这一步就卡住了。要么是数据拿不到,要么是拿到了但格式乱七八糟。
过去我们能选的方案,说实话都很勉强:
| 方案 |
问题 |
| 爬取雅虎财经 |
随时可能被封、页面结构一变就全崩 |
| 购买付费API |
要从头写对接代码,维护成本高 |
| CSV导出处理 |
全手动,完全没法自动化 |
三个方案都没有可扩展性,而且随时可能出问题。本质上,这不是智能的问题,是基础设施的问题。
就像你买了一辆性能很好的车,但路还没修好,再强的动力也跑不起来。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覆盖的数据范围非常广泛:
| 数据类别 |
具体内容 |
| 行情数据 |
实时和历史股票价格 |
| 财务报表 |
利润表、资产负债表、现金流量表 |
| 估值指标 |
财务比率、估值倍数 |
| 预期数据 |
财报日历、分析师预期 |
| 市场概览 |
行业表现、市场活跃标的 |
| 其他资产 |
加密货币、外汇、大宗商品 |
一个服务器,一次配置,你研究工作流需要的所有数据就全了。
关键优势: FMP MCP把「数据获取」这件事从「写代码对接」变成了「自然语言提问」。同样的数据,REST API需要你写认证、格式化请求、解析响应,而MCP让Claude自己搞定这些步骤。
四、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密钥"
}
}
}
}
注意: 配置完成后必须重启Claude Desktop,FMP的工具才会自动出现在界面中。配置文件的位置因操作系统不同:macOS一般在 ~/.config/claude/,Windows一般在 %APPDATA%\Claude\。
第四步:测试连接
直接用自然语言提问:
"英伟达公司当前的市盈率是多少?和行业平均相比如何?"
Claude会自动调用FMP工具,获取实时数据,返回结构化的回答。不用复制粘贴,不用手动查数据。
到这一步,基础配置就完成了。如果你只想要一个交互式的金融问答助手,到这里就已经可以用了。
五、三个实战系统,本周就能搭好
下面是三个实用系统,从简单到进阶,把时间节省的效果真正落到实处。
系统一:晨间组合简报(每天节省15分钟)
很多朋友每天早上要打开好几个Tab,挨个看自己关注的标的。用了MCP之后,一个提示词全搞定:
获取AAPL、MSFT、NVDA、AMZN的当前价格、日内涨跌幅和市盈率。然后汇总哪个标的相对52周高低区间的偏离最大,标出今天跌幅超过2%的标的。
Claude查询FMP,对比各持仓,给你一份排好序的简报。以前要20分钟的切换操作,现在90秒搞定。
| 对比项 |
传统方式 |
MCP方式 |
| 数据获取 |
手动打开6+个页面 |
一条提示词自动拉取 |
| 数据对比 |
心算或Excel |
Claude自动计算和排序 |
| 异常标记 |
容易遗漏 |
自动标出超阈值变动 |
| 耗时 |
约20分钟 |
约90秒 |
系统二:财报季预研自动化(每家公司节省2小时)
财报发布前,大多数研究者每次都要拉同样的数据:营收趋势、利润率变化、分析师共识、同比对比。Claude一条指令全搞定:
对于TSLA:获取最近4个季度的营收、毛利率和每股收益。与分析师共识预期进行对比,标出实际值与预期偏差最大的项目。
不到一分钟,你就拿到了一份结构化的财报预览。
基于这个系统,你还可以进一步拓展:
- 批量预研模板:为你的整个关注列表生成财报前简报。
- 预期偏差预警:当某公司预期与共识偏差超过10%时自动提醒。
- 跨行业对比:在财报季前进行行业间横向分析。
系统三:自然语言基本面筛选
传统的选股工具是固定的,只能看工具设计好的维度。用FMP MCP加上Claude,你可以用自然语言筛选:
在标普500中找出市盈率低于15、负债权益比低于0.5、营收同比增长超过10%的公司,按自由现金流收益率从高到低排序。
Claude自动把这个需求翻译成FMP查询,汇总结果,给你一个干净的列表。你自己的筛选器,不用写SQL,不用配置过滤条件。
实战建议: 提问时尽量用具体的股票代码,不要用模糊的描述。「苹果怎么样」会给你一个泛泛的总结,而「获取AAPL当前的市盈率、52周高低区间和Q2分析师共识」则会给你结构化的、可操作的数据。代码越具体,输出越精准。
六、用Python搭建自动化流水线
如果你需要自动化调度而不是交互式问答,FMP的REST API可以和MCP层并行使用,集成到Python工作流里。
基础数据拉取
import requests
API_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}")
运行后的输出示例:
最近季度营收: 124,300,000,000
净利润率: 23.97%
市盈率(TTM): 28.43
有了这个基础,你可以进一步搭建:
- 自动周报:定时生成报告推送到Slack或邮件。
- 实时看板:按计划刷新数据的组合监控面板。
- 阈值提醒:当某个指标突破设定阈值时自动通知。
七、搭建组合监控看板
这一步把整条链路变成一个真正省时间的系统。目标是:一个HTML文件,在任何浏览器里打开,就能看到你的组合核心指标,每天早上自动刷新,不用手动操作。
整体架构

三个模块各司其职:
| 模块 |
职责 |
适用场景 |
| Claude Desktop+MCP |
交互式查询和一次性分析 |
临时提问、深度研究 |
| Python流水线 |
定时调度、自动化数据拉取 |
每日简报、定时报告 |
| FMP |
所有金融数据的唯一来源 |
全场景数据支撑 |
第一步:定义你的看板指标
选择5-8个真正驱动你决策的指标,不要贪多。一个好的起步配置:
# 你的组合配置
PORTFOLIO = {
"AAPL": 15, # 持仓数量
"MSFT": 10,
"NVDA": 8,
"AMZN": 12,
}
# 需要监控的指标
METRICS = [
"price", # 当前价格
"changesPercentage", # 日内涨跌幅
"pe", # 市盈率
"eps", # 每股收益
"52WeekHigh", # 52周最高价
"52WeekLow", # 52周最低价
]
第二步:批量拉取所有持仓数据
import requests
import os
API_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 datetime
def 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"] * shares
daily_pnl = q["change"] * shares
report["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"] += value
report["total_daily_change"] += daily_pnl
report["total_value"] = round(report["total_value"], 2)
report["total_daily_change"] = round(report["total_daily_change"], 2)
return report
report = 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>
<td style="color:{color}">{p['change_pct']:.2f}%</td>
<td>{p['pe']}</td>
<td>{p['shares']}</td>
<td>{p['value']}</td>
<td style="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>
<div class="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 schedule
import time
def 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 os
API_KEY = os.getenv("FMP_API_KEY")
安全提醒: 任何时候都不要把API密钥提交到Git仓库。用 .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看板、消息推送等自动化闭环。
如果你对这种从数据管道底层解决AI落地难题的实战技术文档感兴趣,云栈社区还有更多深度案例可以参考。
风险提示: 本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。
版权声明: 本文为原创内容,转载请注明出处。
MCP协议 #AI金融 #Claude #金融数据 #FMP #量化研究 #数据管道 #投资自动化 #Python #投研效率 #大模型应用 #金融建模

请用您发财的手:分享、推荐和♥,谢谢!
