证券交易协议服务器

一个基于Zerodha交易平台的模型上下文协议(MCP)服务器,支持通过API执行股票交易、查看持仓和管理共同基金投资。

  • by Kshitij-21
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 kshitij-21/mcp-server

使用说明

🚀 Zerodha MCP服务器

模型上下文协议(MCP)服务器,提供与Zerodha交易平台交互的工具。该服务器使人工智能助手能够通过Zerodha的API发布股票订单、查看持股情况和管理共同基金投资。

🎯 特性

交易工具

  • 下库存订单 -执行NSE和BSE的买入/卖出订单
  • 查看控股 -获取当前股票投资组合持有量
  • 共同基金SIPs -查看活跃的系统性投资计划
  • 共同基金控股 -检查共同基金投资组合(实验性)

认证

  • Zerodha登录 -基于OAuth的安全身份验证
  • 许可证管理 -自动令牌存储和刷新
  • 会话处理 -持续登录会话

技术特性

  • TypeScript -整个代码库的完全类型安全
  • MCP协议 -标准化AI助手集成
  • 错误处理 -全面的错误管理
  • 日志记录 -详细的操作日志

🏗️ 建筑

zerodha-mcp/
├── config/
│   ├── KiteConfig.ts
│   └── tokens.json     
├── functions/
│   └── OrderRelated.ts  
├── utils/
│   └── readWrite.ts     
├── .env                 
├── bun.lock
├── main.ts            
└── package.json 

🛠️ 技术栈

  • TypeScript -类型安全的JavaScript
  • MCP-SDK -模型上下文协议实现
  • KiteConnect -Zerodha的官方交易API
  • 阿西奥斯 -API请求的HTTP客户端
  • 包子 -必需的JavaScript运行时

📦 安装

先决条件

  • 包子 -所需运行时间
  • Zerodha交易账户
  • Zerodha API证书

1.克隆存储库

git clone git@github.com:ManikLakhanpal/Zerodha-MCP.git
cd zerodha-mcp

2.安装依赖项

bun install

3.环境设置

创建一个 .env 根目录中的文件:

API_KEY=your_zerodha_api_key
API_SECRET=your_zerodha_api_secret

4.获取Zerodha API证书

  1. 登录您的Zerodha帐户
  2. 首选 Zerodha开发人员
  3. 创建新应用程序
  4. 复制您的API密钥和API机密

🚀 用法

启动MCP服务器

bun main.ts

与克劳德一起使用

此MCP服务器旨在与Claude AI助手配合使用。以下是如何设置它:

1.安装克劳德桌面

首先,下载并安装 克劳德桌面 对于您的操作系统。

2.配置Claude以使用MCP⚙️

  1. 📱 打开克劳德桌面
  2. 🔧 首选 设置 → 开发人员设置
  3. 📄 点击 打开配置文件 打开 claude_desktop_config.json 在默认编辑器中
  4. ✏️ 将以下配置添加到 mcpServers 章节:
{
  "mcpServers": {
    "kite": {
      "command": "/opt/homebrew/bin/bun", # Use `which bun` to get path
      "env": {
        "API_KEY": "your_zerodha_api_key",
        "API_SECRET": "your_zerodha_api_secret"
      },
      "args": ["/path/to/your/zerodha-mcp/main.ts"] # Paste the absolute path to main.ts
    }
  }
}

🔧 重要提示:

  • 🛠️ 替换 /opt/homebrew/bin/bun 使用Bun安装路径(使用 which bun 找到它)
  • 📁 替换 /path/to/your/zerodha-mcp/main.ts 与项目的实际路径 main.ts 文件
  • 🔑 替换 your_zerodha_api_key 和 your_zerodha_api_secret 使用您的实际Zerodha API证书
  • 🏷️ 服务器名称 "kite" 可以更改为您喜欢的任何名称

3.身份验证流程🔐

  1. 🔑 首次登录:要求克劳德“登录Zerodha”
  2. 🌐 获取登录URL:Claude将提供登录URL
  3. ✅ 完成登录:在浏览器中打开URL并完成Zerodha登录
  4. 🔧 设置令牌:从URL复制请求令牌,并要求Claude使用令牌“设置Zerodha令牌”

4.Claude中的可用命令💬

连接后,您可以要求Claude:

  • 🔐 “登录Zerodha” -获取身份验证URL
  • 🔧 “使用[request_token]设置Zerodha令牌” -完成身份验证
  • 📈 “在NSE上购买10股RELIANCE股票” -执行交易
  • 📊 “显示我当前持有的资产” -查看投资组合
  • 💰 “获取我的共同基金SIP” -查看SIP投资
  • 🏦 “检查我的共同基金持有量” -查看MF投资组合

5.对话示例💭

You: 🔐 "Login to Zerodha"
Claude: 🌐 [Provides login URL]

You: 🔧 "Set Zerodha tokens with abc123xyz"
Claude: ✅ [Confirms token setup]

You: 📈 "Buy 5 shares of TCS on NSE"
Claude: 💰 [Executes order and shows result]

You: 📊 "What stocks do I currently hold?"
Claude: 📋 [Shows your portfolio holdings]

可用工具🛠️

1.🔐 登录Zerodha

// Tool: login-to-zerodha
// Returns a login URL for user authentication

2.🔧 设置身份验证令牌

// Tool: set-zerodha-tokens
// Parameters: { request_token: string }
// Sets access tokens after successful login

3.📈 下库存订单

// Tool: place-stock-order
// Parameters: {
//   variety: "regular" | "amo" | "co" | "auction" | "iceberg",
//   stock: string,
//   qty: number,
//   exchange: "NSE" | "BSE",
//   orderType: "BUY" | "SELL"
// }

4.📊 获取控股权

// Tool: get-zerodha-holdings
// Returns current stock portfolio holdings

5.💰 获得共同基金SIP

// Tool: get-zerodha-mutual-fund-sips
// Returns active Systematic Investment Plans

6.🏦 获得共同基金控股

// Tool: zerodha-mf-holdings
// Returns mutual fund portfolio (experimental)

🔧 配置

🔐 许可证管理

服务器自动管理身份验证令牌:

  • 📁 代币存储在 config/tokens.json
  • 🔄 会话到期时自动刷新令牌
  • 🛡️ 具有错误恢复功能的安全令牌处理

⚡ API限值

  • ⏱️ Zerodha对API调用有速率限制
  • 🛠️ 服务器内置了错误处理功能
  • 📝 失败的请求会记录详细的错误信息

🔒 安全

  • 🔐 环境变量 -API凭据安全存储在本地计算机上
  • 📝 错误记录 -错误消息中没有敏感数据

📊 api参考

🏢 Zerodha API集成

服务器使用Zerodha的官方KiteConnect API:

  • 📈 交易 -下单,查看持仓
  • 💰 共同基金 -SIP管理和持股
  • 🔐 认证 -基于OAuth的登录流程

🤖 MCP协议

实现AI助手集成的模型上下文协议:

  • 🛠️ 工具定义 -结构化参数模式
  • 🛡️ 错误处理 -优雅的失败反应
  • 🔒 类型安全 -Zod模式验证

🧪 发展

📁 项目结构

src/
├── main.ts              # Server entry point
├── config/
│   └── KiteConfig.ts    # Zerodha configuration
├── functions/
│   └── OrderRelated.ts  # Trading functions
└── utils/
    └── readWrite.ts     # File utilities

🛠️ 添加新工具

  1. 📝 在中定义工具 main.ts
  2. ⚙️ 在中实现该功能 functions/
  3. 🛡️ 添加适当的错误处理
  4. 📚 更新此自述文件

🚨 重要提示

⚠️ 交易风险

  • 💰 现实金钱交易 -此服务器执行真实交易
  • ⏰ 市场交易时间 -订单仅在市场交易时间有效
  • 🛡️ 风险管理 -实施适当的止损机制
  • 🧪 测试 -使用纸质交易进行测试

🔧 API限制

  • ⏱️ 速率限制 -遵守Zerodha的API费率限制
  • 🕐 市场交易时间 -有些功能仅在交易时间工作
  • 🏦 账户类型 -需要Zerodha交易账户

🔧 故障排除

🚨 常见问题

🔐 身份验证错误

# Check if tokens are valid
cat config/tokens.json

# Re-authenticate if needed
# Use login-to-zerodha tool

⚠️ API错误

  • 🔑 在中验证API凭据 .env
  • 🏦 检查Zerodha帐户状态
  • ⏰ 确保交易功能的市场交易时间

🌐 网络问题

  • 📡 检查互联网连接
  • 🏢 验证Zerodha API状态
  • 📝 查看错误日志以了解详细信息

🤖 Claude MCP连接问题

  • 🔍 找不到服务器:确保工作目录路径正确
  • 🛠️ 未找到命令:确保 bun 已安装并位于PATH中
  • 🔐 认证失败:检查环境变量是否设置正确
  • ⏰ 令牌已过期:使用登录流重新进行身份验证
  • 🚫 权限不足:确保项目文件夹具有适当的读/写权限

🤝 贡献

  1. 🍴 分叉存储库
  2. 🌿 创建要素分支(git checkout -b feature/new-tool)
  3. ⚙️ 实施您的更改
  4. 🛡️ 添加适当的错误处理
  5. 📚 更新文档
  6. 📤 提交拉取请求

📝 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

⚠️ 免责声明

此软件仅供教育和个人使用。交易涉及巨大的损失风险,并不适合所有投资者。开发人员不对因使用此软件而产生的任何经济损失负责。 🛡️

🆘 支持

  • 🐛 问题 -通过GitHub Issues报告错误
  • 📚 文档 -查看此README和代码注释
  • 🏢 Zerodha支持 -联系Zerodha了解API相关问题

🙏 致谢

  • 🏢 Zerodha -交易平台和API
  • 🤖 MCP-SDK -模型上下文协议实现
  • 🔒 TypeScript -类型安全和开发经验

由Kshitij Banerjee制作🔥