Zoho MCP语言图代理(POC)
这个概念验证将LangGraph ReAct代理连接到Zoho模型上下文协议(MCP)服务器,这样代理就可以在适当的时候调用Zoho CRM工具(创建潜在客户、搜索联系人等)。
先决条件
- Python 3.11+
- 启用Zoho CRM工具的主动Zoho MCP服务器部署
- Google Generative AI API密钥(Gemini 2.0 Flash)
环境变量
创建一个 .env 在项目根目录中创建文件或导出shell中的变量:
必需变量
ZOHO_MCP_URL=
GOOGLE_API_KEY=ZOHO_MCP_URL:在Zoho MCP控制台中,打开服务器,转到 连接→ HTTP,并复制流媒体URL。GOOGLE_API_KEY:从Google AI Studio生成,并确保为项目启用Gemini 2.0 Flash模型。
可选:OAuth令牌身份验证(推荐)
对于自动令牌刷新(令牌永不过期),请添加以下OAuth凭据:
ZOHO_CLIENT_ID=
ZOHO_CLIENT_SECRET=
ZOHO_REDIRECT_URI=http://localhost:8080/oauth/callback
ZOHO_SCOPE=ZohoCRM.modules.ALL
ZOHO_ACCOUNTS_SERVER=https://accounts.zoho.comZOHO_CLIENT_ID&ZOHO_CLIENT_SECRET:在以下网址创建Zoho OAuth应用程序https://api-console.zoho.com/ZOHO_REDIRECT_URI:必须与Zoho OAuth应用程序中配置的重定向URI匹配ZOHO_SCOPE:OAuth作用域(默认:完全CRM访问权限)ZOHO_ACCOUNTS_SERVER:Zoho帐户服务器(默认值:https://accounts.zoho.com,使用https://accounts.zoho.eu对于欧盟来说,https://accounts.zoho.in印度)
中的示例URL agent_config.py 是一个占位符。用你自己的端点替换它。安装
cd /Users/nirajvaijinathmore/Desktop/dev/langgraph-zoho-mcp/zoho_mcp_agent
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtOAuth设置(一次性,令牌刷新所需)
如果您已配置OAuth凭据,请运行一次性设置以获取刷新令牌:
python setup_oauth.py此脚本将:
- 生成一个授权URL供您访问
- 引导您完成OAuth流程
- 交换访问和刷新令牌的授权码
- 将令牌保存到
.tokens.json(自动永久刷新)
完成此一次性设置后,令牌将在到期前自动刷新。您永远不需要再次手动进行身份验证。
创建Zoho OAuth应用程序
- 首选https://api-console.zoho.com/
- 点击“添加客户端”→ “基于服务器的应用程序”
- 配置:
- 客户名称:您的应用程序名称 - 你的家园: http://localhost:8080 (或您的域名) - 授权重定向URI: http://localhost:8080/oauth/callback (必须匹配 ZOHO_REDIRECT_URI)
- 复制 客户端ID 和 客户端密钥 你的
.env文件
运行POC
python main.py脚本:
- 通过加载环境变量
agent_config.py. - 如果已配置,则自动刷新OAuth令牌 (确保令牌永不过期)。
- 通过以下方式连接到Zoho MCP服务器
MultiServerMCPClient带有身份验证标头。 - 使用以下工具发现所有Zoho CRM工具
load_mcp_tools. - 启动由Gemini 2.5 Flash支持的LangGraph ReAct代理(通过
ChatGoogleGenerativeAI). - 发送可操作的Zoho CRM提示,并流式传输推理+最终答案。
确保您的Zoho MCP服务器正在运行;否则,脚本将退出并显示连接错误。
许可证管理
这 token_manager.py 模块处理所有OAuth令牌操作:
- 自动刷新:令牌在到期前5分钟刷新
- 安全存储:令牌存储在
.tokens.json具有限制性文件权限(600) - 零人工干预:初始设置后,令牌将永远自动刷新
如果您需要重新进行身份验证(例如,在撤销访问权限后),只需删除 .tokens.json 然后跑 setup_oauth.py 再一次。
