news 2026/9/10 5:44:52

自然语言查询股票行情:DolphinDB MCP 让 AI 真正读懂金融数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自然语言查询股票行情:DolphinDB MCP 让 AI 真正读懂金融数据

如果你平时会看股票,或者多少接触过量化投研,应该对“让 AI 帮你分析股票”这件事不陌生。但真正上手之后你会发现一个尴尬现象:让 AI 聊行情逻辑,它能说得头头是道;真要它拉出某只标的的历史日线、算个 MA5 和 MA20 有没有金叉、统计一下板块涨跌分布,它就只能干瞪眼——因为它手上根本没有真实数据。我最近在开源社区刷到 DolphinDB 股票分析 MCP 这个项目,恰好把这层窗户纸捅破了:它把高性能时序数据库 DolphinDB 接进了 MCP 协议,AI 能直接通过自然语言查询真实行情、跑技术指标、做统计对比,而且项目已经开源。这篇就来聊聊它是什么、怎么部署、实际怎么用,以及我踩过的几个坑。

1. 这个项目到底解决了什么问题

1.1 一句话理解 DolphinDB 股票分析 MCP

先拆开两个词。

DolphinDB 是专门面向金融场景的高性能分布式时序数据库,能存海量行情数据,还能直接在库内做并行计算、因子计算。很多量化团队、券商研究所都在用它管理 K 线和逐笔数据。

MCP 是 Model Context Protocol 的缩写,中文可以理解为“模型上下文协议”,核心作用是把大语言模型和外部数据、工具连接起来。有了 MCP,AI 不再只能靠训练时学到的知识回答,而是可以实时调用数据库、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 Server(DolphinDB 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.04(Windows 用户用 WSL2 也完全没问题)
  • Python:3.10+
  • DolphinDB:社区版 2.00.x(官方集成,免费版足够测试)
  • MCP 客户端:我用的是 Claude Desktop,后来也跑过自写的 Python MCP Client

DolphinDB 有两种方式准备数据:一种是本地安装社区版并导入行情数据,另一种是连接已有企业环境。个人测试强烈建议用 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_HOST=localhost export DDB_PORT=8848 export DDB_USER=admin export DDB_PASSWORD=123456 export DDB_DB_PATH=dfs://stock export DDB_TABLE_NAME=daily

配置好后先试下手动启动,确认能正常连上数据库:

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 收到请求后,会拆成两步:

  1. 查日线数据。
  2. 调用指标计算工具,算均线。

数据库里 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_metric,AI 自动构造参数:

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.18,AI 会解释为“该指数年化波动率约 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 换成你自己的数据平台,思路和架构都能直接复用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 5:44:12

OpenMAIC 怎么部署到 Vercel?

OpenMAIC 怎么部署到 Vercel&#xff1f; 【免费下载链接】OpenMAIC Open Multi-Agent Interactive Classroom — Get an immersive, multi-agent learning experience in just one click 项目地址: https://gitcode.com/GitHub_Trending/op/OpenMAIC OpenMAIC 是一个标…

作者头像 李华
网站建设 2026/9/10 5:42:52

数字化转型:从概念到落地的完整路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 5:41:32

树莓派Pico USB-CDC虚拟串口与select轮询实战

1. 项目概述&#xff1a;为什么树莓派 Pico 的 USB-CDC 虚拟串口值得深挖&#xff1f;USB-CDC&#xff08;Communication Device Class&#xff09;不是什么新概念&#xff0c;但落到树莓派 Pico 这块资源极其有限的 MCU 上&#xff0c;它就成了一条“看不见的高速通道”。我第…

作者头像 李华
网站建设 2026/9/10 5:41:18

STM32 Modbus RTU调试实战:从协议到RS485硬件的全链路避坑指南

1. 这不是教科书里的MODBUS&#xff0c;是我在STM32产线调试现场撕下来的一页笔记你手头正捏着一块刚焊好的STM32F103开发板&#xff0c;串口线插在电脑上&#xff0c;Modbus Poll软件里发出去的03功能码请求像石沉大海——没有响应&#xff0c;没有错误帧&#xff0c;连个ACK都…

作者头像 李华
网站建设 2026/9/10 5:40:55

Android秒表开发:毫秒级计时与UI线程安全实践

简介&#xff1a;这是一份面向Android初学者与进阶开发者的秒表功能实战源码包&#xff0c;聚焦UI交互、计时逻辑与性能优化等核心开发能力训练。资源包含25个文件&#xff0c;涵盖10个编译后的class字节码、3个XML布局与配置文件&#xff08;定义界面结构与权限&#xff09;、…

作者头像 李华
网站建设 2026/9/10 5:40:47

电动汽车集群并网调度:分布式鲁棒优化模型与Matlab实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华