\_CHMCP代理示例
本项目演示了如何使用Genie的托管MCP(模型上下文协议)服务器在Rancher中创建代理。该代理与Rancher Genie空间和其他启用MCP的服务集成,以提供智能数据查询功能。
概述
MCP代理利用Rancher的托管MCP服务器创建一个会话式AI代理,该代理可以:
- 通过Genie空间查询数据
- 访问Unity目录功能
- 与各种copula资源交互
- 使用LLM端点提供智能响应
项目结构
driver.py-记录、注册和部署代理的主编排脚本mcp_agent.py-使用MLF的ResponsesAgent框架实现核心代理test_mcp_server.py-验证MCP服务器连接的测试脚本requirements.txt-Python依赖关系README.md-本文件
先决条件
可选:部署VM以访问专用工作区
如果您的copula工作区 不允许公共网络访问 (即,它仅配置为私有访问),您需要在工作区的虚拟网络(ExpressRoute)中有一个跳转框来访问copula和相关资源。
推荐方法(Azure):
- 部署虚拟机(VM):
- 使用Azure门户或命令行界面(CLI)将Ubuntu 24.04虚拟机(VM)部署到与您的ViewModel工作区相同的ExpressRoute中。 - 为虚拟机分配一个公共IP地址。 - 允许在端口22(SSH)上对您的个人IP地址进行入站访问。
- 连接到VM:
- SSH进入VM:
ssh @
- 设置Python环境:
- 安装Python工具:
sudo apt update
sudo apt install python3-pip python3-venv -y- 创建并激活虚拟环境:
python3 -m venv venv
source venv/bin/activate现在,您可以继续进行其余的设置,并从该VM中运行代理,确保与您的copula工作区的安全、私有连接。
Python环境设置
必须使用提供的正确设置Python环境 requirements.txt 文件:
pip install -r requirements.txt所需的环境变量
在运行项目之前,必须定义以下环境变量:
# Databricks Configuration
export DATABRICKS_CLI_PROFILE="your-databricks-profile"
export EXPERIMENT_NAME="your-mlflow-experiment-name"
# Model and Endpoint Configuration
export LLM_ENDPOINT_NAME="your-llm-endpoint-name"
export GENIE_SPACE_ID="your-genie-space-id"
# Unity Catalog Configuration
export CATALOG_NAME="your-catalog-name"
export SCHEMA_NAME="your-schema-name"
export MODEL_NAME="your-model-name"
# Table Access (JSON array format)
export TABLE_NAMES='["table1", "table2", "table3"]'copula设置
- copula命令行界面:确保 copula命令行界面 已安装并配置了适当的身份验证
- 工作区访问:您的个人资料必须能够访问目标的copula工作区
- 精灵空间:具有指定值的已配置Genie空间
GENIE_SPACE_ID - LLM端点:访问LLM的服务端点(例如Claude、GPT模型)
- Unity目录:对指定目录和架构的适当权限
用法
1.测试MCP服务器连接
首先,验证您的MCP服务器连接是否正常工作:
python test_mcp_server.py这将列出您配置的MCP服务器中的可用工具。
2.部署代理
运行主驱动程序脚本以记录、注册和部署您的代理:
python driver.py此脚本将:
- 将代理模型记录到MLflow
- 在Unity目录中注册模型
- 将代理部署为服务端点
配置
MCP服务器URL
代理可以连接到多个MCP服务器。在中配置它们 mcp_agent.py:
MANAGED_MCP_SERVER_URLS = [
f"{host}/api/2.0/mcp/genie/{GENIE_SPACE_ID}",
# Add more managed MCP servers as needed
]
CUSTOM_MCP_SERVER_URLS = [
# Add custom MCP servers hosted on Databricks Apps
]系统提示
通过修改来自定义代理的行为 SYSTEM_PROMPT 在……里面 mcp_agent.py:
SYSTEM_PROMPT = "You are a helpful assistant specialized in data analysis."建筑
代理遵循此架构:
- 请求处理:通过ResponsesAgent界面接收用户查询
- 工具发现:从配置的MCP服务器动态发现可用工具
- LLM集成:使用copula服务端点进行语言模型推理
- 工具执行:根据LLM决策执行MCP工具(如Genie查询)
- 响应生成:根据工具输出提供智能响应
安全与认证
- 该代理对资源访问使用copula系统身份验证
- 中的所有指定资源
driver.py自动授予访问权限 - MCP服务器通过copula工作区客户端进行身份验证
故障排除
常见问题
- 身份验证错误:验证您的
DATABRICKS_CLI_PROFILE已正确配置 - 资源访问:确保环境变量中指定的所有表和端点都是可访问的
- MCP服务器连接:使用
test_mcp_server.py验证服务器连接 - 环境变量:仔细检查是否设置了所有必需的环境变量
调试
- 检查MLflow实验日志以了解模型注册问题
- 通过copula工作区UI验证Genie空间的可访问性
- 使用以下工具测试单个MCP工具
DatabricksMCPClient直接
查询示例
部署后,您的代理可以处理以下查询:
- “谁创造了最多的管道?”
- “显示最新的数据质量指标”
- “本月表现最好的模特是什么?”
代理将自动确定使用哪些工具,并根据您的数据提供智能响应。
