mcpField
O
OpenStack MCP + Agent PoC

OpenStack MCP + Agent PoC

本地服务
github.com/AkrogAI 与智能体473 周前更新

关于 OpenStack MCP + Agent PoC

OpenStack MCP + Agent PoC 是用于测试 OpenStack MCP 服务及基础 Agent 的概念验证项目。它根据 OpenStack API 生成多个 MCP 服务,并通过 LLM 查询部署;Agent 不保留对话记忆。

主要功能

  1. 01从 OpenAPI 规范生成 MCP 服务
  2. 02按 OpenStack 组件拆分服务
  3. 03通过 LLM 查询 OpenStack 部署
  4. 04限制启用的 REST API 路径

适用场景

  1. 01查询 OpenStack 部署信息
  2. 02查看 Nova flavor 列表

MCP 相关

项目通过 mcp-openapi 从筛选后的 OpenStack OpenAPI 规范启动多个 MCP 服务,供配套 Agent 通过 LLM 调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

OpenStack MCP + Agent PoC

此仓库包含运行 OpenStack MCP 服务以及用于测试它的基础 Agent 配套程序所需的代码和说明。

此 PoC 采用的方法如下:

  • 使用 OpenStack codegenerator 项目(openstack-code-generator)为 OpenStack 生成 OpenAPI 规范。

  • 使用 mcp-openapi 项目,根据经过筛选的 OpenStack 各组件完整 OpenAPI 规范,启动多个 MCP 服务(每个组件一个)。

  • 使用 agent 代码通过大模型与 MCP 服务交互。

若只是快速测试,无需完成上述所有步骤,只需遵循快速入门指南即可;但如果想进行其他操作,则需要阅读运行相关程序指南。

快速入门

我们假设你可以访问 OpenStack 部署和大模型,因为运行这些程序需要它们。

你还需要 uv 包管理器。如果尚未安装,可以使用 sudo dnf install uv 安装。

我们将使用两个终端,一个用于 MCP 服务,另一个用于 Agent。

克隆此仓库

我们将克隆此仓库,并仅包含运行程序所需的最少外部项目。

$ 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

在另一个终端中,进入 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.token 文件,其中包含要使用的 OpenAI 大模型端点的密钥/令牌。

然后编辑 agent.json 文件,将 <LLM_URL> 占位符替换为大模型的地址,并将 <MODEL> 替换为要使用的模型。例如,使用 Anthropic 时,配置可以如下所示:

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

现在只需启动 Agent:

$ uv run main.py
开始使用

现在可以询问有关部署的问题,并在 MCP 服务终端中查看 REST API 调用。

例如,要获取 nova flavors,可以执行:

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

请注意,Agent 没有记忆,因此每条提示词都会作为一条全新的提示词发送给大模型。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。