动态工具调用服务

该服务允许AI代理通过MCP协议在运行时动态发现和调用工具,无需硬编码任何工具逻辑,适用于需要灵活工具调用的生产环境。

  • by 072arushi
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 072arushi/mcp-kube-dem0

使用说明

mcp-kube 演示

在这个演示中,我们运行了一个 AI 代理 和a MCP(模型上下文协议)服务器 在Kubernetes内部,并表明代理可以 使用MCP在运行时动态发现和调用工具 --无需硬编码任何工具逻辑。

核心思想:

代理不知道提前存在什么工具——它在运行时询问MCP。


先决条件

您的计算机上需要安装以下内容:

  • 码头工人
  • kubectl 的
  • kind(推荐用于本地Kubernetes)

验证您的设置:

docker --version
kubectl version --client
kind version

创建Kubernetes集群 使用kind创建本地Kubernetes集群:

kind create cluster --name mcp-demo-final
kubectl cluster-info --context kind-mcp-demo-final
Load the MCP Server Image into kind

Kind在Docker容器中运行Kubernetes节点,因此本地构建的映像必须显式加载到集群中。

kind load docker-image mcp-server:demo --name mcp-demo-final

检查图像是否存在于本地:

docker images | grep mcp-server

将MCP服务器部署到Kubernetes 应用MCP服务器清单:

kubectl apply -f mcp-server.yaml

等待部署就绪:

kubectl rollout status deployment/mcp-server
kubectl get pods -l app=mcp-server
kubectl get svc mcp-server

此时,MCP服务器正在集群内运行,可以通过Kubernetes DNS发现。

运行代理 部署代理pod:

kubectl apply -f agent.yaml
kubectl get pod agent -w

代理运行完毕后,查看其日志:

kubectl logs agent

预期输出

🔍 Discovering tools via MCP...
- get_time: Get the current server time
- get_cluster_name: Return the Kubernetes cluster name

⚙️ Calling tool: get_cluster_name
✅ Tool result: {'cluster': 'demo-cluster'}

这个演示显示了什么

  • 代理在运行时查询了MCP服务器
  • 可用工具是动态发现的
  • 代理根据可用性选择了最佳工具
  • 该工具通过MCP执行
  • 代理中没有硬编码任何工具。

关键要点 MCP允许代理在运行时动态发现和使用工具,而Kubernetes提供了在生产中安全运行所需的运行时、网络和隔离。

清理(可选) 删除演示资源和集群:

kubectl delete -f agent.yaml
kubectl delete -f mcp-server.yaml
kind delete cluster --name mcp-demo-final