OpenStack MCP代理测试工具

一个用于测试OpenStack MCP服务器和基础代理程序的工具,通过LLM与MCP服务器交互。

  • by Akrog
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 akrog/mcp-openstack

使用说明

OpenStack MCP + 代理 PoC

此存储库包含运行OpenStack MCP的代码和说明 服务器和一个非常基本的代理配套程序来测试它。

本PoC中采用的方法是:

  • 使用OpenStack codegenerator 项目(openstack-code-generator)to 为OpenStack创建OpenAPI规范。

  • 使用 mcp-openapi 启动多个MCP服务器的项目(每个服务器一个 OpenStack组件)从其完整OpenAPI的过滤版本中提取 规格。

  • 使用 agent 通过LLM与MCP服务器交互的代码。

你不需要所有这些来快速测试,你可以按照 快速启动 指南,但如果你想做一些不同的事情 你需要通过 跑步 导游。

快速启动

我们假设您可以访问OpenStack部署和LLM,因为它们是 需要运行东西。

您还需要 uv 包管理器。如果你没有,你可以用 sudo dnf install uv.

我们将使用2个终端,一个用于MCP服务器,另一个用于代理。

克隆此存储库

我们将使用所需的最少外部项目克隆此存储库 管理事情。

$ git clone --shallow-submodules \
  --recurse-submodules=mcp-openapi \
  https://github.com/Akrog/mcp-openstack.git

$ cd mcp-openstack

运行MCP服务器

首先,我们需要配置MCP服务器,为此,我们将编辑 servers.yaml 归档并替换 <NOVA_PUBLIC_URL>, <CINDER_PUBLIC_URL>, 和 <GLANCE_PUBLIC_URL> 带有我们集群值的占位符。

您会注意到,只有REST API路径的一个子集被启用以避免 拥有工具——许多可以遍历我们模型的上下文窗口或归纳的工具 幻觉。

现在我们可以运行服务器了:

$ cd mcp-openapi

$ uv run main.py --config ../servers.yaml

我们让此服务在此终端上运行,然后转到另一个终端。

运行代理

在另一个航站楼,我们将进入 agent 目录:

$ cd agent

OpenStack客户端配置

现在,我们将确保OpenStack客户端的配置在 标准位置之一 如所述 文档:

  • agent/
  • ~/.config/openstack/

如果我们正在运行OSP 18云,我们可以通过以下方式实现:

$ oc cp openstackclient:/home/cloud-admin/.config/openstack/clouds.yaml ./clouds.yaml
$ oc cp openstackclient:/home/cloud-admin/.config/openstack/secure.yaml ./secure.yaml 

LLM配置

我们将创建一个 llm.token 包含OpenAI LLM的秘密/令牌的文件 我们想要使用的端点。

然后编辑 agent.json 文件以替换 <LLM_URL> 占位符与我们的 LLM的地址和替换 <MODEL> 使用我们想要使用的模型。例如 对于Anthropic,我们可以有这样的东西:

{
  "base_url": "https://api.anthropic.com/v1",
  "model": "claude-3-5-haiku-20241022",
  < ... >
}

运行代理

现在我们只需要启动代理:

$ uv run main.py

享受

现在,我们可以询问有关部署的内容,并在 MCP服务器终端。

例如,为了获得新星口味,我们可以这样做:

$ uv run main.py
LLM: claude-3-5-haiku-20241022 @ https://api.anthropic.com/v1 Tools: 46
>>> What are my flavors?

请注意,代理没有内存,因此每个提示都是干净的 提示LLM。