Skip to content

Commit 46f44fe

Browse files
committed
enable mcpjungle via service module
1 parent bb0c9a7 commit 46f44fe

5 files changed

Lines changed: 68 additions & 36 deletions

File tree

‎hosts/glyph/services/default.nix‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
./dns.nix
99
./filebrowser.nix
1010
./jellyfin.nix
11-
./mcpjungle.nix
1211
./nfs.nix
1312
./prometheus.nix
1413
./samba.nix
@@ -60,4 +59,6 @@
6059
enable = true;
6160
extraUpFlags = ["--ssh"];
6261
};
62+
63+
services.mcpjungle.enable = true;
6364
}

‎hosts/glyph/services/mcpjungle.nix‎

Lines changed: 0 additions & 35 deletions
This file was deleted.

‎modules/nixos/default.nix‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# NixOS-specific configuration modules
22
{
33
imports = [
4+
./llm
45
./web
56
./filebrowser-quantum.nix
67
./users.nix

‎modules/nixos/llm/default.nix‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
imports = [
3+
./mcpjungle.nix
4+
];
5+
}

‎modules/nixos/llm/mcpjungle.nix‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
{
2+
config,
3+
pkgs,
4+
lib,
5+
...
6+
}: let
7+
cfg = config.services.mcpjungle;
8+
in {
9+
options.services.mcpjungle = {
10+
enable = lib.mkEnableOption "MCPJungle MCP Gateway";
11+
12+
package = lib.mkPackageOption pkgs "mcpjungle" {};
13+
14+
port = lib.mkOption {
15+
type = lib.types.port;
16+
default = 8090;
17+
description = "Port for the HTTP server to listen on.";
18+
};
19+
20+
openFirewall = lib.mkEnableOption "opening firewall ports for MCPJungle";
21+
};
22+
23+
config = lib.mkIf cfg.enable {
24+
users.users.mcpjungle = {
25+
isSystemUser = true;
26+
group = "mcpjungle";
27+
};
28+
users.groups.mcpjungle = {};
29+
30+
systemd.services.mcpjungle = {
31+
description = "MCPJungle MCP Gateway";
32+
after = ["network.target"];
33+
wantedBy = ["multi-user.target"];
34+
35+
serviceConfig = {
36+
ExecStart = "${lib.getExe cfg.package} start --port ${toString cfg.port}";
37+
User = "mcpjungle";
38+
Group = "mcpjungle";
39+
WorkingDirectory = "/var/lib/mcpjungle";
40+
StateDirectory = "mcpjungle";
41+
Restart = "on-failure";
42+
RestartSec = 5;
43+
44+
# Hardening
45+
NoNewPrivileges = true;
46+
PrivateDevices = true;
47+
PrivateTmp = true;
48+
ProtectHome = true;
49+
ProtectSystem = "strict";
50+
ReadWritePaths = ["/var/lib/mcpjungle"];
51+
ProtectKernelTunables = true;
52+
ProtectKernelModules = true;
53+
ProtectControlGroups = true;
54+
RestrictSUIDSGID = true;
55+
};
56+
};
57+
58+
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [cfg.port];
59+
};
60+
}

0 commit comments

Comments
 (0)