项目简介
本项目是一个基于Model Context Protocol (MCP) 构建的服务器端应用,旨在将大型语言模型(LLM)与openSUSE的Open Build Service (OBS) 进行深度集成。它允许LLM通过标准化的JSON-RPC协议,以自然语言交互的方式,获取、管理和操作OBS上的软件包、项目元数据以及执行构建任务,从而实现LLM驱动的构建自动化和软件包管理。
主要功能点
- 软件包搜索与管理: 允许LLM搜索Open Build Service上的源代码包(也称作bundles),或列出本地工作目录中已检出的软件包文件。
- 项目元数据操作: 提供工具来获取OBS项目的详细元数据(如标题、描述、维护者、仓库配置),也支持LLM修改和设置项目元数据,包括创建新项目。
- 软件包创建与检出: LLM可以指令服务器在OBS上创建新的源代码包,并将其从远程仓库检出到本地指定的工作目录,为后续修改和构建做准备。
- 软件包构建: LLM可以触发OBS上的软件包构建任务,支持指定虚拟机类型、多构建变体、发行版和架构等参数,实现远程构建自动化。
- 构建日志获取与分析: 获取远程或本地的软件包构建日志,并对其进行结构化解析,提供构建阶段、持续时长、成功状态等关键信息,便于LLM理解构建结果。
- 凭证安全管理: 通过读取'osc'工具的配置文件('~/.oscrc')或系统密钥环(keyring)安全地获取OBS凭证,确保操作的合法性。
安装步骤
- Go语言环境: 确保您的系统已安装Go语言编程环境。您可以访问 Go官网 获取安装指南。
- 克隆仓库:
git clone https://github.com/openSUSE/osc-mcp.git cd osc-mcp - 编译服务器:
在项目根目录下执行以下命令,编译生成服务器可执行文件:
这将在当前目录下生成一个名为 'osc-mcp' 的可执行文件。go build . - 配置'osc'命令行工具: 'osc-mcp' 服务器依赖于 'osc' 命令行工具来与Open Build Service交互。请确保您已安装并配置 'osc' 工具,特别是 '~/.oscrc' 文件中的API地址和用户凭证(或通过系统密钥环)。确保'osc'命令在您的系统PATH中可被找到。
服务器配置(供MCP客户端使用)
要让支持MCP协议的LLM客户端(如'gemini-cli'或'mcphost')连接到此MCP服务器,您需要提供服务器的启动命令和参数。以下是配置示例,您需要将其添加到MCP客户端的配置文件中(例如 '~/.mcphost.yml' 或 '~/.gemini/settings.json'):
// 示例 JSON 配置片段 { "mcpServers": { "osc-mcp": { // 服务器名称,客户端将用此名称引用此服务器 "command": "/path/to/your/osc-mcp/osc-mcp", // 指向您编译生成的osc-mcp可执行文件的绝对路径 "args": [ "-workdir", "/tmp/mcp/osc-mcp", // MCP服务器的工作目录,用于存储临时文件和检出的软件包。请确保此路径存在且可写。 "-clean-workdir" // 每次MCP服务器启动时,清理上述工作目录,以确保环境的干净。 ] // 以下是MCP服务器的一些可选参数及其注释,您可以根据需要添加: // "-http", ":8080", // 启用HTTP流式传输模式,服务器将监听指定地址(例如,所有接口的8080端口)而不是标准输入/输出。 // "-api", "https://api.opensuse.org", // 指定Open Build Service的API地址,如果与.oscrc中的配置不同。 // "-user", "your_obs_username", // Open Build Service用户名,将覆盖从.oscrc或密钥环获取的凭证。 // "-password", "your_obs_password", // Open Build Service密码,将覆盖从.oscrc或密钥环获取的凭证。 // "-logfile", "/var/log/osc-mcp.log", // 指定服务器日志的输出文件路径,而非标准错误输出。 // "-verbose", // 启用详细日志输出,显示更多信息性消息。 // "-debug" // 启用调试日志输出,显示最详细的调试信息。 } }, // 如果使用 gemini-cli 并且服务器需要在特定目录下操作,请确保添加工作目录: "include-directories": ["/tmp/mcp/osc-mcp"] }
基本使用方法
配置完成后,启动您的MCP客户端(例如'gemini-cli'或'mcphost')。客户端将根据配置自动启动并连接到 'osc-mcp' 服务器。一旦连接建立,LLM将能够通过向MCP客户端发送提示,间接调用服务器提供的各种工具(如'search_bundle', 'build_package', 'get_project_meta'等),从而实现与Open Build Service的智能交互。
例如,使用 'gemini-cli' 客户端,并确保在配置的'include-directories'目录中启动:
cd /tmp/mcp # 替换为您的实际工作目录 npx https://github.com/google-gemini/gemini-cli
现在,LLM可以通过自然语言提示调用Open Build Service的功能了。
信息
分类
开发者工具