多工具通信代理

基于Gemini模型的多工具通信代理,能够通过调用本地工具(如计算、绘图和电子邮件发送)解决复杂多步骤问题。

  • by himani1812
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 himani1812/Agentic-MCP

使用说明

🧠 代理MCP:计算器、绘图和电子邮件代理

该项目展示了 代理工作流程 使用 **MCP(多工具通信协议)**该代理由 Gemini模型,能够通过顺序调用各种本地工具来解决复杂的多步骤问题,包括数学函数、图像绘制和通过Gmail API发送电子邮件。

🚀 关键组件

  1. talk2mcp.py:定义和托管可用工具(计算器、绘图、电子邮件)的本地服务器。
  2. agent.py:连接到MCP服务器的客户端,向Gemini模型查询下一个操作,并执行模型建议的工具调用。
  3. Gmail API集成:使代理能够发送真实的电子邮件,需要 OAuth 2.0配置.

🛠️ 设置和安装

1.项目结构

确保您的项目目录组织如下。标记为的文件 * 在设置过程中生成。

agentic-mcp/
├── .env
├── talk2mcp.py
├── agent.py
├── credentials.json
└── token.pickle* ```

### 2. Dependencies

Install all necessary Python packages using the following command. You may need to create a `requirements.txt` file first.

```bash
pip install google-genai google-api-python-client google-auth-oauthlib google-auth-httplib2 python-dotenv Pillow

3.API密钥配置

创建一个名为的文件 .env 在您的项目根目录中,并添加您的Gemini API密钥:

# .env file
GEMINI_API_KEY="YOUR_GEMINI_API_KEY_HERE"

📧 Gmail API配置(对于 send_email)

这 send_email 该工具依赖于全球 service 对象,它是通过使用以下命令对Python脚本进行身份验证而创建的 谷歌OAuth 2.0.

A.谷歌云控制台设置

  1. 创建/选择项目: 转到 谷歌云控制台 并创建一个项目。
  2. 启用API: 在 API和服务>库,搜索和 启用Gmail API.
  3. 配置OAuth同意屏幕:
    • 设置 用户类型 (例如。, 外部).
    • 在 范围 在第节中,添加以下范围,这足以发送电子邮件: https://www.googleapis.com/auth/gmail.send
  4. 创建凭据:
    • 首选 API和服务>凭据.
    • 点击 +创建凭据 并选择 OAuth客户端ID.
    • 对于 应用程序类型,选择 桌面应用.
    • 点击 下载JSON 和 将文件重命名为 credentials.json。将此文件放置在项目根目录中。

B.初始身份验证运行

这 service 对象已在您的 talk2mcp.py 文件。您必须运行服务器一次才能完成所需的交互式身份验证流程。

  1. 运行服务器:
    python talk2mcp.py
    
  2. 浏览器登录: 一个网络浏览器窗口将自动打开,提示您使用您的谷歌帐户登录,并授予应用程序发送电子邮件的权限。
  3. 令牌生成: 成功授权后,一个名为 token.pickle 将生成。此文件存储凭据,并允许您的脚本在以后的运行中自动进行身份验证。

如果你看到输出 Gmail API service authenticated successfully.,the service 对象是全局定义的,并且 send_email 工具已准备好使用。


🏃 运行代理

代理执行需要同时运行MCP服务器和代理客户端。这 agent.py 脚本自动管理 talk2mcp.py 过程通过 stdio_client.

1.启动代理客户端

执行主脚本:

python agent.py

2.多步查询示例

代理人被指示用链条锁住工具。示例查询设置在 agent.py 致:

  1. 呼叫 draw_image_with_text 以创建图像。
  2. 呼叫 send_email 报告任务的完成情况。

代理将在循环中运行,每次迭代生成一个函数调用,直到达到最终答案。

3.验证

  • 图像输出: 图像文件(例如。, final_drawing.png)将保存在您的项目根目录中。
  • 电子邮件输出: 检查查询中指定的电子邮件地址的收件箱(report@example.com 在示例中)。应显示主题为“代理任务:绘图完成”的消息。