Nix MCP服务器
   
一个Nix薄片,用于为Claude和Cursor等客户端声明性配置MCP(模型上下文协议)服务器。
特性
- MCP服务器的声明性配置
- 支持多个客户端(Claude、Cursor)
- 支持多种服务器类型(文件系统、github)
- 跨平台支持(NixOS、Darwin)
- 使用Home Manager与现有的Nix配置集成
原理
此flake提供了Home Manager模块,可为不同的客户端生成MCP服务器配置文件。当您为客户端启用服务器时,将生成必要的配置并将其放置在该客户端的适当位置。
支持的服务器
- 文件系统:提供对AI模型的文件系统访问
- GitHub:允许GitHub访问AI模型
支持的客户
- 克劳德:Anthropic的Claude AI助理
- 光标:游标代码编辑器
用法
基本用法
将此薄片添加到您的家庭管理器配置中:
{
inputs = {
# ... your other inputs
nix-mcp-servers.url = "github:yourusername/nix-mcp-servers";
};
outputs = { nixpkgs, home-manager, nix-mcp-servers, ... }: {
homeConfigurations."yourusername" = home-manager.lib.homeManagerConfiguration {
# ... your other configuration
modules = [
nix-mcp-servers.homeManagerModules.default
# Your configuration
{
nix-mcp-servers = {
# Enable configuration generation
clients.generateConfigs = true;
# Configure Cursor client
clients.cursor = {
enable = true;
# Enable filesystem server for Cursor
filesystem = {
enable = true;
paths = [
"/Users/yourusername/projects"
"/Users/yourusername/Documents"
];
};
# Enable GitHub server for Cursor
github = {
enable = true;
token = "your-github-token";
};
};
# Configure Claude client
clients.claude = {
enable = true;
# Only enable filesystem for Claude
filesystem = {
enable = true;
paths = [
"/Users/yourusername/projects"
];
};
# Don't enable GitHub for Claude
github.enable = false;
};
};
}
];
};
};
}自定义配置路径
您可以为每个客户端自定义配置路径:
{
nix-mcp-servers = {
# Override base config path
configPath = "/custom/path/to/mcp";
clients.cursor = {
enable = true;
# Override Cursor config path
configPath = "/custom/path/to/cursor/mcp/config.json";
# ...rest of the configuration
};
};
}发展
为该项目做出贡献:
- 克隆存储库
- 进行更改
- 测试用
nix flake check - 提交PR
许可证
项目概述
此Nix flake为跨不同平台和包管理器的模型控制协议(MCP)服务器提供了一个统一的配置系统。该项目:
- 管理人工智能应用程序的MCP服务器配置
- 处理特定于客户端的配置格式和路径
- 适用于NixOS、nix-darwin和Home Manager
- 提供Linux和macOS之间的跨平台兼容性
- 支持多种服务器类型,具有特定于服务器的配置选项
安装与使用
有关详细的使用示例,请参阅我们的文档:
快速启动:
NixOS
添加到您的配置中。ix:
{
inputs.mcp-servers.url = "github:aloshy-ai/nix-mcp-servers";
outputs = { self, nixpkgs, mcp-servers, ... }: {
nixosConfigurations.hostname = nixpkgs.lib.nixosSystem {
# ...
modules = [
mcp-servers.nixosModules.default
{
services.mcp-servers = {
enable = true; # Enable the entire module
servers = {
filesystem = {
# command = "npx"; # Uses default
filesystem = {
# args = [ "-y" "@modelcontextprotocol/server-filesystem" ]; # Uses default
extraArgs = [ "/Users/username/Desktop" "/path/to/other/allowed/dir" ]; # REQUIRED
};
};
github = {
env = {
GITHUB_PERSONAL_ACCESS_TOKEN = "xxxxxxxxxxxxxxx"; # REQUIRED through assertion
};
};
};
clients = {
claude = {
enable = true; # Using standard Nix 'enable' flag
# clientType defaults to "claudeDesktop" based on name
servers = [ "filesystem" "github" ];
};
cursor = {
enable = true; # Enable Cursor configuration
servers = [ "filesystem" ]; # Only use filesystem server for Cursor
};
};
};
}
];
};
};
}家庭经理
添加到您的主页。nix:
{
imports = [
(builtins.fetchTarball "https://github.com/aloshy-ai/nix-mcp-servers/archive/main.tar.gz").nixosModules.home-manager
];
services.mcp-servers = {
enable = true; # Enable the entire module
servers = {
filesystem = {
# command = "npx"; # Uses default
filesystem = {
# args = [ "-y" "@modelcontextprotocol/server-filesystem" ]; # Uses default
extraArgs = [ "/Users/username/Desktop" "/path/to/other/allowed/dir" ]; # REQUIRED
};
};
github = {
env = {
GITHUB_PERSONAL_ACCESS_TOKEN = "xxxxxxxxxxxxxxx"; # REQUIRED through assertion
};
};
};
clients = {
claude = {
enable = true; # Using standard Nix 'enable' flag
# clientType defaults to "claudeDesktop" based on name
servers = [ "filesystem" "github" ];
};
cursor = {
enable = true; # Enable Cursor configuration
servers = [ "filesystem" ]; # Only use filesystem server for Cursor
};
};
};
}尼克松达尔文
添加到您的darwin-configuration.nix中:
{
imports = [
(builtins.fetchTarball "https://github.com/aloshy-ai/nix-mcp-servers/archive/main.tar.gz").darwinModules.default
];
services.mcp-servers = {
enable = true; # Enable the entire module
servers = {
filesystem = {
# command = "npx"; # Uses default
filesystem = {
# args = [ "-y" "@modelcontextprotocol/server-filesystem" ]; # Uses default
extraArgs = [ "/Users/username/Desktop" "/path/to/other/allowed/dir" ]; # REQUIRED
};
};
github = {
env = {
GITHUB_PERSONAL_ACCESS_TOKEN = "xxxxxxxxxxxxxxx"; # REQUIRED through assertion
};
};
};
clients = {
claude = {
enable = true; # Using standard Nix 'enable' flag
# clientType defaults to "claudeDesktop" based on name
servers = [ "filesystem" "github" ];
};
cursor = {
enable = true; # Enable Cursor configuration
servers = [ "filesystem" ]; # Only use filesystem server for Cursor
};
};
};
}CLI工具
该套餐还提供 mcp-servers 帮助配置MCP服务器的CLI工具:
nix run github:aloshy-ai/nix-mcp-servers测试您的设置
配置MCP服务器后,您可以验证配置是否正确应用:
对于NixOS和nix达尔文
# For NixOS
sudo nixos-rebuild test
# For nix-darwin
darwin-rebuild test对于家庭经理
home-manager switch然后检查配置文件是否存在:
# For Claude Desktop on macOS
cat ~/Library/Application\ Support/Claude/mcp-config.json
# For Claude Desktop on Linux
cat ~/.config/claude-desktop/mcp-config.json
# For Cursor on macOS
cat ~/Library/Application\ Support/Cursor/mcp-config.json
# For Cursor on Linux
cat ~/.config/Cursor/mcp-config.json您应该看到一个JSON配置,其中包含您配置的服务器信息。
模块结构
该项目使用模块化结构来处理不同平台的配置:
- 常用选项:定义服务器和客户端的核心模块选项
- 平台适配器:为NixOS、Darwin和Home Manager实现特定于平台的配置
- 库函数:提供路径处理、平台检测和配置生成的辅助函数
项目结构
此项目使用 片状零件 对于模块化结构:
modules/-NixOS、Darwin和Home Manager模块
- common/ -共享模块定义和选项 - nixos/ -NixOS特定实现 - darwin/ -Darwin具体实现 - home-manager/ -Home Manager实施
lib/-模块使用的实用功能
- clients.nix -客户端特定配置处理 - servers.nix -服务器配置格式化 - platforms.nix -平台检测和路径实用程序 - paths.nix -路径操纵功能
docs/-文件
- examples/ -使用示例 - modules/ -模块文档
文档
您还可以直接使用以下工具生成和查看选项文档:
nix run github:aloshy-ai/nix-mcp-servers#view-docsGitHub页面文档
此存储库配置为自动构建文档并将其部署到GitHub Pages。文档由 docs 在flake中打包,并在将更改推送到主分支时部署。
部署由 和平/行动gh页 动作,创建 gh-pages 分支机构与文件。这种方法不需要对GitHub Pages环境进行任何手动配置。
部署后,生成文档的URL将显示在GitHub存储库详细信息中。
