返回市场
零度之翼-mcp

零度之翼-mcp

作者:mtwn10526 星标更新:2025-04-17

项目介绍

Zerodha MCP 服务器与客户端

基于Python的交易助手,连接到Zerodha MCP服务器以帮助用户管理其交易账户。

功能

  • 账户管理:管理Zerodha交易账户、订单和持仓
  • 交互式聊天界面:用于交易操作的自然语言接口
  • MCP集成:基于模型上下文协议(MCP)进行标准化通信
  • Zerodha API集成:使用Zerodha的API与交易平台互动
  • Agno代理:使用Agno代理与交易平台互动
  • Google ADK代理:使用Google ADK代理与交易平台互动

技术栈

diagram-export-4-17-2025-4_00_54-PM

工具

  • 下单:在交易平台下订单
  • 修改订单:在交易平台修改订单
  • 取消订单:在交易平台取消订单
  • 获取订单:在交易平台获取订单
  • 获取订单历史:在交易平台获取订单历史
  • 获取订单成交:在交易平台获取订单成交
  • 获取保证金:在交易平台获取保证金
  • 获取持仓:在交易平台获取持仓
  • 获取仓位:在交易平台获取仓位
  • 获取用户资料:在交易平台获取用户资料

预备条件

  • Python
  • 具有个人API访问权限的Zerodha交易账户,从这里获取
  • Zerodha API密钥和秘密
  • OpenAI API密钥(用于Agno代理)
  • Gemini API密钥或应用默认凭证(用于Google ADK代理)

安装

  1. 克隆仓库:
git clone https://github.com/mtwn105/zerodha-mcp-server-client.git
cd zerodha-mcp-server-client
  1. 创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate  # 在Windows上:venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 设置环境变量:
# 复制示例环境文件
cp .env.example .env

# 使用您的凭据编辑.env文件
  1. 创建一个包含您配置的.env文件:
# 服务器配置
ZERODHA_API_KEY=your_api_key
ZERODHA_API_SECRET=your_api_secret
PORT=8001
SERVER_MODE=sse  # 或 stdio

# 客户端配置
MCP_HOST=localhost
MCP_PORT=8001
OPENAI_API_KEY=your_openai_api_key
# GOOGLE_API_KEY=your_google_api_key

服务器用法

服务器提供了一组工具来与Zerodha交易平台互动。要启动服务器:

  1. 确保您的.env文件已正确配置了您的Zerodha API凭据。

  2. 使用以下方法之一启动服务器:

# 使用环境变量
python server.py

# 或使用命令行参数
python server.py --api-key your_api_key --api-secret your_api_secret --port 8001 --mode sse

服务器提供的工具包括:

  • get_login_url:获取用户认证登录URL
  • get_access_token:使用请求令牌生成访问令牌
  • get_user_profile:获取用户的Zerodha资料信息
  • get_margins:获取可用保证金和资金详情
  • get_holdings:获取投资组合持仓
  • get_positions:获取当前仓位
  • get_orders:获取当天的所有订单
  • get_order_history:获取特定订单的历史
  • get_order_trades:获取由订单生成的交易
  • place_order:下单
  • modify_order:修改现有订单
  • cancel_order:取消订单

客户端用法

该项目提供了三种客户端实现方式:

  1. 使用Agno框架(client/agno_client.py
  2. 使用Agno与Gradio网页界面(client/agno_gradio_client.py
  3. 使用Google ADK(client/google_adk_client.py

所有客户端都连接到MCP服务器,并提供用于交易操作的交互界面。

运行Agno客户端

  1. 确保您的.env文件中包含OPENAI_API_KEY
  2. 使用以下方法之一启动客户端:
# 使用来自.env文件的环境变量
python client/agno_client.py

# 使用命令行参数
python client/agno_client.py --host localhost --port 8001

# 使用组合(命令行参数优先)
MCP_HOST=localhost MCP_PORT=8001 python client/agno_client.py --host otherhost --port 9000

运行Google ADK客户端

  1. 确保您已经通过设置GOOGLE_API_KEY环境变量(并在.env中取消注释)或使用应用默认凭证(运行gcloud auth application-default login)进行了Google AI的身份验证。
  2. 使用以下方法之一启动客户端:
# 使用来自.env文件的环境变量
python client/google_adk_client.py

# 使用命令行参数
python client/google_adk_client.py --host localhost --port 8001

# 使用组合(命令行参数优先)
MCP_HOST=localhost MCP_PORT=8001 python client/google_adk_client.py --host otherhost --port 9000

运行Gradio网页界面

  1. 确保您的.env文件中包含OPENAI_API_KEY
  2. 启动Gradio网页界面:
# 使用来自.env文件的环境变量
python client/agno_gradio_client.py

# 使用命令行参数进行服务器配置
python client/agno_gradio_client.py --host localhost --port 8001
  1. 打开您的网络浏览器并导航到终端显示的URL(通常是http://localhost:7860)。

  2. 使用网页界面:

    • 通过输入主机和端口连接到MCP服务器
    • 使用自然语言与AI助手聊天
    • 通过用户友好的界面管理您的Zerodha账户

Gradio界面提供:

  • 通过主机/端口配置轻松管理连接
  • 与AI助手实时聊天界面
  • 连接状态的视觉反馈
  • 移动友好响应式设计

客户端配置

两个客户端都支持通过多个来源进行配置,优先级如下:

  1. 命令行参数(最高优先级)
  2. 环境变量
  3. .env文件变量

配置选项:

  • 环境变量:MCP_HOSTMCP_PORT
  • 命令行参数:--host--port
  • .env文件变量:MCP_HOSTMCP_PORTOPENAI_API_KEYGOOGLE_API_KEY

默认值(如果没有提供配置):

  • 主机:localhost
  • 端口:8001

客户端会自动从项目根目录下的.env文件加载环境变量。确保您的.env文件包含必要的配置:

# 客户端配置
MCP_HOST=localhost
MCP_PORT=8001
OPENAI_API_KEY=your_openai_api_key
# GOOGLE_API_KEY=your_google_api_key
  1. 客户端将自动使用提供的配置连接到MCP服务器。

  2. 连接后,您可以使用自然语言命令与助手互动。例如:

    • "显示我的持仓"
    • "我现在的仓位是什么?"
    • "下单购买10股RELIANCE"
    • "取消订单ID 123456"
  3. 要退出客户端,请在提示时键入'quit'。

开发

项目结构

  • client/agno_client.py:使用Agno实现的MCP客户端
  • client/google_adk_client.py:使用Google ADK实现的MCP客户端
  • client/agno_gradio_client.py:使用Gradio和Agno实现的网页界面
  • server.py:与Zerodha API集成的MCP服务器实现
  • generate_token.py:生成访问令牌的实用程序
  • requirements.txt:项目依赖项
  • .env:环境配置

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建拉取请求

许可证

本项目根据Apache许可证2.0发布 - 查看LICENSE文件了解详细信息。

致谢