自然语言查询股票行情:DolphinDB MCP 让 AI 真正读懂金融数据
发布时间:2026/9/10 5:45:01 作者:尧图编辑部 阅读量:1,286

如果你平时会看股票或者多少接触过量化投研应该对“让 AI 帮你分析股票”这件事不陌生。但真正上手之后你会发现一个尴尬现象让 AI 聊行情逻辑它能说得头头是道真要它拉出某只标的的历史日线、算个 MA5 和 MA20 有没有金叉、统计一下板块涨跌分布它就只能干瞪眼——因为它手上根本没有真实数据。我最近在开源社区刷到 DolphinDB 股票分析 MCP 这个项目恰好把这层窗户纸捅破了它把高性能时序数据库 DolphinDB 接进了 MCP 协议AI 能直接通过自然语言查询真实行情、跑技术指标、做统计对比而且项目已经开源。这篇就来聊聊它是什么、怎么部署、实际怎么用以及我踩过的几个坑。1. 这个项目到底解决了什么问题1.1 一句话理解 DolphinDB 股票分析 MCP先拆开两个词。DolphinDB 是专门面向金融场景的高性能分布式时序数据库能存海量行情数据还能直接在库内做并行计算、因子计算。很多量化团队、券商研究所都在用它管理 K 线和逐笔数据。MCP 是 Model Context Protocol 的缩写中文可以理解为“模型上下文协议”核心作用是把大语言模型和外部数据、工具连接起来。有了 MCPAI 不再只能靠训练时学到的知识回答而是可以实时调用数据库、API、计算引擎来获取真实结果。DolphinDB 股票分析 MCP 这个开源项目做的就是一件看似不大但很关键的事写了一个 MCP Server把 DolphinDB 里的数据查询和分析能力封装成 AI 能直接调用的工具。你在对话里说“查一下平安银行最近三十天的收盘价”AI 不是自己编一个数字而是去 DolphinDB 里查真实数据再把结果组织成回答。1.2 传统投研数据流程里最头疼的三件事我自己做投研数据分析时最烦的不是分析本身而是数据获取和清洗。第一数据获取难。完整的行情数据要钱、要渠道免费的往往字段不全、更新不及时。就算拿到数据也要花大量时间做格式对齐、复权处理、异常值清理。第二分析门槛高。有了数据之后想算个均线、波动率得会写 SQL 或者 Python。不夸张地说一个简单的“按行业统计近一年收益率均值”就能难倒不少有投资想法但编程基础薄弱的人。第三AI 和真实数据之间隔着墙。过去用大模型做投研它只能输出通用知识什么叫 PE、什么是 MACD 背离。但你要它分析“手上的股票池哪些最近超跌反弹”它没有你的数据和计算能力只能泛泛而谈。DolphinDB 股票分析 MCP 解决的就是第三件事顺带把第一件和第二件的门槛也降低了一大截。它让 AI 能访问真实数据同时把复杂的库表操作封装成了自然语言任务。1.3 谁适合关注这个项目我实际用下来下面这几类人最值得花时间试一下普通投资者不想学 SQL但希望有个 AI 助手帮自己拉行情、算指标、做简单的多股票对比。量化研究员想把高频的探索性分析交给 AI自己只专注于写策略和研究报告。后端/数据工程师需要在企业内部快速搭建一个“AI 投研助理”原型MCP 这种标准协议能省掉很多定制开发。对 MCP 感兴趣的开发者这个项目的代码结构不复杂很适合作为“如何写一个数据库类 MCP Server”的参考。2. 技术拆解MCP 和 DolphinDB 是怎么配合工作的2.1 MCP 不是某一个产品的私有功能很多人一说 MCP 就想到 Claude Desktop其实 MCP 是 Anthropic 在 2024 年提出的一个开放协议目标是标准化 AI 应用与外部的数据/工具交互。打个比方如果说大模型是一个聪明但双手被绑住的员工MCP 就是一套标准接口让员工能通过这个接口去操作电脑、数据库、API 等各种工具。MCP 的架构里有两个核心角色MCP Server提供数据或工具的一方。比如 DolphinDB MCP 就是一个 Server它告诉 AI“我能查行情、我能算指标”。MCP Client调用工具的一方。Claude Desktop、自研 Agent、部分 IDE 插件都可以充当 Client负责把用户需求转发给合适的 Server。通信方式上MCP Server 支持 stdio 标准输入输出也支持 HTTP/SSE 远程调用。本地部署用 stdio 最简单远程服务用 HTTP 更合适。DolphinDB 股票分析 MCP 我测试时就是在本地起 stdio 服务再通过配置文件让客户端自动拉起。MCP 核心原语有三类Tools工具、Resources资源、Prompts提示词。视听 MCP 项目通常主要使用 Tools也就是说暴露一批可被 AI 调用的函数比如“查询K线”“计算均线”“统计涨跌幅”。每个 Tool 都定义了名称、入参和返回值格式大模型根据用户问题自动决定调用哪些工具、传什么参数。2.2 DolphinDB 在金融数据领域的一席之地DolphinDB 不是普通的关系型数据库它更擅长处理时间序列。股市行情天然就是时序数据每只股票每天/每分钟/每笔都有 timestamp、open、high、low、close、volume。DolphinDB 对这些数据的存储、索引、聚合做了深度优化。它的几个特点我很看重库内并行计算几十只股票、几年日线一条 SQL 就能完成分组聚合不用把数据搬到本地。内置大量金融函数比如 moving 函数族、factor 计算、各种技术指标能直接在数据库层面算完再返回。多语言接口Python、Java、C、C# 都有 API写 MCP Server 很自然。把 DolphinDB 作为 MCP 的数据底座优势在于AI 不需要自己处理大数据量它只需要生成查询逻辑繁重的计算交给数据库两者各干各擅长的部分。2.3 一条完整的请求链路从你发出问题到看到回答链路大概是这样用户输入自然语言 ↓ MCP Client比如 Claude Desktop ↓ 经过协议解析调用对应 Tool MCP ServerDolphinDB Adapter ↓ 执行参数校验、权限校验 DolphinDB执行查询/计算返回结构化结果 ↓ MCP Server 整理结果返回 ↓ 大模型组织语言生成可读的回答/表格/结论这里有个关键点大模型本身不碰你的数据库账号密码它只和 MCP Server 打交道。连接信息、权限控制都在 Server 端配置安全性比让 AI 直接拼 SQL 去连库要可控得多。2.4 为什么这个组合特别适合“普通人 AI 投研”传统方式下想用 DolphinDB 查股票数据你至少要会三件事写 SQL、知道库表结构、会配置数据库连接。MCP 把这些都封装起来了。封装之后的使用体验变成了用户“帮我看看贵州茅台最近五年的年线走势。”AI自动调工具传入股票代码 600519.SH、时间范围“过去五年”、聚合级别“年线”。数据库返回聚合后的 OHLCV 数据AI 再配上简单的趋势解读。整个过程里你不知道也不需要在 SQL 里写group by year(trade_date)这个转换让 AI 在内部完成了。这就是“不懂复杂金融数据也能用”的核心体验。3. 实操从零把 DolphinDB 股票分析 MCP 跑起来3.1 前置环境准备动手之前先确认环境。我自己的测试环境供参考操作系统Ubuntu 22.04Windows 用户用 WSL2 也完全没问题Python3.10DolphinDB社区版 2.00.x官方集成免费版足够测试MCP 客户端我用的是 Claude Desktop后来也跑过自写的 Python MCP ClientDolphinDB 有两种方式准备数据一种是本地安装社区版并导入行情数据另一种是连接已有企业环境。个人测试强烈建议用 Docker 起一个干净还方便删。启动 DolphinDB 服务的命令类似docker run -d -p 8848:8848 dolphindb/dolphindb:latest启动后用浏览器打开http://localhost:8848就能登录 DolphinDB Web 管理界面默认账号admin密码123456。这是官方默认值部署到公网环境前一定要改。3.2 准备测试行情数据DolphinDB 里如果没有数据查来查去都是空。怎么快速搞到一批测试行情数据DolphinDB 自带一个非常实用的能力通过内置 API 请求外部行情源或者用模拟数据生成函数。我先用一个小脚本往库里写入了几只股票最近一年的模拟日线数据。这里给出参考逻辑股票代码600519.SH、000001.SZ、000002.SZ、601318.SH、600036.SH 字段trade_date, open, high, low, close, volume, amount 频率日线 时间跨度最近 250 个交易日写入 DolphinDB 时建议存成分区表按日期分区。日线数据量不大用loadTable(dfs://stock, daily)这种方式建库建表就行。路径和表名先固定下来后面 MCP Server 的默认配置会用到。如果你手上已经有真实行情 CSV 文件也可以用 DolphinDB 的loadText函数导入会比模拟数据更有真实感。3.3 获取并启动 MCP Server项目开源后在 GitHub 上有仓库直接克隆下来git clone 项目地址 cd dolphindb-mcp # 以仓库实际目录名为准 pip install -r requirements.txt其中 MCP Server 的核心逻辑是一个 Python 模块入口文件通常叫做server.py或者dolphindb_mcp.py。启动前先要配置连接参数可以在环境变量里指定export DDB_HOSTlocalhost export DDB_PORT8848 export DDB_USERadmin export DDB_PASSWORD123456 export DDB_DB_PATHdfs://stock export DDB_TABLE_NAMEdaily配置好后先试下手动启动确认能正常连上数据库python server.py看到MCP server running on stdio之类的日志才算启动成功。我第一跑的时候因为 Docker 里的 DolphinDB 还有启动完成才对外暴露端口前端一直报连接超时后来加上了一个“等待就绪”的逻辑才解决。3.4 配置 MCP 客户端以 Claude Desktop 为例需要在客户端配置文件里声明一个 MCP Server。配置大概是{ mcpServers: { dolphindb-stock: { command: python, args: [/path/to/dolphindb-mcp/server.py], env: { DDB_HOST: localhost, DDB_PORT: 8848, DDB_USER: admin, DDB_PASSWORD: 123456, DDB_DB_PATH: dfs://stock, DDB_TABLE_NAME: daily } } } }保存后重启客户端在对话界面应该能看到多了一个工具集标识说明 Server 已被成功加载。如果是自研系统可以用官方提供的 Python SDK 连接from mcp import ClientSession import anyio async def main(): session await ClientSession(...) tools await session.list_tools() for tool in tools: print(tool.name, tool.description)3.5 最小验证问一个“能查库”的问题配置完成后先别急着做复杂的分析问一个必须查数据才能回答的问题来验证链路通没通。我第一个测试问题是“查询 600519.SH 最近 20 个交易日的收盘价并大致判断趋势。”AI 如果配置正确会调工具传参后返回真实数据。我看到返回结果时第一反应是这感觉完全不一样了。之前让 AI 分析个股它所有结论都是背出来的现在它至少能让我知道“数据确实是从库里查出来的并且能按时间排序展示”。4. 真实场景实战让 AI 做基础投研分析4.1 场景一查询 K 线并计算技术指标先用一个简单场景测 K 线查询。输入“查询 600036.SH招商银行最近 60 个交易日的日线数据并计算 MA5 和 MA20判断最近是否出现金叉。”MCP Server 收到请求后会拆成两步查日线数据。调用指标计算工具算均线。数据库里 DolphinDB 计算 MA 可以直接用mavg函数MCP 工具封装后变成了类似这样的调用tool_name: query_kline_with_ma parameter: code: 600036.SH days: 60 window: [5, 20]返回结果会按日期排列并带上 MA5、MA20 两列。AI 拿到数据后在最后 5 个交易日里如果 MA5 从下方穿过 MA20它就会解释为“出现金叉短线动量偏强”。这个能力对验证“AI 会查数也会算数”很关键。4.2 场景二多股票横向对比投研里最常用的不是单看一只票而是对一组股票做横向对比。输入“对比 000001.SZ、000002.SZ、600036.SH、601318.SH 最近一个月涨幅和日均成交量排出强弱顺序。”这个查询用传统 SQL 写并不长但对不会写 SQL 的人来说就是天书。MCP Server 把逻辑封装成一个工具compare_stocks_metricAI 自动构造参数tool_name: compare_stocks_metric parameter: codes: [000001.SZ, 000002.SZ, 600036.SH, 601318.SH] window: 1m metric: [pct_change, avg_volume]数据库返回每只股票的月度收益率、日均成交量AI 再进一步排序、点评。实测下来它对“谁强谁弱”的描述基本准确能作为投研的初筛工具。4.3 场景三让 AI 解释金融指标并给出结论有些时候数据算出来了但用户看不懂指标含义这时候 AI 的知识能力正好补上。我问的是“计算沪深 300 指数近一年的年化波动率解释一下这个指标并结合数值给一个风险评价。”因为库里存的是指数日线MCP Server 先调calculate_volatility工具返回数值AI 再解释年化波动率公式通常是把日收益率标准差乘以一年交易日数量的平方根。假设数据库返回年化波动率 0.18AI 会解释为“该指数年化波动率约 18%属于中等波动水平”如果 0.35则会提示“波动较大仓位管理需要更保守”。这种“数据库算数、大模型解释”的组合正是 DolphinDB MCP 最典型的用法。4.4 场景四生成结构化投研摘要上面几步都跑通后可以让 AI 一次性完成“查数据、分析、写摘要”三合一。输入“帮我生成一份平安银行的投资研究数据摘要包含最新收盘价、近一个月涨跌幅、当前市盈率、相对大盘的超额收益最后给一段 200 字左右的点评。”这条指令会触发多个工具调用查最新收盘价查近一个月涨跌幅查市盈率需要库里扩展基本面表查大盘基准并计算超额收益最后 AI 把数据组织成一段摘要。对我这种喜欢拿数据做基础判断的人很有用相当于一个自言自语版的小研报。5. 踩坑记录与开源项目的现状评价5.1 我在实际操作中遇到的几个问题任何工具都躲不开“实战才见真章”。这几次测试我踩过不少坑挑最有代表性的四个说第一个坑MCP Server 空闲后连接超时。DolphinDB 服务端有连接空闲超时配置MCP Server 如果长时间没有查询再发起请求时会报连接失效。解决思路是每次调用前发一个heartbeat或者连接池里自动重建连接。我自己改配置把超时时间调大同时在 Server 端加了连接失败重试逻辑。第二个坑返回数据太大把大模型上下文“撑爆”。有些请求表面上只问一句话实际可能返回数千条记录比如“把过去三年所有股票日线都拉出来”。MCP Server 如果直接把原始数据全部返回AI 的上下文窗口会被迅速塞满轻则回答质量下降重则直接报错。现在的实践是MCP 工具层强制加入“返回行数上限”默认最多返回几百行超过部分要求 AI 改用聚合查询。同时把返回给大模型的数据尽量压缩成精简的表格而不是原始 JSON 全文。第三个坑权限控制要提前想好。MCP 暴露工具后理论上任何能对话的人都可能让 AI 执行任意查询。如果在企业环境里DolphinDB 连接账号权限过大会有风险。建议给 MCP Server 单独建一个只读账号同时限制可查询的库表范围。我在测试时直接用 admin 无所谓生产环境千万不要这样。第四个坑时间精度问题。DolphinDB 的时间字段可以精确到纳秒日线数据一般是日期精度。但如果表里混有分钟级数据查询时没注意时间条件会出现同一个日期下面几十条记录导致 K 线数据“变胖”。解决方式是明确指定group by的粒度级别或者工具里设置默认日期过滤。5.2 复盘一下这个项目的开源现状与位置从项目热度来看这类“数据库 MCP”的组合在近期关注度很高DolphinDB 本身在量化领域有扎实用户群而 MCP 是大模型接入外部数据的事实标准之一两者结合天然有吸引力。和纯粹的“AI 直接连数据库”方案相比MCP Server 的封装做得更干净它把数据库连接信息和工具入口标准化。数据库的异常、重试、限流逻辑可以统一在 Server 端处理。换客户端不用改业务代码只要是支持 MCP 的客户端都能用。目前这个项目还处于偏早期阶段主要集中在几个核心工具上。后续如果能把更多 DolphinDB 内置因子库、分钟级数据处理、批量回测接口都暴露成 MCP 工具会更有想象空间。5.3 给想上手的人三个建议如果看完这篇文章你准备动手试一下我给你三点实在的建议第一先用 Docker 起一套最小环境模拟数据跑通链路不要把宝贵时间浪费在“拉真实行情、清洗数据”的环节。目标是先把 MCP 工具链跑通感受一下“让 AI 查数”的体验。第二权限和账号密码从一开始就按生产环境标准设置不要图省事一直用默认 admin。MCP 如果暴露在局域网甚至公网上风险会成倍放大。第三别指望 AI 替你完成所有投研决策。目前它做得最好的部分是查询、统计、口径解释和基础技术指标分析逻辑深度还远达不到真正量化投研标准。把它当作“数据助手”而非“策略研究员”比较稳妥。另外MCP 是一个快速演进的领域协议版本、客户端支持都会变化。建议多关注项目仓库的更新记录别在旧版本配置上死磕太久。我个人在实际操作中的体会是DolphinDB 股票分析 MCP 这类项目最值得借鉴的不只是“能查股票数据”这个结果而是它展示了一种中后台数据能力通过 MCP 面向 AI 输出的标准模式。未来企业里一定会有大量类似需求把内部数据平台、指标库、分析模型暴露给 AI 使用。先把它玩熟相当于提前掌握了这种架构思路。最后再分享一个小技巧如果你打算长期用建议把常用的分析请求整理成固定模板比如“帮我生成金叉股票清单”“哪个板块最近五日涨幅最大”。这样 MCP Server 命中结构化参数的效率会更高AI 的回答也会更稳定。等这个项目的生态更成熟完全可以把 DolphinDB 换成你自己的数据平台思路和架构都能直接复用。