DhanHQ MCP服务器
用于DhanHQ API的MCP(模型上下文协议)服务器,为个人交易者提供基于OAuth的身份验证。
概述
该服务器实现完整的三步DhanHQ身份验证流程,该流程为API请求生成JWT访问令牌。身份验证过程包括:
- 步骤1:生成同意-创建临时会话ID
- 步骤2:基于浏览器的登录-用户使用2FA进行身份验证
- 步骤3:消费同意-将tokenId兑换为访问令牌
先决条件
在开始之前,您需要生成您的API密钥和秘密:
- 登录到 web.dhan.co
- 导航至 我的资料 → '访问DhanHQ API'
- 切换到 “API密钥”
- 输入您的:
- 应用程序名称 - 重定向URL(例如。, http://localhost:3000/callback) - 可选回邮URL
注:生成的API密钥和机密有效期为12个月。
设置
1.安装依赖项
npm install2.配置环境变量
复制 .env.example 到 .env 并填写您的凭据:
cp .env.example .envDHAN_CLIENT_ID=your_dhan_client_id
DHAN_API_KEY=your_api_key
DHAN_API_SECRET=your_api_secret
REDIRECT_URL=http://localhost:3000/callback3.建设项目
npm run build用法
发展模式
npm run dev使用MCP检查器(建议用于调试)
MCP检查器提供了一个交互式界面来测试MCP工具:
npm run inspector这将:
- 启动MCP服务器
- 在浏览器中打开MCP检查器
- 允许您调用工具并实时查看响应
身份验证流程
步骤1:启动身份验证
打电话给 start_authentication 工具。这将:
- 验证您的API凭据
- 创建临时会话(consultAppId)
- 返回登录URL
第二步:浏览器登录
在浏览器中打开提供的登录URL:
- 使用您的Dhan凭据登录
- 完成2FA验证(OTP/PIN/密码)
- 您将被重定向到您配置的重定向URL,其中包含
tokenId参数
重定向URL示例:
http://localhost:3000/callback?tokenId=abc123def456...步骤3:完成身份验证
打电话给 complete_authentication 工具与 tokenId 从步骤2开始:
- 将tokenId替换为JWT访问令牌
- 存储令牌详细信息(到期、客户信息等)
- 返回用于后续API调用的访问令牌
检查状态
使用 check_auth_status 查看:
- 当前身份验证状态
- 令牌有效性
- 客户信息
- 令牌到期时间
可用的MCP工具
start_authentication
启动DhanHQ身份验证流程(步骤1)。
- 输入:无
- 输出:conserveAppId、loginUrl、说明
get_login_instructions
获取步骤2的登录说明和URL。
- 输入:conserveAppId(可选)
- 输出:loginUrl,详细说明
complete_authentication
使用步骤2中的tokenId完成身份验证(步骤3)。
- 输入:tokenId(必填)
- 输出:带有accessToken和客户端详细信息的authToken
check_auth_status
检查当前身份验证状态。
- 输入:无
- 输出:身份验证状态和令牌有效性
reset_authentication
清除当前身份验证状态。
- 输入:无
- 输出:成功消息
API体系结构
- 框架:使用TypeScript的Node.js
- 协议:模型上下文协议(MCP)
- 运输音频:
- 认证API:DhanHQ OAuth端点
- HTTP客户端:Axios
项目结构
src/
├── index.ts # MCP server and tool handlers
├── authentication.ts # Authentication logic (3-step flow)
├── config.ts # Configuration management
└── types.ts # TypeScript interfaces安全注意事项
- API凭据存储在环境变量中
- 访问令牌存储在内存中(基于会话)
- 生产时,使用:
- 安全的凭证存储 - 令牌持久性数据库 - 令牌刷新机制 - HTTPS用于回调
- MCP检查器输出编辑敏感令牌
错误处理
服务器包括全面的错误处理:
- API请求验证
- 网络错误处理
- 配置验证
- 令牌到期检查
后续步骤
身份验证工作后:
- 为交易操作添加API工具
- 实现令牌刷新逻辑
- 添加投资组合/持股端点
- 实施订单下达工具
- 添加市场数据工具
开发说明
- 日志打印到stderr进行调试
- 身份验证状态存储在内存中(重新启动时丢失)
- 对于生产,迁移到持久存储
- 建议使用MCP检查器进行交互式测试和调试
许可证
麻省理工学院
