NixOS MCP服务器

在NixOS上使用Flakes创建和安装MCP服务器,为AI助手提供准确的系统资源信息,增强AI能力并保持Nix的确定性特性。

  • by TheCowboyAI
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 TheCowboyAI/mcp

使用说明

使用Flakes在NixOS上创建和安装MCP服务器

模型上下文协议(MCP)服务器为AI助手提供有关系统资源的准确、最新信息。当使用声明性和可复制的Flakes系统在NixOS上实现时,这些服务器成为增强人工智能能力的强大工具,同时保持Nix的确定性。本报告探讨了使用Flakes在NixOS上实现MCP服务器的可用选项。

此存储库已经是NixOS的MCP服务器以及Cursor IDE的/rules的集合。

理解模型上下文协议(MCP)

MCP是一种结构化方法,允许AI系统与各种数据源和工具进行有效通信。由Anthropic开发并开源,旨在通过克服传统数据集成的局限性来增强数据中心和人工智能系统之间的连接[8]。

MCP的关键组件

  • MCP主机:通过MCP访问资源的Claude Desktop、IDE或AI工具等程序
  • MCP客户端:协议客户端与服务器保持1:1连接
  • MCP服务器:通过标准化协议公开特定功能的轻量级程序
  • 本地/远程资源:MCP服务器可以访问的计算机资源或互联网可访问资源[8]

用法

在Composer中,

"start a new server project"

问任何关于设计和架构的问题。添加注释并将其编译成知识图和工作流。

抓取网页和研究信息,然后编译你的项目。

开发工作流程

此项目遵循要素分支工作流:

  • 在活跃的开发会话中,开发人员在以自己命名的个人分支上工作
  • 更改将合并回 main 当开发完成时
  • 在正式发布后,合并更改需要拉取请求
  • 这 main 分支代表项目的稳定、生产就绪状态

有关更多详细信息,请参阅 Git分支策略.

NixOS可用的MCP服务器实现

NixMCP

NixMCP是一个专用的模型上下文协议服务器,它向AI模型公开NixOS包、系统选项、Home Manager配置选项和nix-darwin macOS配置选项。它为AI模型提供了最新的信息,大大减少了幻觉和过时的信息[2]。

快速设置

要开始使用NixMCP,您可以将以下内容添加到MCP配置文件中:

{
  "mcpServers": {
    "nixos": {
      "command": "uvx",
      "args": ["nixmcp"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

此配置使您的AI助手能够访问有关NixOS的正确信息,而不是可能从过时的来源产生幻觉的包名[2]。

Nix中的最小MCP

对于那些寻求更简单实现的人来说,Nix中的Minimal MCP提供了一个用Python实现的基本MCP服务器,旨在与Nix包管理无缝协作[7]。

主要特点

  • MCP服务器在Python中的简单实现
  • Nix薄片集成,易于设置和管理
  • 为演示目的提供存根位置[7]

如何使用

要使用此项目,您可以使用提供的Nix flake模板对其进行初始化,并使用Claude配置中的指定命令运行服务器[7]。

社区开发的MCP服务器

NixOS社区一直在积极开发针对特定用例量身定制的MCP服务器:

nixmcp(github/utens/nixmcp)

一个专门用于NixOS软件包和选项的简单MCP服务器,旨在帮助AI代理提供准确的选项,而无需发明不存在的选项[11]。该项目旨在优化人工智能与NixOS配置的交互。

使用漏洞实现MCP服务器

为什么MCP有缺陷?

Nix薄片非常适合MCP实施,因为它们提供:

  1. 可复制的构建和依赖关系
  2. 兼容macOS和Linux
  3. 原子更新和回滚
  4. 输入和输出的明确定义[11]

架构方法

在NixOS中组织MCP服务器的一种有前景的方法包括:

  • 开发一个集合 flake.mcpConfigurations 代表各种MCP服务器分组
  • 创建 flake.mcpModules 对应于各个服务器
  • 与Home Manager集成以进行用户特定配置[11]

基本薄片结构

MCP服务器的基本薄片可能看起来类似于此NixOS薄片结构:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
    # Additional inputs as needed
  };

  outputs = { self, nixpkgs }: {
    # MCP server configurations
    mcpConfigurations = {
      # Server configurations
    };
    
    # Package definitions
    packages.x86_64-linux.default = # MCP server package
  };
}

在NixOS上调试MCP服务器

在NixOS上运行MCP服务器时,您可能会遇到与PATH相关的问题,特别是在将Nix管理的工具与Claude的MCP服务器一起使用时[4]。

常见问题

这 ENOENT 错误通常表示找不到可执行文件。这种情况经常发生,因为外壳 PATH 与Claude不同,Nix管理的可执行文件在MCP服务器环境中不可用[4]。

解决方案

修改MCP服务器配置以扩展 PATH 环境变量:

"filesystem": {
  "command": "/bin/sh",
  "args": [
    "-c",
    "PATH=/run/current-system/sw/bin:$PATH exec npx -y @modelcontextprotocol/server-filesystem /Users/b/Desktop /Users/b/Documents /Users/b/Downloads"
  ]
}

该解决方案使Claude能够与Nix管理的开发环境无缝协作,同时保持Nix提供的隔离性和可重复性[4]。

与Home Manager集成

对于完整的MCP设置,与Home Manager集成允许用户进行特定配置。CodeMCP的一个分支,包括一个薄片和一个Home Manager模块,可供对此方法感兴趣的人使用[11]。

结论

使用Flakes在NixOS上实现MCP服务器提供了AI能力增强和系统可重复性的强大组合。通过多种实现选项,从NixMCP等综合解决方案到最小实现,开发人员可以选择最适合他们需求的方法。

社区对这一领域日益增长的兴趣有望进一步改善人工智能系统和NixOS之间的集成,有可能实现更专业的MCP服务器,并与现有工具更好地集成。

对于那些想开始使用的人来说,提到的GitHub存储库(utens/nixmcp,nix中的minimal mcp)提供了很好的起点,而NixOS wiki中的Flake文档提供了有关Flakes的一般结构和管理的指导。

引用: 1.https://www.youtube.com/watch?v=Fph7SMldxpI 2.https://github.com/utensils/nixmcp 3.https://www.youtube.com/watch?v=CA8V2hEIxCc 4.https://newschematic.org/blog/debugging-claude-mcp-nix/ 5.https://discourse.nixos.org/t/flakes-for-noobs/39368 6.https://github.com/mccartykim/minimal-mcp-in-nix 7.https://mcp.so/server/minimal-mcp-in-nix 8.https://memo.d.foundation/playground/ai/model-context-protocol/ [9] https://github.com/nix-community/mineflake [10]https://nixos.wiki/wiki/Flakes [11] https://www.reddit.com/r/NixOS/comments/1jjv62s/nixos_mcp/ [12] https://discourse.nixos.org/t/proper-way-to-build-a-remote-system-with-flakes/17661 [13] https://discourse.nixos.org/t/one-flake-to-rule-them-all/24039 [14] https://chengeric.com/homelab/ [15] https://nixos-and-flakes.thiscute.world/nixos-with-flakes/modularize-the-configuration [16] https://www.reddit.com/r/mcp/comments/1jkwiu5/nixmcp_model_context_protocol_for_nixos_resources/ [17] https://model-context-protocol.com/servers/nix-mcp-server-flake [18] https://www.reddit.com/r/admincraft/comments/1i0f621/host_minecraft_server_declaratively_with_nixos/ [19] https://jvns.ca/blog/2023/11/11/notes-on-nix-flakes/ [20] https://nixos.org/nixpkgs/manual/ [21] https://github.com/storopoli/flakes [22] https://discourse.nixos.org/t/howto-setting-up-a-nixos-minecraft-server-using-the-newest-version-of-minecraft/3445 [23] https://discourse.nixos.org/t/nix-from-first-principles-flake-edition/23109 [24] https://flakehub.com/flake/lessuselesss/nix-mcp-servers [25] https://github.com/mkaito/nixos-modded-minecraft-servers/blob/master/flake.nix [26] https://mikelev.in/futureproof/python-mcp-server-example/

[25] https://github.com/mkaito/nixos-modded-minecraft-servers/blob/master/flake.nix [26] https://mikelev.in/futureproof/python-mcp-server-example/