Skip to content

Commit 4eb30a2

Browse files
committed
register basic-memory with mcpjungle via one-shot service
1 parent 198a698 commit 4eb30a2

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

‎hosts/glyph/services/default.nix‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,11 @@
6161
};
6262

6363
services.basic-memory.enable = true;
64-
services.mcpjungle.enable = true;
64+
services.mcpjungle = {
65+
enable = true;
66+
servers.basic-memory = {
67+
url = "http://127.0.0.1:8091/mcp";
68+
description = "Knowledge management with markdown files";
69+
};
70+
};
6571
}

‎modules/nixos/llm/mcpjungle.nix‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,24 @@ in {
1818
};
1919

2020
openFirewall = lib.mkEnableOption "opening firewall ports for MCPJungle";
21+
22+
servers = lib.mkOption {
23+
type = lib.types.attrsOf (lib.types.submodule {
24+
options = {
25+
url = lib.mkOption {
26+
type = lib.types.str;
27+
description = "Streamable HTTP URL of the MCP server.";
28+
};
29+
description = lib.mkOption {
30+
type = lib.types.str;
31+
default = "";
32+
description = "Description of the MCP server.";
33+
};
34+
};
35+
});
36+
default = {};
37+
description = "MCP servers to register with the gateway.";
38+
};
2139
};
2240

2341
config = lib.mkIf cfg.enable {
@@ -55,6 +73,29 @@ in {
5573
};
5674
};
5775

76+
systemd.services.mcpjungle-register = lib.mkIf (cfg.servers != {}) {
77+
description = "Register MCP servers with MCPJungle";
78+
after = ["mcpjungle.service"];
79+
requires = ["mcpjungle.service"];
80+
wantedBy = ["multi-user.target"];
81+
serviceConfig = {
82+
Type = "oneshot";
83+
RemainAfterExit = true;
84+
};
85+
script = let
86+
registry = "http://127.0.0.1:${toString cfg.port}";
87+
bin = lib.getExe cfg.package;
88+
registrations = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: server: ''
89+
if ! ${bin} list servers --registry ${registry} 2>/dev/null | grep -q '${name}'; then
90+
${bin} register --name '${name}' --description '${server.description}' --url '${server.url}' --registry ${registry}
91+
fi
92+
'')
93+
cfg.servers);
94+
in ''
95+
${registrations}
96+
'';
97+
};
98+
5899
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [cfg.port];
59100
};
60101
}

0 commit comments

Comments
 (0)