ADK与FastMCP集成演示

一个展示Google的Agent Development Kit (ADK)与FastMCP服务器集成的演示项目,通过HTTP端点提供多种工具,用于执行基于用户交互的任务。

  • by c0dyhi11
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 c0dyhi11/adk-mcp-demo

使用说明

ADK与FastMCP集成演示

这个仓库包含一个演示项目,展示了谷歌(Google)技术之间的集成 代理开发工具包(ADK) 和一个 FastMCP(快速多能力代理) 服务器。

该项目由两个主要部分组成:

  1. A. FastMCP服务器 该工具通过一个HTTP端点暴露了多个功能。
  2. 一 ADK代理 该系统连接到MCP服务器,以使用其工具根据用户交互执行一系列任务。

概述

本演示的目标是展示ADK代理如何利用托管在FastMCP服务器上的外部工具。

MCP服务器

位于 mcp_server/ 目录,服务器是使用(某种技术或框架)构建的 fastmcp 库。它会自动发现并注册放置在其内的任何工具 mcp_server/tools/ 目录。

以下工具包含在内:

  • generate_random_number(max_number: int) -> int返回1到(某个数)之间的随机整数 max_number。
  • is_prime(n: int) -> bool检查给定的整数 n 是一个质数。
  • calculate_pi_to_digits(digits: int) -> str计算圆周率π的指定小数位数的值。

ADK 代理

位于 agents/mcp_demo/,的 Random_Prime_Number_Pi_Calculating_Agent 是(一个) LlmAgent 配置为使用Gemini模型。它性格古怪,使用90年代的嘻哈俚语说话。

代理遵循以下逻辑:

  1. 它要求用户输入一个正整数。
  2. 它使用的是 generate_random_number 以用户号码为最大值的工具。
  3. 如果随机数小于或等于10它告诉用户数字,并以玩笑的方式建议,如果需要工具来计算如此少位数的π,那么他们可能“不够书呆子”。然后,交互等待用户输入新的数字。
  4. 如果随机数大于10,它使用了 is_prime 用于检查素数的工具。
  5. 如果这个数不是质数它会通知用户,然后循环返回生成一个新的随机数。
  6. 如果这个数是质数,它使用了 calculate_pi_to_digits 一个用于计算π到这么多位数的工具。然后,它将质数和计算出的π值呈现给用户,完成整个循环。

入门指南

按照以下说明设置并运行演示。

先决条件

  • Python 3.8或更高版本
  • pip (Python 包安装程序)

安装

  1. 克隆仓库:

    git clone https://github.com/c0dyhi11/adk-mcp-demo.git
    cd adk-mcp-demo
    
  2. 设置一个虚拟环境(推荐):

    python3 -m venv venv
    source venv/bin/activate
    # On Windows, use: venv\Scripts\activate
    
  3. 安装所需的依赖项: 这个项目依赖于 google-adk 并且 fastmcp 这些都包含在附带的requirements.txt文件中。

    pip install -r requirements.txt
    

如何运行演示程序

该演示需要在两个不同的终端中运行两个独立的进程:MCP服务器和ADK代理。

步骤1:启动MCP服务器

在你的第一个终端中,从项目目录的根目录运行MCP服务器。

python mcp_server/main.py

你应该看到输出信息,表明服务器已启动并发现了工具:

Discovered and loaded tool package: tools.calc_pi
Discovered and loaded tool package: tools.is_prime
Discovered and loaded tool package: tools.random_num
INFO:     Started server process [XXXXX]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit)

你可以选择在另一个终端中运行测试脚本来验证服务器是否正常工作:

python mcp_server/test_fastmcp_server.py

它应该输出类似这样的内容:

[Tool(name='calculate_pi_to_digits', title=None, description='Calculates Pi to a given number of digits.', inputSchema={'properties': {'digits': {'type': 'integer'}}, 'required': ['digits'], 'type': 'object'}, outputSchema={'properties': {'result': {'type': 'string'}}, 'required': ['result'], 'type': 'object', 'x-fastmcp-wrap-result': True}, icons=None, annotations=None, meta={'_fastmcp': {'tags': []}}), Tool(name='is_prime', title=None, description='Checks if a number is prime.', inputSchema={'properties': {'n': {'type': 'integer'}}, 'required': ['n'], 'type': 'object'}, outputSchema={'properties': {'result': {'type': 'boolean'}}, 'required': ['result'], 'type': 'object', 'x-fastmcp-wrap-result': True}, icons=None, annotations=None, meta={'_fastmcp': {'tags': []}}), Tool(name='generate_random_number', title=None, description='Returns a random number between 1 and max_number.', inputSchema={'properties': {'max_number': {'default': 100, 'type': 'integer'}}, 'type': 'object'}, outputSchema={'properties': {'result': {'type': 'integer'}}, 'required': ['result'], 'type': 'object', 'x-fastmcp-wrap-result': True}, icons=None, annotations=None, meta={'_fastmcp': {'tags': []}})]

步骤2:运行ADK代理

你需要创建一个 .env 文件在 agents/mcp_demo/ 包含您环境配置的目录,您可以使用此目录与Google Cloud的Vertex AI或Google AI Studio配合使用:

对于Google Cloud Vertex AI

你的 .env 文件应该如下所示:

GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=<your-project-id>
GOOGLE_CLOUD_LOCATION=us-central1

对于Google Cloud Vertex AI,您还需要对您的环境进行身份验证。这需要使用gcloud CLI。 按照说明安装 gcloud CLI 在这里

配置您的GCP项目:
gcloud config set project <your_project_id>
gcloud auth application-default login

对于Google AI Studio

你的 .env 文件应该看起来像这样:

GOOGLE_GENAI_USE_VERTEXAI=0
GOOGLE_API_KEY=<your_api_key>

在第二个终端(确保您的虚拟环境已激活)中,使用 adk 用于运行代理的命令行工具。

cd agents
adk web

你应该看到类似这样的输出,表明服务器已启动:

INFO:     Started server process [XXXXX]
INFO:     Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://127.0.0.1:8000.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

步骤3:在网页用户界面中与代理进行交互

在您的网络浏览器中,导航至 http://127.0.0.1:8000,然后使用ADK网页界面开始与代理聊天。