File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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}
Original file line number Diff line number Diff line change 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 {
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}
You can’t perform that action at this time.
0 commit comments