diff --git a/opencode.json b/opencode.json index 542ac0b..9a45dd7 100644 --- a/opencode.json +++ b/opencode.json @@ -62,6 +62,26 @@ "DISABLE_CONSOLE_OUTPUT": "true", "N8N_MCP_TELEMETRY_DISABLED": "true" } + }, + "transmission": { + "type": "local", + "command": ["transmission-mcp", "--mode", "stdio"], + "enabled": true, + "environment": { + "TRANSMISSION_URL": "http://perlis.bueso.loc:9091", + "TRANSMISSION_USER": "PLACEHOLDER", + "TRANSMISSION_PASS": "PLACEHOLDER" + } + }, + "sabnzbd": { + "type": "local", + "command": ["sabnzbd-mcp"], + "enabled": true, + "environment": { + "SABNZBD_URL": "http://perlis.bueso.loc:9092", + "SABNZBD_API_KEY": "PLACEHOLDER", + "SABNZBD_MCP_TRANSPORT": "stdio" + } } } } diff --git a/packages/default.nix b/packages/default.nix index c66131a..6b538bd 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -21,5 +21,7 @@ n8n-mcp = pkgs.callPackage ./n8n-mcp/package.nix { }; simple-web-search-mcp = pkgs.callPackage ./simple-web-search-mcp/package.nix { }; mcp-arr-server = pkgs.callPackage ./mcp-arr-server/package.nix { }; + transmission-mcp = pkgs.callPackage ./transmission-mcp/package.nix { }; + sabnzbd-mcp = pkgs.callPackage ./sabnzbd-mcp/package.nix { }; # example-mcp-server = pkgs.callPackage ./example-mcp-server/package.nix { }; } diff --git a/packages/sabnzbd-mcp/package.nix b/packages/sabnzbd-mcp/package.nix new file mode 100644 index 0000000..68fe310 --- /dev/null +++ b/packages/sabnzbd-mcp/package.nix @@ -0,0 +1,48 @@ +{ + lib, + stdenv, + fetchFromGitHub, + makeWrapper, + python3, +}: + +let + python = python3.withPackages ( + ps: with ps; [ + fastapi + fastmcp + httpx + python-dotenv + ] + ); +in +stdenv.mkDerivation { + pname = "sabnzbd-mcp"; + version = "0.1.0-unstable"; + + src = fetchFromGitHub { + owner = "jmagar"; + repo = "sabnzbd-mcp"; + rev = "refs/heads/main"; + hash = "sha256-1sEnHH40cDVT5oiZD2Xywl7S9vJThii/ce+6r+XmpSw="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/lib/sabnzbd-mcp + cp sabnzbd-mcp-server.py client.py $out/lib/sabnzbd-mcp/ + + makeWrapper ${python}/bin/python $out/bin/sabnzbd-mcp \ + --add-flags "$out/lib/sabnzbd-mcp/sabnzbd-mcp-server.py" \ + --set-default SABNZBD_MCP_TRANSPORT stdio + ''; + + meta = with lib; { + description = "MCP server for SABnzbd Usenet client"; + homepage = "https://github.com/jmagar/sabnzbd-mcp"; + license = licenses.mit; + mainProgram = "sabnzbd-mcp"; + platforms = platforms.all; + }; +} diff --git a/packages/transmission-mcp/package.nix b/packages/transmission-mcp/package.nix new file mode 100644 index 0000000..6824624 --- /dev/null +++ b/packages/transmission-mcp/package.nix @@ -0,0 +1,37 @@ +{ + lib, + python3Packages, + fetchurl, +}: + +let + wheel = fetchurl { + url = "https://files.pythonhosted.org/packages/6b/9c/dc73804f0f62208d59794080d009fb86b7ac6e9d4b5ad452791355dcfb51/transmission_mcp-1.0.1-py3-none-any.whl"; + hash = "sha256-1TKb75iNKgMqw0YVZ+rDEac4IyCuj94y1OMzqQROCrI="; + }; +in +python3Packages.buildPythonApplication rec { + pname = "transmission-mcp"; + version = "1.0.1"; + format = "wheel"; + + src = wheel; + + doCheck = false; + + dependencies = with python3Packages; [ + python-dotenv + fastmcp + transmission-rpc + fastapi + uvicorn + ]; + + meta = with lib; { + description = "MCP server for the Transmission BitTorrent client"; + homepage = "https://github.com/philogicae/transmission-mcp"; + license = licenses.mit; + mainProgram = "transmission-mcp"; + platforms = platforms.all; + }; +}