Futu Stock MCP Server

Futu Stock MCP Server

site icon
2025.04.10 2
Python证券行情交易接口金融数据服务金融服务
Futu Stock MCP Server 是一个基于模型上下文协议(MCP)的富途证券行情交易接口服务器,旨在将富途OpenAPI功能以标准化的MCP协议提供给AI模型使用。它支持港股、美股、A股等市场的实时行情订阅、数据查询等功能,并提供完整的开发工具和示例代码。
View on GitHub

Overview

基本能力

产品定位

Futu Stock MCP Server 是一个金融数据服务工具,专注于提供证券市场的实时行情和交易数据,通过MCP协议标准化接口,方便AI模型和开发者使用。

核心功能

  • 完全兼容 MCP 2.0 协议标准
  • 支持港股、美股、A股等市场的实时行情
  • 支持实时数据订阅和推送
  • 支持K线、逐笔、买卖盘等多维度数据
  • 提供安全的API调用和数据访问机制
  • 提供完整的开发工具和示例代码

适用场景

  • 金融数据分析
  • 量化交易
  • 市场监控
  • AI模型训练

工具列表

  • Market Data Tools: 获取股票报价、市场快照、K线数据等
  • Subscription Tools: 实时数据订阅和取消订阅
  • Derivatives Tools: 期权链数据、到期日期等
  • Account Query Tools: 账户列表、资产信息查询
  • Market Information Tools: 市场状态、证券信息查询
  • Stock Filter Commands: 基于条件的股票筛选

常见问题解答

  • 前置要求: 需要富途证券账户并开通OpenAPI权限,安装富途的OpenD网关程序
  • 安全提示: 不要在代码中硬编码账号密码信息,确保.env文件安全
  • 免责声明: 本项目不提供任何投资建议,使用前需获得所需的行情权限

使用教程

使用依赖

  1. Python 3.10+
  2. Futu OpenAPI SDK
  3. Model Context Protocol SDK
  4. uv (推荐)

安装教程

  1. 克隆仓库:
git clone https://github.com/yourusername/futu-stock-mcp-server.git
cd futu-stock-mcp-server
  1. 安装uv:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. 创建并激活虚拟环境:
# 创建虚拟环境
uv venv

# 激活虚拟环境
# macOS/Linux:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
  1. 安装依赖:
# 以可编辑模式安装
uv pip install -e .
  1. 复制环境文件并配置:
cp .env.example .env

编辑.env文件:

HOST=0.0.0.0
PORT=8000
FUTU_HOST=127.0.0.1
FUTU_PORT=11111

调试方式

  1. 启动服务器:
python -m futu_stock_mcp_server.server
  1. 使用MCP客户端连接服务器:
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    server_params = StdioServerParameters(
        command="python",
        args=["src/server.py"]
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            result = await session.call_tool(
                "get_stock_quote",
                arguments={"symbols": ["HK.00700"]}
            )

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

许可证

该项目遵循 MIT 开源许可条款。