ADK与FastMCP集成演示
该项目由两个主要部分组成:
- A. FastMCP服务器 该工具通过一个HTTP端点暴露了多个功能。
- 一 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年代的嘻哈俚语说话。
代理遵循以下逻辑:
- 它要求用户输入一个正整数。
- 它使用的是
generate_random_number以用户号码为最大值的工具。 - 如果随机数小于或等于10它告诉用户数字,并以玩笑的方式建议,如果需要工具来计算如此少位数的π,那么他们可能“不够书呆子”。然后,交互等待用户输入新的数字。
- 如果随机数大于10,它使用了
is_prime用于检查素数的工具。 - 如果这个数不是质数它会通知用户,然后循环返回生成一个新的随机数。
- 如果这个数是质数,它使用了
calculate_pi_to_digits一个用于计算π到这么多位数的工具。然后,它将质数和计算出的π值呈现给用户,完成整个循环。
入门指南
按照以下说明设置并运行演示。
先决条件
- Python 3.8或更高版本
pip(Python 包安装程序)
安装
- 克隆仓库:
git clone https://github.com/c0dyhi11/adk-mcp-demo.git
cd adk-mcp-demo- 设置一个虚拟环境(推荐):
python3 -m venv venv
source venv/bin/activate
# On Windows, use: venv\Scripts\activate- 安装所需的依赖项:
这个项目依赖于 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=
GOOGLE_CLOUD_LOCATION=us-central1对于Google Cloud Vertex AI,您还需要对您的环境进行身份验证。这需要使用gcloud CLI。 按照说明安装 gcloud CLI 在这里
配置您的GCP项目:
gcloud config set project
gcloud auth application-default login对于Google AI Studio
你的 .env 文件应该看起来像这样:
GOOGLE_GENAI_USE_VERTEXAI=0
GOOGLE_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网页界面开始与代理聊天。
