认证协议服务器

一个为DhanHQ API提供OAuth认证的MCP服务器,用于生成JWT访问令牌以进行API请求。

  • by harshitdynamite
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 harshitdynamite/DhanMCP

使用说明

DhanHQ MCP服务器

用于DhanHQ API的MCP(模型上下文协议)服务器,为个人交易者提供基于OAuth的身份验证。

概述

该服务器实现完整的三步DhanHQ身份验证流程,该流程为API请求生成JWT访问令牌。身份验证过程包括:

  1. 步骤1:生成同意-创建临时会话ID
  2. 步骤2:基于浏览器的登录-用户使用2FA进行身份验证
  3. 步骤3:消费同意-将tokenId兑换为访问令牌

先决条件

在开始之前,您需要生成您的API密钥和秘密:

  1. 登录到 web.dhan.co
  2. 导航至 我的资料 → '访问DhanHQ API'
  3. 切换到 “API密钥”
  4. 输入您的:
    • 应用程序名称
    • 重定向URL(例如。, http://localhost:3000/callback)
    • 可选回邮URL

注:生成的API密钥和机密有效期为12个月。

设置

1.安装依赖项

npm install

2.配置环境变量

复制 .env.example 到 .env 并填写您的凭据:

cp .env.example .env
DHAN_CLIENT_ID=your_dhan_client_id
DHAN_API_KEY=your_api_key
DHAN_API_SECRET=your_api_secret
REDIRECT_URL=http://localhost:3000/callback

3.建设项目

npm run build

用法

发展模式

npm run dev

使用MCP检查器(建议用于调试)

MCP检查器提供了一个交互式界面来测试MCP工具:

npm run inspector

这将:

  1. 启动MCP服务器
  2. 在浏览器中打开MCP检查器
  3. 允许您调用工具并实时查看响应

身份验证流程

步骤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请求验证
  • 网络错误处理
  • 配置验证
  • 令牌到期检查

后续步骤

身份验证工作后:

  1. 为交易操作添加API工具
  2. 实现令牌刷新逻辑
  3. 添加投资组合/持股端点
  4. 实施订单下达工具
  5. 添加市场数据工具

开发说明

  • 日志打印到stderr进行调试
  • 身份验证状态存储在内存中(重新启动时丢失)
  • 对于生产,迁移到持久存储
  • 建议使用MCP检查器进行交互式测试和调试

许可证

麻省理工学院