Token导航 LogoToken导航TokenDH.com
Trade MCP Server (Navneetprabhakar) logo
金融服务未说明官方级别未说明来源级核验

Trade MCP Server (Navneetprabhakar)

MCP Server

一个基于Spring Boot的股票交易MCP服务器,集成Groww API和Spring AI,提供实时市场数据获取、订单管理和投资组合跟踪功能。

工具数

12

提示词数

0

GitHub Stars

0

资源数

0
金融科技JavaClaudeSpring BootClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

navneetprabhakar

提供方

navneetprabhakar

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

交易MCP服务器

用于股票交易操作的基于Spring Boot的模型上下文协议(MCP)服务器,与Grow API和Spring AI集成。

🚀 特性

  • MCP服务器集成:内置Spring AI MCP服务器,实现无缝AI集成
  • 扩展API集成:从Groww获取实时和历史市场数据
  • 仪器管理:金融工具的全面CRUD操作
  • CSV数据摄入:通过批处理从CSV文件批量导入仪器数据
  • 许可证管理:Grow API的自动令牌生成和缓存
  • 历史数据检索:获取烛台数据以进行技术分析
  • 控股管理:获取并监控用户持有的详细头寸信息
  • 位置跟踪:按细分市场和交易品种实时跟踪头寸
  • 下单:下达买入/卖出订单,支持多种订单类型(市场、限价、SL、SL-M)
  • 订单管理:通过实时状态更新修改、取消和跟踪订单
  • 交易执行:获取已执行的交易和详细的交易信息
  • 订单历史:检索全面的订单列表和订单详细信息
  • PostgreSQL数据库:使用JPA/Hibernate的持久存储
  • 缓存:实现咖啡因缓存以提高性能
  • 代码优化:具有集中式API处理程序(OrderServiceHelper)的重构订单服务

📋 先决条件

  • Java 21
  • Maven 3.6+
  • PostgreSQL 12+
  • 增加API证书(API密钥和秘密)

🛠️ 技术栈

  • 框架:弹簧靴3.5.10
  • AI集成:支持MCP服务器的Spring AI 1.1.2
  • 数据库:PostgreSQL 42.7.9,带Spring数据JPA
  • HTTP客户端:Apache HttpClient 5.5
  • 缓存:具有Spring Cache抽象的Caffeine Cache 3.2.3
  • CSV处理:Apache Commons CSV 1.11.0
  • 代码生成:龙目岛项目(注释:@Data、@Builder、@Slf4j等)
  • 构建工具:Maven
  • Java: 21

⚙️ 配置

环境变量

创建以下环境变量:

# Database Configuration
export DB_URL=jdbc:postgresql://localhost:5432/trade_db
export DB_USERNAME=your_db_username
export DB_PASSWORD=your_db_password

# Groww API Configuration
export GROWW_API_KEY=your_groww_api_key
export GROWW_SECRET_KEY=your_groww_secret_key

应用程序配置文件

在中配置设置 application.yaml:

spring:
  datasource:
    url: ${DB_URL}
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
  ai:
    mcp:
      server:
        enabled: true
        name: trade-mcp-server
        version: 1.0.0

groww:
  api-key: ${GROWW_API_KEY}
  secret: ${GROWW_SECRET_KEY}
  base-url: https://api.groww.in/v1/

server:
  port: 8082

增长的API端点

该应用程序配置有以下Grow API终结点:

  • 令牌生成: token/api/access
  • 历史数据: historical/candle/range
  • 持仓: holdings/user
  • 职位: positions/user, positions/trading-symbol
  • 订单: order/list, order/create, order/details, order/modify, order/cancel, order/status, order/trades

🗄️ 数据库设置

创建数据库

首先,创建一个名为的PostgreSQL数据库 trade_db:

psql -U postgres -c "CREATE DATABASE trade_db;"

运行架构脚本

然后,运行模式脚本以创建仪器表:

psql -U your_username -d trade_db -f src/main/resources/schema.sql

架构详细信息

该架构包括:

  • 仪器表:存储22个字段的金融工具主表
  • 索引:使用以下索引优化查询:

- name (仪器名称搜索) - trading_symbol (股票代码查找) - exchange (市场交易过滤) - segment (细分市场过滤)

hibernate配置

应用程序使用 hibernate.ddl-auto=none,意思是:

  • ✅ 通过SQL脚本进行手动模式管理
  • ✅ 更好地控制迁移
  • ✅ 对生产环境更安全
  • ✅ 架构更改需要显式执行SQL

📦 安装

  1. 克隆存储库:
git clone 
cd trade-mcp-server
  1. 安装依赖项:
./mvnw clean install
  1. 运行应用程序:
./mvnw spring-boot:run

服务器将于启动 http://localhost:8082

🤖 MCP第一架构

此应用程序被设计为 MCP服务器 用于AI代理交互。所有交易操作都以MCP工具而不是REST API的形式公开:

  • 人工智能原生:工具针对AI代理进行了优化(Claude、ChatGPT等)
  • 类型安全:所有工具都使用强类型请求/响应模型
  • 自我记录:工具描述嵌入在代码中,使用 @McpTool 注释
  • REST API:仅限于内部操作(令牌生成、CSV摄入)

要与此服务器交互,请使用Spring AI MCP协议将其连接到MCP兼容的AI客户端。

📚 MCP最佳实践

此实施遵循MCP最佳实践:

  1. 无状态工具设计:每个工具都是独立的,可以按任何顺序调用
  2. 一致性命名:工具名称遵循snake_case约定(fetch_historic_data, create_new_order等等)
  3. 清晰的描述:每个工具都有一个清晰的描述,解释其用途
  4. 类型安全:所有参数都是经过验证的强类型参数
  5. 错误处理:调试的全面错误响应
  6. 分页支持:订单跟踪工具包括分页参数
  7. 细分市场支持:工具识别不同的细分市场(现金、FNO、商品)

🛠️ MCP工具

此服务器为AI代理提供以下MCP工具,以与交易操作进行交互。

工具类别

  • 市场数据工具 (2) :历史数据和仪器搜索
  • 投资组合工具 (3) :持股和头寸管理
  • 订单管理工具 (3) :订单下达、修改和取消
  • 订单跟踪工具 (4) :订单状态、交易、历史和详细信息

总计: 12个MCP工具

市场数据工具

1. fetch_historic_data

检索历史烛台数据(OHLCV-开盘、高、低、收盘、成交量),用于技术分析和图表绘制。

参数:

  • request (HistoryDataquest):包含符号、交换、间隔、起始日期和结束日期

支持的间隔: 1m、5m、15m、30m、1h、1d、1w、1m

例子:

{
  "symbol": "RELIANCE",
  "exchange": "NSE",
  "interval": "1D",
  "from": "2026-01-01",
  "to": "2026-02-05"
}

2. fetch_entities

根据部分名称匹配、交换和细分从数据库中搜索和检索金融工具。

参数:

  • request (EntityRequest):包含名称、交换(NSE、BSE、MCX)和段(现金、FNO、商品)

退货: 具有交易品种、手数、分时大小和交易权限的工具列表

例子:

{
  "name": "RELIANCE",
  "exchange": "NSE",
  "segment": "CASH"
}

投资组合工具

3. fetch_holdings

从用户的Groww投资组合中检索所有持有量,并提供详细的数量和价格信息。

参数:

退货: 持有数量、平均价格、锁定数量和自由数量

4. fetch_user_positions

检索指定细分市场的当前未平仓头寸。

参数:

  • segment (细分市场):细分市场-现金、FNO或商品

退货: 包含贷方/借方数量、价格和已实现损益的头寸

5. fetch_position_trading_symbol

检索细分市场中特定交易品种的头寸。

参数:

  • segment (细分市场):细分市场-现金、FNO或商品
  • tradingSymbol (字符串):股票交易符号(例如,“TCS”、“RELIANCE”)

退货: 包含数量、平均价格和损益的头寸详细信息

订单管理工具

6. create_new_order

创建新的买入或卖出订单,支持多种订单类型。

参数:

  • request (CreateOrderRequest):订单详细信息包括:

- tradingSymbol:股票代码 - quantity:股份数量 - price:订单价格 - triggerPrice:止损触发价(适用于SL订单) - validity:DAY或IOC - exchange:NSE、BSE或MCX - segment:现金、FNO或商品 - product:CNC、INTRADAY或MTF - orderType:市场、限制、SL或SL-M - transactionType:买入或卖出 - orderReferenceId:唯一的客户参考

例子:

{
  "tradingSymbol": "WIPRO",
  "quantity": 100,
  "price": 2500,
  "triggerPrice": 2450,
  "validity": "DAY",
  "exchange": "NSE",
  "segment": "CASH",
  "product": "CNC",
  "orderType": "SL",
  "transactionType": "BUY",
  "orderReferenceId": "Ab-654321234-1628190"
}

7. modify_order

修改现有订单的价格和/或数量。

参数:

  • request (ModifyOrderRequest):包含订单ID和新参数(价格、数量、有效期)

例子:

{
  "growwOrderId": "GMK39038RDT490CCVRO",
  "price": 2550,
  "quantity": 150,
  "validity": "DAY"
}

8. cancel_order

取消现有的未结订单。

参数:

  • request (CancelOrderRequest):包含要取消的订单ID

例子:

{
  "growwOrderId": "GMK39038RDT490CCVRO"
}

订单跟踪工具

9. fetch_order_status

获取特定订单的当前状态。

参数:

  • request (OrderStatusRequest):包含订单ID和段

退货: 订单状态、已填写数量和订单参考

10. fetch_trades_for_order

获取与特定订单关联的所有交易。

参数:

  • request (OrderTradesRequest):包含订单ID、分段、页码和页面大小

退货: 已执行交易列表,包括价格、数量、时间戳和结算详细信息

11. fetch_order_list

获取特定细分市场的所有订单列表。

参数:

  • segment (细分):现金、FNO或商品

退货: 包含完整订单详细信息、执行状态和元数据的订单列表

12. fetch_order_details

获取特定订单的详细信息。

参数:

  • request (OrderStatusRequest):包含订单ID和段

退货: 完整的订单详细信息,包括执行信息和时间戳

📊 领域模型

仪器实体

表示具有以下字段的金融工具:

  • 基本信息: id, name, exchange, segment
  • 交易详情: tradingSymbol, exchangeToken, growwSymbol
  • 元数据: instrumentType, series, isin
  • 衍生品: underlyingSymbol, expiryDate, strikePrice
  • 交易参数: lotSize, tickSize, freezeQuantity
  • 权限: buyAllowed, sellAllowed, isIntraday

控股公司回应

表示用户持有的详细信息:

  • 持股: isin, tradingSymbol, quantity, averagePrice
  • 锁详细信息: pledgeQuantity, dematLockedQuantity, growwLockedQuantity, repledgeQuantity
  • 数量类型: t1Quantity, dematFreeQuantity, corporateActionAdditionalQuantity, activeDematTransferQuantity

职位回应

通过全面的位置跟踪表示用户位置:

  • 职位详情: tradingSymbol, exchange, symbolIsin, product
  • 信用信息: creditQuantity, creditPrice, carryForwardCreditQuantity, carryForwardCreditPrice
  • 借记信息: debitQuantity, debitPrice, carryForwardDebitQuantity, carryForwardDebitPrice
  • 净值: quantity, netPrice, netCarryForwardQuantity, netCarryForwardPrice, realisedPnl

创建订单请求

表示具有交易参数的下单请求:

  • 仪器详细信息: tradingSymbol, exchange, segment
  • 订单参数: quantity, price, triggerPrice, validity
  • 订单类型: orderType (市场、限额、SL、SL-M), transactionType (买入、卖出)
  • 产品类型: product (CNC、日内、MTF)
  • 参考: orderReferenceId (唯一订单参考)

创建订单响应

表示订单状态的订单放置响应:

  • 状态: status (成功,失败)
  • 有效载荷:

- growwOrderId:Groww的唯一订单ID - orderStatus:当前订单状态(未结、待处理、已执行、已取消、已拒绝) - orderReferenceId:客户提供的订单参考 - remark:有关订单的其他信息

修改订单响应

表示订单修改/取消响应:

  • 状态: status (成功,失败)
  • 有效载荷:

- growwOrderId:Groww的唯一订单ID - orderStatus:更新订单状态 - remark:修改确认消息

订单状态响应

用执行详细信息表示当前订单状态:

  • 状态: status (成功,失败)
  • 有效载荷:

- growwOrderId:Groww的唯一订单ID - orderStatus:当前订单状态 - filledQuantity:到目前为止执行的数量 - orderReferenceId:客户提供的订单参考 - remark:状态消息

订单交易响应

表示为订单执行的交易列表:

  • 状态: status (成功,失败)
  • 有效载荷:

- tradeList:已执行交易数组,包含: - 交易详情: price, quantity, isin, tradingSymbol - 订单参考: growwOrderId, exchangeOrderId, orderReferenceId - 贸易参考: growwTradeId, exchangeTradeId, settlementNumber - 状态和类型: tradeStatus, transactionType (买入、卖出) - 市场行情: exchange, segment, product - 时间戳: createdAt, tradeDatetime - 元数据: remark

订单列表响应

表示段的订单列表:

  • 状态: status (成功,失败)
  • 有效载荷:

- orderList:订单数组,包含: - 阶次辨识: growwOrderId, tradingSymbol, orderReferenceId - 订单状态: orderStatus, amoStatus - 订单参数: quantity, price, triggerPrice, validity - 执行详细信息: filledQuantity, remainingQuantity, averageFillPrice - 职位信息: deliverableQuantity - 订单类型: orderType (市场、限额、SL、SL-M), transactionType (买入、卖出) - 市场行情: exchange, segment, product - 时间戳: createdAt, exchangeTime, tradeDate - 元数据: remark

枚举

  • 交换:NSE、BSE、MCX
  • 片段:现金、FNO、商品
  • 蜡烛间隔:1米、5米、15米、30米、1小时、1天、1瓦、1米
  • 订单类型:市场、限价、SL(止损)、SL-M(止损市场)
  • 订单状态:打开、待处理、已执行、已取消、已拒绝
  • 产品类型:CNC(现金及套利)、INTRADAY、MTF(保证金交易工具)
  • 交易类型:买入,卖出

🏗️ 建筑

该应用程序遵循分层架构模式,关注点明确分离:

com.navneet.trade/
├── config/                  # Configuration classes
│   └── CacheConfig.java     # Caffeine cache configuration
├── constants/               # Application constants and enums
│   ├── CandleIntervals.java # Supported candle intervals
│   ├── Exchange.java        # Market exchanges (NSE, BSE, MCX)
│   ├── Segment.java         # Market segments (CASH, FNO, COMMODITY)
│   ├── OrderType.java       # Order types (MARKET, LIMIT, SL, SL-M)
│   ├── OrderStatus.java     # Order statuses
│   ├── ProductType.java     # Product types (CNC, INTRADAY, MTF)
│   ├── TransactionType.java # Transaction types (BUY, SELL)
│   └── GrowwConstants.java  # Groww API constants
├── controller/              # REST controllers (internal use only)
│   ├── GrowwController.java  # Token generation & CSV ingestion
│   └── OrderController.java  # Disabled - testing purposes only
├── entity/                  # JPA entities and data access
│   ├── Instruments.java     # Instrument entity with @Entity annotation
│   ├── dto/
│   │   └── InstrumentsDto.java # DTO for data transfer
│   └── repo/
│       └── InstrumentsRepo.java # Spring Data JPA repository
├── models/                  # Request/Response models for API contracts
│   ├── request/             # Request DTOs
│   │   ├── EntityRequest.java
│   │   ├── HistoricDataRequest.java
│   │   ├── TokenRequest.java
│   │   ├── CreateOrderRequest.java
│   │   ├── ModifyOrderRequest.java
│   │   ├── CancelOrderRequest.java
│   │   ├── OrderStatusRequest.java
│   │   └── OrderTradesRequest.java
│   └── response/            # Response DTOs
│       ├── TokenResponse.java
│       ├── HistoricDataResponse.java
│       ├── HoldingsResponse.java
│       ├── PositionsResponse.java
│       ├── CreateOrderResponse.java
│       ├── ModifyOrderResponse.java
│       ├── OrderStatusResponse.java
│       ├── OrderTradesResponse.java
│       └── OrderListResponse.java
├── service/                 # Business logic and service layer
│   ├── GrowwService.java    # Groww-related operations interface
│   ├── OrderService.java    # Order management interface
│   ├── impl/                # Service implementations
│   │   ├── GrowwServiceImpl.java   # Implements Groww operations
│   │   └── OrderServiceImpl.java   # Implements order operations
│   └── helper/              # Helper classes for code reuse
│       ├── GrowwServiceHelper.java     # Centralized Groww API calls
│       └── OrderServiceHelper.java    # Centralized order API calls
└── utils/                   # Utility and helper functions
    ├── GrowwUtils.java      # Groww-specific utilities
    └── RestUtils.java       # REST API utilities

建筑亮点

  • 分层架构:控制器、服务和存储库层之间的明确分离
  • 助手模式:OrderServiceHelper和GrowServiceHelper合并API调用并减少代码重复
  • 仓储模式:Spring Data JPA,用于通过自定义查询访问数据库
  • 服务接口模式:服务接口背后的抽象业务逻辑
  • DTO模式:请求/响应模型提供API合同和验证
  • 枚举模式:使用枚举而不是字符串文字键入安全常量

🔍 关键功能实现

CSV批量摄入

该系统使用迭代器模式进行内存高效的CSV处理:

  • 逐行阅读:读取CSV文件,而不将整个文件加载到内存中
  • 批处理:构建可配置大小的批次(例如,1000条记录)
  • 大容量插入:用途 instrumentsRepo.saveAll() 用于高效批量插入
  • 内存效率高:非常适合处理大型CSV文件(超过10万条记录)

代码优化:OrderServiceHelper

减少订单管理操作中的代码重复:

  • API集中处理:OrderServiceHelper合并所有REST API调用逻辑(POST和GET)
  • 泛型方法: executePostCall()executeGetCall() 处理所有API交互
  • 响应处理:统一的JSON反序列化和错误处理
  • 结果:OrderServiceImpl代码减少50%(192→96行)
  • 利益:API通信中的错误修复和增强现在发生在一个地方

缓存策略

  • 令牌缓存:使用可配置的过期时间缓存的API令牌增长
  • 缓存删除:支持手动缓存清除
  • 高性能:用于亚毫秒查找的咖啡因缓存
  • Spring集成:与Spring的@Cacheable注释无缝集成

存储库查询

用于灵活仪器搜索的自定义JPA查询:

findDistinctByNameContainingIgnoreCaseAndExchangeAndSegment(
    String name, String exchange, String segment
)
  • 案例不敏感搜索:无论情况如何,都能找到仪器
  • 灵活过滤:按交换和分段同时过滤
  • 不同的结果:删除重复条目

🧪 测试

使用以下工具运行测试:

./mvnw test

运行应用程序

使用Maven Spring Boot插件:

./mvnw spring-boot:run

使用Java JAR:

./mvnw clean package
java -jar target/trade-mcp-server-0.0.1-SNAPSHOT.jar

使用环境变量:

export DB_URL=jdbc:postgresql://localhost:5432/trade_db
export DB_USERNAME=postgres
export DB_PASSWORD=yourpassword
export GROWW_API_KEY=your_key
export GROWW_SECRET_KEY=your_secret
./mvnw spring-boot:run

📝 许可证

此项目根据LICENSE文件中指定的条款获得许可。

👤 作者

Navneet Prabhakar

🤝 贡献

  1. 克隆该仓库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📞 支持

有关问题和疑问,请在存储库中打开问题。

______________________________________________________________________

备注:这是一个开发服务器。在部署到生产环境之前,确保采取了适当的安全措施。

目录标签

目录标签

金融科技JavaClaudeSpring Boot股票交易本地部署MCP服务器SpringBootAI集成

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

12

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP