项目简介
NixMCP 是一个基于 Model Context Protocol (MCP) 的服务器,旨在为 AI 模型提供关于 NixOS 软件包和配置选项的最新信息。它使用 FastMCP 框架构建,通过标准化的 MCP 接口,使 AI 模型能够访问 NixOS 的 Elasticsearch API,从而获取准确的数据,减少信息过时或产生幻觉的可能性。
主要功能点
- MCP 服务器实现: 实现了完整的 Model Context Protocol 服务器端,可以处理 MCP 客户端的请求。
- NixOS 资源访问: 提供对 NixOS 软件包和配置选项信息的便捷访问,包括搜索、详细信息查询等。
- 标准化 MCP 接口: 采用标准的 MCP 协议进行通信,易于与各种 MCP 客户端集成。
- 强大的搜索能力: 支持关键词搜索,并能自动进行通配符匹配,提高搜索灵活性。
- 详细信息获取: 能够获取软件包和配置选项的详细元数据,例如描述、版本、类型、默认值等。
- 缓存机制: 内置缓存系统,减少对后端 Elasticsearch API 的重复请求,提高响应速度。
安装步骤
- 安装 Nix: 确保你的系统已安装 Nix 包管理器。如果还没有安装,请访问 https://nixos.org/download.html 按照指引安装。
- 克隆仓库: 使用 'git clone https://github.com/utensils/nixmcp' 命令克隆 NixMCP 仓库到本地。
- 进入开发环境: 在仓库根目录下,运行 'nix develop' 命令进入 Nix 开发环境。这将自动配置好运行 NixMCP 服务器所需的环境和依赖。
- 配置 Elasticsearch 访问:
- 在仓库根目录下创建 '.env' 文件(如果不存在)。
- 在 '.env' 文件中填写 NixOS Elasticsearch API 的访问信息。 尽管代码中已包含默认的 Elasticsearch 账号,但为了安全和可能的自定义需求,建议检查并根据需要配置 '.env' 文件,例如:
注意: 通常情况下,默认配置可能已经足够使用,但如果遇到访问问题,可以尝试配置 '.env' 文件。ELASTICSEARCH_URL=https://search.nixos.org/backend/latest-42-nixos-unstable/_search ELASTICSEARCH_USER=your_username # 你的 Elasticsearch 用户名 (可选) ELASTICSEARCH_PASSWORD=your_password # 你的 Elasticsearch 密码 (可选)
服务器配置
MCP 客户端需要配置以下 JSON 信息以连接 NixMCP 服务器。 这段配置描述了如何通过 'nix develop' 进入开发环境并运行 'run' 脚本来启动 NixMCP 服务器:
{ "server name": "NixMCP Server", "command": "nix develop", "args": [ "-c", "run" ], "options": { // 可选参数,例如指定服务器端口,默认为标准输入/输出 // "port": 8080 } }
配置说明:
- '"server name"': 服务器的自定义名称,用于在 MCP 客户端界面中识别和管理连接。
- '"command"': 启动服务器的命令,这里使用 'nix develop' 进入预配置的开发环境。
- '"args"': 传递给 'nix develop' 命令的参数列表。
- '"-c"': 告诉 'nix develop' 执行后续的 shell 命令。
- '"run"': 在 'nix develop' 环境中,'run' 脚本负责启动 NixMCP 服务器。 如果需要指定服务器端口,例如 '8080',可以将 '"args"' 修改为 '["-c", "run --port=8080"]'。
- '"options"': 额外的配置选项,例如 '"port"' 可以用来指定服务器监听的端口号。 如果不指定,服务器默认通过标准输入/输出进行通信。
基本使用方法
-
启动服务器: 在 MCP 客户端中,根据上述 "服务器配置" 添加并启动 NixMCP 服务器。 客户端会根据配置自动运行 'nix develop -c run' 命令来启动服务器。
-
在 MCP 客户端中使用: 在支持 MCP 协议的客户端 (如 Claude 等) 中,你可以使用特定的 URI 格式来访问 NixOS 资源。 例如:
- 获取软件包信息: '~nixos://package/python3' - 查询名为 "python3" 的 NixOS 软件包的详细信息。
- 查询 NixOS 选项: '~nixos://option/services.nginx.enable' - 获取 'services.nginx.enable' NixOS 配置选项的详细信息。
- 搜索软件包: '~nixos://search/packages/networkmanager' - 搜索包含 "networkmanager" 关键词的 NixOS 软件包。
- 搜索选项: '~nixos://search/options/nginx ssl' - 搜索包含 "nginx" 和 "ssl" 关键词的 NixOS 配置选项。
MCP 客户端会将这些 URI 请求发送到 NixMCP 服务器,服务器查询 NixOS 数据后返回结果,客户端即可在对话或应用中使用这些信息。 此外,还可以利用 'search_nixos', 'get_nixos_package', 'get_nixos_option' 等工具函数在对话中更灵活地查询和利用 NixOS 数据。 详细的资源和工具用法请参考仓库的 README.md 文件中 "MCP Implementation" 和 "MCP Tools" 部分。
信息
分类
AI与计算