article
README
🚀 BCS-MCP
这是一个自主的MCP服务,用于将 BCS Trade API 与大语言模型(LLM)集成。该服务收集市场和私有数据,将其存储在PostgreSQL/pgvector中,并通过MCP提供相关工具。
✨ 主要特性
📈 数据与存储
- 市场数据流:包含行情报价、订单簿、交易记录、K线等。
- 私有数据:涵盖投资组合、委托单、交易记录、交易限制等。
- 数据按模式划分:
bcs_market:用于存储市场数据。bcs_private:用于存储私有数据。
🧠 支持大语言模型的层
- 基于嵌入向量的语义搜索:通过嵌入向量(默认使用
llm_mcp,Ollama作为备用)对历史数据进行语义搜索。 - 决策日志和上下文:记录决策日志和上下文,方便后续分析。
- 本地优先策略:尽可能在数据库或脚本端进行计算,减少大语言模型的令牌使用。
🧮 脚本与信号
- 内置数学脚本:包含简单移动平均线(SMA)、指数移动平均线(EMA)、相对强弱指数(RSI)、手续费、交易时段、风险计算等脚本。
- 脚本目录与服务器计算:提供脚本目录,可在服务器端进行计算,避免将原始数据序列输出到大语言模型。
- 信号保存与增强:
signals.run可保存启发式信号,并增强direction.llm(无需迁移模式)。
🧱 架构
server/:Node.js MCP服务器(包含工具和HTTP端点)worker/:Python数据摄取、数据流处理和嵌入向量生成db/init/:SQL初始化和数据库模式
一个容器(Dockerfile)包含服务器和工作进程。
🚀 快速开始
cd bcs-mcp
cp .env.example .env
# 请填写 BCS_REFRESH_TOKEN
docker compose -f compose.yml up -d
验证服务是否正常运行:
curl http://127.0.0.1:3332/health
curl http://127.0.0.1:3332/tools
🔧 关键环境变量
BCS_REFRESH_TOKEN:必需的刷新令牌BCS_CLIENT_ID:trade-api-read或trade-api-writeBCS_ALLOW_WRITE:启用交易操作BCS_DB_HOST:在compose文件中为bcsdbBCS_DB_PORT:在compose网络内为5432MCP_PORT:MCP在容器内的端口为3333,对外暴露的端口为3332OLLAMA_EMBED_MODEL:嵌入向量模型LLM_BACKEND=llm_mcp|ollama,LLM_MCP_BASE_URL,LLM_MCP_PROVIDER,LLM_BACKEND_FALLBACK_OLLAMA
🧰 MCP工具(分组)
market.*:数据查询、最新数据、聚合数据、快照、计算等操作private.*:投资组合、交易记录、盈亏计算、决策等操作selected_assets.*:关注列表操作embedding.*:队列管理和搜索操作scripts.*,signals.run:本地计算操作bcs.*:直接调用BCS REST API
📚 详细文档
docs/bcs_api_reference.md:API和MCP工具的映射文档CHANGELOG.md:版本更新历史记录VERSION:当前模块版本
📁 项目结构
bcs-mcp/
├── server/
├── worker/
├── scripts/
├── db/init/
├── compose.yml
└── Dockerfile
🧭 公共Git标准
VERSION文件中的版本号严格遵循YYYY.MM.x格式。- 所有更改都记录在
CHANGELOG.md中。 - 敏感信息不存储在git中,仅提供
.env.example文件,实际工作值存储在本地.env文件中。 - 发布前需执行
docker compose config和基本的冒烟测试(/health,/tools)。
🔐 安全措施
- 仅当
BCS_ALLOW_WRITE=1时,才允许执行交易操作。 - 对于HTTP MCP,可以启用
MCP_HTTP_TOKEN进行身份验证。 - 实际的敏感信息仅存储在本地
.env文件中。
Scan to join WeChat group