claude-code: omit unsupported mcp enabled field
This commit is contained in:
@@ -19,17 +19,29 @@ let
|
||||
|
||||
upstreamConfigDir = "${config.home.homeDirectory}/.claude";
|
||||
|
||||
isMcpServerEnabled =
|
||||
server:
|
||||
let
|
||||
enabled = server.enabled or null;
|
||||
disabled = (server.disabled or false) == true;
|
||||
in
|
||||
enabled != false && !disabled;
|
||||
|
||||
transformMcpServer =
|
||||
name: server:
|
||||
lib.hm.mcp.transformMcpServer {
|
||||
inherit server;
|
||||
exclude = [ "enabled" ];
|
||||
extraTransforms = [
|
||||
lib.hm.mcp.addType
|
||||
(lib.hm.mcp.wrapEnvFilesCommand { inherit pkgs name; }) # envFiles currently still need wrapping https://github.com/anthropics/claude-code/issues/28942
|
||||
];
|
||||
};
|
||||
|
||||
transformedMcpServers = lib.optionalAttrs (cfg.enableMcpIntegration && config.programs.mcp.enable) (
|
||||
lib.mapAttrs (
|
||||
name: server:
|
||||
lib.hm.mcp.transformMcpServer {
|
||||
inherit server;
|
||||
extraTransforms = [
|
||||
lib.hm.mcp.addType
|
||||
(lib.hm.mcp.wrapEnvFilesCommand { inherit pkgs name; }) # envFiles currently still need wrapping https://github.com/anthropics/claude-code/issues/28942
|
||||
];
|
||||
}
|
||||
) config.programs.mcp.servers
|
||||
lib.mapAttrs transformMcpServer (
|
||||
lib.filterAttrs (_: isMcpServerEnabled) config.programs.mcp.servers
|
||||
)
|
||||
);
|
||||
|
||||
mkContentOption =
|
||||
@@ -632,7 +644,9 @@ in
|
||||
|
||||
programs.claude-code.finalPackage =
|
||||
let
|
||||
mergedMcpServers = transformedMcpServers // lib.mapAttrs (_: lib.hm.mcp.addType) cfg.mcpServers;
|
||||
mergedMcpServers =
|
||||
transformedMcpServers
|
||||
// lib.mapAttrs (_: server: removeAttrs (lib.hm.mcp.addType server) [ "enabled" ]) cfg.mcpServers;
|
||||
pluginFiles =
|
||||
lib.optional (mergedMcpServers != { }) {
|
||||
name = ".mcp.json";
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
github = {
|
||||
type = "http";
|
||||
url = "https://api.githubcopilot.com/mcp/";
|
||||
enabled = true;
|
||||
};
|
||||
filesystem = {
|
||||
type = "stdio";
|
||||
@@ -61,6 +62,11 @@
|
||||
customOption = "value";
|
||||
timeout = 5000;
|
||||
};
|
||||
disabled-server = {
|
||||
command = "echo";
|
||||
args = [ "test" ];
|
||||
disabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -73,10 +79,7 @@
|
||||
pluginDir=$(grep -o -- '--plugin-dir /nix/store/[^ ]*' "$wrapperPath")
|
||||
pluginDir="''${pluginDir#--plugin-dir }"
|
||||
assertFileContent "$pluginDir/.claude-plugin/plugin.json" ${./expected-plugin-manifest.json}
|
||||
assertFileRegex "$pluginDir/.mcp.json" '"github"'
|
||||
assertFileRegex "$pluginDir/.mcp.json" '"database"'
|
||||
assertFileRegex "$pluginDir/.mcp.json" '"/tmp"'
|
||||
(! grep -q -- '/other-tmp' "$pluginDir/.mcp.json")
|
||||
assertFileContent "$pluginDir/.mcp.json" ${./expected-mcp-plugin.json}
|
||||
assertPathNotExists "$pluginDir/.lsp.json"
|
||||
'';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user