1MCP代理服务

一个用于通过Home Manager将1MCP代理作为systemd用户服务运行的Nix flake。

  • by danimalquackers
  • Nix
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 danimalquackers/onemcp-flake

使用说明

1MCP镍片

一种用于运行的镍片 1MCP代理 通过Home Manager提供systemd用户服务。

特性

  • Nix原生:直接在服务器配置中引用Nix包,避免 npx 或 uvx.
  • 可复制包装:使用从源代码构建1MCP代理 pnpm 以及固定依赖关系。
  • HTTP和Stdio支持:完全支持两种传输类型和所有MCP选项。
  • 自动配置:生成 mcp.json 文件自动从您的Nix配置。
  • Home Manager集成:轻松地将代理作为systemd用户服务进行管理。
  • 先进过程控制:支持自动重启、环境过滤和超时。

安装

将此薄片添加到您的 flake.nix 输入:

inputs = {
  nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  onemcp.url = "github:danimalquackers/1mcp-flake";
};

使用(家庭管理器)

导入模块并在Home Manager配置中配置服务:

{ inputs, pkgs, ... }: {
  imports = [
    inputs.onemcp.homeModules.default
  ];

  services.onemcp-agent = {
    enable = true;
    port = 3000; # Default port
    
    # Declarative MCP Server Configuration
    servers = {
      # Use Nix packages directly (Stdio transport)
      # This handles absolute paths automatically
      "nixos-mcp" = {
        transport = "stdio";
        command = "${pkgs.mcp-nixos}/bin/mcp-nixos";
        tags = [ "nixos" "system" ];
      };

      # Remote server (HTTP transport)
      "remote-api" = {
        transport = "http";
        url = "https://api.example.com/mcp";
        headers = {
          Authorization = "Bearer ${secrets.apiToken}";
        };
        tags = [ "remote" ];
      };

      # Python server with dependencies
      "weather" = let
        pythonEnv = pkgs.python3.withPackages (ps: with ps; [
          mcp
          requests
          pandas
        ]);
      in {
        transport = "stdio";
        command = "${pythonEnv}/bin/python3";
        args = [ "/path/to/weather_server.py" ];
        env = {
          API_KEY = "your-secret-key";
        };
      };
    };

    # (Optional) Low-level settings for mcp.json
    settings = {
      # Additional raw configuration
    };
  };
}

发展

要在本地构建包,请执行以下操作:

nix build .#default

要运行检查,请执行以下操作:

nix flake check