项目简介
mcp-servers-nix 是一个基于 Nix 构建的 MCP (Model Context Protocol) 服务器配置框架。它旨在简化 MCP 服务器的部署和管理,通过模块化的方式组织各种 MCP 服务器,并利用 Nix 的特性实现配置的可复现性和声明式管理。该框架预置了多种常用的 MCP 服务器包,用户可以根据需求选择和组合这些模块,快速搭建定制化的 MCP 服务器环境。
主要功能点
- 模块化配置: 支持灵活组合和配置多个 MCP 服务器模块,满足不同应用场景的需求。
- 可复现构建: 利用 Nix 包管理器,确保服务器配置和构建过程的可复现性,避免环境差异导致的问题。
- 预置服务器模块: 内置多种常用的 MCP 服务器模块,如文件系统访问、网页抓取、数据库连接等,开箱即用。
- 安全配置管理: 通过 'envFile' 和 'passwordCommand' 等机制,安全地处理敏感信息,避免硬编码泄露。
- 灵活部署方式: 支持多种安装和部署方式,包括直接安装包、使用 overlays 集成到 Nixpkgs、以及使用 flakes 或 npins 进行依赖管理。
安装步骤
本仓库主要提供 MCP 服务器的配置框架和预编译包,你需要先安装 Nix 包管理器。
-
安装 Nix (如果尚未安装): 请根据你的操作系统,访问 Nix 官网 按照指引安装 Nix 包管理器。
-
获取 mcp-servers-nix 仓库: 你可以使用 'git clone' 命令克隆本仓库到本地,或者直接使用 'nix-shell' 或 'nix run' 命令,无需克隆仓库即可运行预编译的服务器包。
git clone https://github.com/natsukium/mcp-servers-nix cd mcp-servers-nix -
选择安装方式: 你可以选择以下方式安装和使用 MCP 服务器包:
-
直接运行 (无需安装): 使用 'nix-shell' 或 'nix run' 命令直接运行预编译的服务器包,例如:
nix-shell -p "(import . {}).mcp-server-fetch" --run mcp-server-fetch # 或使用 flakes nix run .#mcp-server-fetch -
直接安装包: 使用 'nix-env' 或 'nix profile install' 命令安装单个服务器包到你的 Nix profile 中:
# 不使用 flakes nix-env -f . -iA mcp-server-fetch # 使用 flakes nix profile install .#mcp-server-fetch -
使用 Overlays 集成到 Nixpkgs: 将本仓库的 overlays 添加到你的 'configuration.nix' 或 'home.nix' 中,以便通过 'pkgs' 访问所有 MCP 服务器包:
{ nixpkgs.overlays = [ (import ./overlays/default.nix).default ]; environment.systemPackages = with pkgs; [ mcp-server-fetch ]; }
-
服务器配置
本框架的核心价值在于提供灵活的配置生成能力。你需要创建一个 Nix 配置文件(例如 'config.nix')来描述你需要的 MCP 服务器模块及其配置。
以下是一个配置示例,展示如何启用 'filesystem' 和 'fetch' 两个 MCP 服务器模块:
# config.nix let pkgs = import <nixpkgs> {}; # 或使用 flakes 输入 mcp-servers = import . {}; # 或使用 flakes 输入 in mcp-servers.lib.mkConfig pkgs { programs = { filesystem.enable = true; fetch.enable = true; }; }
使用 'nix-build config.nix' 命令构建该配置文件,将会在 'result' 目录生成一个 JSON 文件,其中包含了 MCP 客户端所需的服务器配置信息。
nix-build config.nix
构建完成后,'result' 目录下的 JSON 文件内容类似如下:
{ "mcpServers": { "fetch": { "command": "/nix/store/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx-mcp-server-fetch-版本号/bin/mcp-server-fetch", "args": [], "env": {} }, "filesystem": { "command": "/nix/store/yyyyyyyyyyyyyyyyyyyyyyyyyyyyy-mcp-server-filesystem-版本号/bin/mcp-server-filesystem", "args": [], "env": {} } } }
配置说明:
- '"mcpServers"': 包含了所有配置的 MCP 服务器的字典。
- '"fetch"', '"filesystem"': 服务器名称,对应你启用的模块。
- '"command"': MCP 服务器的可执行文件路径。这是 MCP 客户端需要配置的关键信息,用于启动服务器进程。
- '"args"': 传递给服务器进程的命令行参数,默认为空数组 '[]'。 你可以在 'config.nix' 中配置模块的 'args' 选项来添加参数。
- '"env"': 服务器进程的环境变量,默认为空字典 '{}'。 你可以在 'config.nix' 中配置模块的 'env' 选项来设置环境变量。
MCP 客户端配置示例:
假设你的 MCP 客户端需要连接 'filesystem' 服务器,你需要从 'result' 目录下的 JSON 文件中获取 'filesystem' 服务器的 '"command"' 和 '"args"' 信息,并将其配置到你的 MCP 客户端中。
例如,对于上述生成的配置,你的 MCP 客户端需要配置启动 'filesystem' 服务器的命令为:
/nix/store/yyyyyyyyyyyyyyyyyyyyyyyyyyyyy-mcp-server-filesystem-版本号/bin/mcp-server-filesystem
参数为空。
基本使用方法
- 选择需要的 MCP 服务器模块: 根据你的应用场景,在 'config.nix' 文件中启用需要的服务器模块,例如 'filesystem', 'fetch', 'brave-search' 等。
- 配置模块选项 (可选): 如果需要,可以配置模块的 'args', 'env' 等选项,例如指定 'filesystem' 模块的文件系统根路径,或者为 'brave-search' 模块配置 API 密钥。
- 构建配置: 运行 'nix-build config.nix' 命令构建配置,生成包含服务器配置信息的 JSON 文件。
- 配置 MCP 客户端: 从生成的 JSON 文件中提取每个服务器模块的 '"command"' 和 '"args"' 信息,配置到你的 MCP 客户端,使其能够连接并使用这些 MCP 服务器。
- 运行 MCP 客户端: 启动你的 MCP 客户端,它将根据配置连接并使用你配置的 MCP 服务器。
通过 mcp-servers-nix,你可以方便地管理和部署各种 MCP 服务器,并灵活地配置它们的功能和行为,从而为你的 LLM 应用提供强大的上下文支持。
信息
分类
开发者工具