Author SHA1 Message Date
luis b4b26c6ef2 Merge pull request 'Add MCP server packages: annas, bitwarden, email, namecheap, navidrome, ovhcloud, slskd' (#9) from feat/package-all-inuse into main
NixOS Configuration CI / Nix Flake Check (push) Successful in 1m10s
2026-08-13 18:01:24 +02:00
hermes-agent 80035de8f3 Add MCP server packages: annas, bitwarden, email, namecheap, navidrome, ovhcloud, slskd
NixOS Configuration CI / Nix Flake Check (pull_request) Successful in 9s
Packages MCP servers currently used by Hermes that were not yet in this
repo. Real hashes computed via nix build on wilkes; nix flake check passes.

- annas-mcp: Go, buildGoModule (re-added, previously dropped as broken)
- bitwarden-mcp: npm @bitwarden/mcp-server
- mcp-email-server: Python, buildPythonApplication
- namecheap-mcp: npm namecheap-api-mcp
- navidrome-mcp: npm navidrome-mcp
- ovhcloud-mcp: npm from GitHub, tsc build step
- slskd-mcp: Python, fastmcp wrapper
2026-08-13 15:50:38 +00:00
luis fd19b3519f Merge pull request 'feat(mcp-arr-server): bump to 1.7.3 for HTTP transport' (#8) from feat/arr-http-transport into main
NixOS Configuration CI / Nix Flake Check (push) Successful in 8m32s
Reviewed-on: #8
2026-08-12 12:01:56 +02:00
hermes-agent 633dc74563 set npmDepsHash for 1.7.3
NixOS Configuration CI / Nix Flake Check (pull_request) Successful in 11m44s
2026-08-12 09:36:46 +00:00
hermes-agent 483e87b0a8 set src hash for 1.7.3 2026-08-12 09:35:57 +00:00
hermes-agent 9383fe1d8d feat(mcp-arr-server): bump to 1.7.3 for HTTP transport support 2026-08-12 09:34:50 +00:00
hermes-agent 2d7dedd1a2 Merge pull request 'fix: repoint sabnzbd-mcp to jasonpaulso fork, drop broken annas-mcp' (#7) from fix/sabnzbd-mcp-source into main
NixOS Configuration CI / Nix Flake Check (push) Successful in 13s
2026-08-04 16:13:04 +02:00
hermes-agent 7af3d89e5d fix: repoint sabnzbd-mcp to jasonpaulso fork, drop broken annas-mcp
NixOS Configuration CI / Nix Flake Check (pull_request) Successful in 15s
- sabnzbd-mcp: original upstream (jmagar/sabnzbd-mcp) was deleted from
  GitHub (404). Repoint to jasonpaulso/sabnzbd-mcp fork, which preserves
  the same file layout and the /sabnzbd/api string postPatch rewrites.
- annas-mcp: remove package that was never completed (lib.fakeHash
  placeholders) and is not referenced anywhere in config-nixos. It was
  breaking 'nix flake check'.
2026-08-04 14:10:54 +00:00
luis 84bb4f4425 docx
NixOS Configuration CI / Nix Flake Check (push) Failing after 18s
2026-07-13 12:37:11 +02:00
luis 9f9001299c Merge pull request 'add: annas-mcp package for Anna's Archive search/download' (#6) from add/annas-mcp into main
NixOS Configuration CI / Nix Flake Check (push) Failing after 13s
Reviewed-on: #6
2026-07-12 21:02:10 +02:00
hermes-agent 8dc25624ff add: annas-mcp package (Go, fakeHash placeholders)
NixOS Configuration CI / Nix Flake Check (pull_request) Failing after 20s
2026-07-12 18:58:19 +00:00
luis d276fe1ef0 Merge pull request 'pinchflat-mcp: add pagination, downloaded filter, and delete_media tool' (#5) from fix/pinchflat-mcp-pagination into main
NixOS Configuration CI / Nix Flake Check (push) Successful in 13s
Reviewed-on: #5
2026-07-12 13:19:27 +02:00
hermes-agent 676d06f8ca audiobookshelf-mcp: fix vendorHash (from CI)
NixOS Configuration CI / Nix Flake Check (pull_request) Successful in 46s
2026-07-12 11:16:46 +00:00
hermes-agent 4856b98429 fix: remove committed pyc, add to gitignore
NixOS Configuration CI / Nix Flake Check (pull_request) Failing after 14s
2026-07-12 11:14:52 +00:00
hermes-agent d009717854 audiobookshelf-mcp: fix src hash (from CI), still need vendorHash
NixOS Configuration CI / Nix Flake Check (pull_request) Failing after 14s
2026-07-12 11:14:43 +00:00
hermes-agent 617bb9cab5 pinchflat-mcp: add pagination, downloaded filter, and delete_media tool
NixOS Configuration CI / Nix Flake Check (pull_request) Failing after 21s
- list_media: add offset and downloaded params for API pagination
- delete_media: new tool to delete downloaded files (with prevent_download option)
- Bump timeout on delete to 120s
2026-07-12 11:09:19 +00:00
luis fa32b4a941 Merge pull request 'Add pinchflat-mcp package' (#4) from feat/pinchflat-mcp into main
NixOS Configuration CI / Nix Flake Check (push) Successful in 12s
Reviewed-on: #4
2026-07-05 00:10:25 +02:00
20 changed files with 23284 additions and 105 deletions

No files matched your search

+1
View File
@@ -27,3 +27,4 @@ result-*
# Local environment overrides
.envrc.local
/.dir-locals.el
__pycache__/
+7
View File
@@ -26,6 +26,13 @@ This repository provides Nix derivations for MCP (Model Context Protocol) server
| sabnzbd-mcp | MCP server for SABnzbd download management | Python |
| jellyfin-mcp | MCP server for Jellyfin — search, playback, metadata, admin | Go |
| zotero-mcp | Connect Zotero research library with AI assistants | Python |
| annas-mcp | Search/download documents from Anna's Archive | Go |
| bitwarden-mcp | Official Bitwarden vault, login, Send, org management | TypeScript |
| mcp-email-server | Send, receive, search email over IMAP/SMTP | Python |
| namecheap-mcp | Namecheap DNS, domains, contacts, registrar lock | TypeScript |
| navidrome-mcp | Navidrome music library search, playlists, radio, playback | TypeScript |
| ovhcloud-mcp | OVHcloud VPS, domains, DNS, billing, SSH, API explorer | TypeScript |
| slskd-mcp | slskd (Soulseek) search, download, peer browsing, private messages | Python |
| mcp-score | AI-driven music score generation and MuseScore live control | Python |
## Usage
+13 -6
View File
@@ -2,28 +2,35 @@
lib,
buildGoModule,
fetchFromGitHub,
makeWrapper,
}:
buildGoModule rec {
pname = "annas-mcp";
version = "0.0.5";
version = "0.1.0-unstable-2026-06-26";
src = fetchFromGitHub {
owner = "iosifache";
repo = "annas-mcp";
rev = "v${version}";
hash = "sha256-XicM7tU5jD8B8n7JJDQ/84koBiLb8XF4+WBQ4LCUoRU=";
rev = "c095963ad5d10d33da3c614495246b6ec7f680d4";
hash = "sha256-4gH5175yA9YYPVifXX3n9WCTRug0gOOfpQBLaGbvBcU=";
};
vendorHash = "sha256-2NdG5p2XfrhVgi388dRDBUSGwg6ybnzfn9495TWNGsA=";
subPackages = [ "cmd/annas-mcp" ];
nativeBuildInputs = [ makeWrapper ];
# The MCP server mode is invoked with "mcp" subcommand
postInstall = ''
wrapProgram $out/bin/annas-mcp \
--add-flags "mcp"
'';
meta = with lib; {
description = "MCP server and CLI for searching and downloading documents from Anna's Archive";
description = "MCP server and CLI tool for searching and downloading documents from Anna's Archive";
homepage = "https://github.com/iosifache/annas-mcp";
license = licenses.mit;
mainProgram = "annas-mcp";
platforms = platforms.all;
platforms = platforms.linux;
};
}
+2 -2
View File
@@ -12,10 +12,10 @@ buildGoModule rec {
owner = "michaeldvinci";
repo = "audiobookshelf-mcp";
rev = "e790d9c75085772180c95f2ec1376acc98e9282c";
hash = lib.fakeHash;
hash = "sha256-vQR+Ej3Qtg8ehIUWnXkSayNYpqnOZPWV0TpTVPYh+io=";
};
vendorHash = lib.fakeHash;
vendorHash = "sha256-W8hlCGf4QdFbKc3QFc9pa4MWBhnp5A5GvWFNzg0BEhw=";
meta = with lib; {
description = "MCP server for Audiobookshelf — libraries, audiobooks, podcasts, authors, collections, playlists";
File diff suppressed because it is too large. Load diff
+33
View File
@@ -0,0 +1,33 @@
{
lib,
buildNpmPackage,
fetchzip,
makeWrapper,
}:
buildNpmPackage rec {
pname = "bitwarden-mcp";
version = "2026.7.0";
src = fetchzip {
url = "https://registry.npmjs.org/@bitwarden/mcp-server/-/mcp-server-${version}.tgz";
hash = "sha256-uvytqAXW0G9HCshJ987j0U3a+c0p8xUG1m0BsU9Q7AQ=";
};
npmDepsHash = "sha256-X3mXupbs2Sx6E3mYRvtuWyT+FhfGmYyQZAK1iPAStM0=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
'';
# dist/ is already built in the npm tarball
dontNpmBuild = true;
meta = with lib; {
description = "Official Bitwarden MCP server - vault, login, folder, Send, and organization management";
homepage = "https://github.com/bitwarden/mcp-server";
license = licenses.bsd3;
mainProgram = "bitwarden-mcp";
platforms = platforms.all;
};
}
+8 -1
View File
@@ -8,6 +8,7 @@
zotero-mcp = pkgs.callPackage ./zotero-mcp/package.nix { };
pdf-reader-mcp = pkgs.callPackage ./pdf-reader-mcp/package.nix { };
kindly-web-search-mcp-server = pkgs.callPackage ./kindly-web-search-mcp-server/package.nix { };
docx-mcp = pkgs.callPackage ./docx-mcp/package.nix { };
duckduckgo-mcp-server = pkgs.callPackage ./duckduckgo-mcp-server/package.nix { };
n8n-mcp = pkgs.callPackage ./n8n-mcp/package.nix { };
simple-web-search-mcp = pkgs.callPackage ./simple-web-search-mcp/package.nix { };
@@ -16,10 +17,16 @@
sabnzbd-mcp = pkgs.callPackage ./sabnzbd-mcp/package.nix { };
jellyfin-mcp = pkgs.callPackage ./jellyfin-mcp/package.nix { };
nextcloud-mcp-server = pkgs.callPackage ./nextcloud-mcp-server/package.nix { };
annas-mcp = pkgs.callPackage ./annas-mcp/package.nix { };
mcp-score = pkgs.callPackage ./mcp-score/package.nix { };
applemusic-mcp = pkgs.callPackage ./applemusic-mcp/package.nix { };
pinchflat-mcp = pkgs.callPackage ./pinchflat-mcp/package.nix { };
audiobookshelf-mcp = pkgs.callPackage ./audiobookshelf-mcp/package.nix { };
annas-mcp = pkgs.callPackage ./annas-mcp/package.nix { };
bitwarden-mcp = pkgs.callPackage ./bitwarden-mcp/package.nix { };
mcp-email-server = pkgs.callPackage ./mcp-email-server/package.nix { };
namecheap-mcp = pkgs.callPackage ./namecheap-mcp/package.nix { };
navidrome-mcp = pkgs.callPackage ./navidrome-mcp/package.nix { };
ovhcloud-mcp = pkgs.callPackage ./ovhcloud-mcp/package.nix { };
slskd-mcp = pkgs.callPackage ./slskd-mcp/package.nix { };
# example-mcp-server = pkgs.callPackage ./example-mcp-server/package.nix { };
}
+39
View File
@@ -0,0 +1,39 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonApplication rec {
pname = "docx-mcp";
version = "2.0.0-unstable-2026-07-13";
src = fetchFromGitHub {
owner = "Rookie0x80";
repo = "docx-mcp";
rev = "b6188eaa57d2694b8f70217e8f6a15980b22ec16";
hash = "sha256-JjcQjwTiJvO6f0f+iiLgm24Rjms8+xehXHsAD6L+TEY=";
};
pyproject = true;
build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages; [
python-docx
fastmcp
typing-extensions
];
doCheck = false;
pythonImportsCheck = [ "docx_mcp" ];
meta = with lib; {
description = "MCP server for Microsoft Word .docx operations using python-docx (table-focused)";
homepage = "https://github.com/Rookie0x80/docx-mcp";
license = licenses.mit;
mainProgram = "docx-mcp";
platforms = platforms.all;
maintainers = [ ];
};
}
+127 -87
View File
@@ -1,15 +1,15 @@
{
"name": "mcp-arr-server",
"version": "1.5.4",
"version": "1.7.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mcp-arr-server",
"version": "1.5.4",
"version": "1.7.3",
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.25.2"
"@modelcontextprotocol/sdk": "^1.30.0"
},
"bin": {
"mcp-arr": "dist/index.js"
@@ -23,24 +23,24 @@
}
},
"node_modules/@hono/node-server": {
"version": "1.19.11",
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz",
"integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.0.tgz",
"integrity": "sha512-XovyyCCnBzW+zKu+z/zq8hwNs4KOR5rEMAOxo2f40Q5xoOI37IMm6MIg2COOUtUApo0i6850MTBKH2u4QLGIqg==",
"license": "MIT",
"engines": {
"node": ">=18.14.1"
"node": ">=20"
},
"peerDependencies": {
"hono": "^4"
}
},
"node_modules/@modelcontextprotocol/sdk": {
"version": "1.28.0",
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.28.0.tgz",
"integrity": "sha512-gmloF+i+flI8ouQK7MWW4mOwuMh4RePBuPFAEPC6+pdqyWOUMDOixb6qZ69owLJpz6XmyllCouc4t8YWO+E2Nw==",
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz",
"integrity": "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==",
"license": "MIT",
"dependencies": {
"@hono/node-server": "^1.19.9",
"@hono/node-server": "^1.19.9 || ^2.0.5",
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"content-type": "^1.0.5",
@@ -75,9 +75,9 @@
}
},
"node_modules/@types/node": {
"version": "20.19.37",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz",
"integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==",
"version": "20.19.43",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz",
"integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -98,9 +98,9 @@
}
},
"node_modules/ajv": {
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
"integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
"integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -131,20 +131,20 @@
}
},
"node_modules/body-parser": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz",
"integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz",
"integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==",
"license": "MIT",
"dependencies": {
"bytes": "^3.1.2",
"content-type": "^1.0.5",
"content-type": "^2.0.0",
"debug": "^4.4.3",
"http-errors": "^2.0.0",
"iconv-lite": "^0.7.0",
"http-errors": "^2.0.1",
"iconv-lite": "^0.7.2",
"on-finished": "^2.4.1",
"qs": "^6.14.1",
"raw-body": "^3.0.1",
"type-is": "^2.0.1"
"qs": "^6.15.2",
"raw-body": "^3.0.2",
"type-is": "^2.1.0"
},
"engines": {
"node": ">=18"
@@ -154,6 +154,19 @@
"url": "https://opencollective.com/express"
}
},
"node_modules/body-parser/node_modules/content-type": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
"integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -193,9 +206,9 @@
}
},
"node_modules/content-disposition": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
"integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
"integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -337,9 +350,9 @@
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
"integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
@@ -376,9 +389,9 @@
}
},
"node_modules/eventsource-parser": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz",
"integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz",
"integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
@@ -428,12 +441,13 @@
}
},
"node_modules/express-rate-limit": {
"version": "8.3.1",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz",
"integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==",
"version": "8.6.2",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.2.tgz",
"integrity": "sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==",
"license": "MIT",
"dependencies": {
"ip-address": "10.1.0"
"debug": "^4.4.3",
"ip-address": "^10.2.0"
},
"engines": {
"node": ">= 16"
@@ -452,9 +466,9 @@
"license": "MIT"
},
"node_modules/fast-uri": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
"integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz",
"integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==",
"funding": [
{
"type": "github",
@@ -577,9 +591,9 @@
}
},
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
"integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -589,9 +603,9 @@
}
},
"node_modules/hono": {
"version": "4.12.9",
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz",
"integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==",
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/hono/-/hono-4.13.1.tgz",
"integrity": "sha512-kdJoFVv2xmayw6cY09H7AbMJMt8Jn5jdlEdXsP7AGBdF2DIptVlKlOLKXP41yPip4/a3yQPv9gVcJYI8YY04dw==",
"license": "MIT",
"engines": {
"node": ">=16.9.0"
@@ -618,9 +632,9 @@
}
},
"node_modules/iconv-lite": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
"integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz",
"integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -640,9 +654,9 @@
"license": "ISC"
},
"node_modules/ip-address": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
"integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz",
"integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==",
"license": "MIT",
"engines": {
"node": ">= 12"
@@ -670,9 +684,9 @@
"license": "ISC"
},
"node_modules/jose": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz",
"integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==",
"version": "6.2.8",
"resolved": "https://registry.npmjs.org/jose/-/jose-6.2.8.tgz",
"integrity": "sha512-Bsdjwm3Qsd/P0jR+BHDe3LytDfY7WBq2HmCCLIwuVRHMuEC9ae7/R474GIUdF1NgCyZjzVo/A9DOiOBtXq8ZoQ==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/panva"
@@ -700,12 +714,16 @@
}
},
"node_modules/media-typer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz",
"integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/merge-descriptors": {
@@ -821,9 +839,9 @@
}
},
"node_modules/path-to-regexp": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.0.tgz",
"integrity": "sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg==",
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
"integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -853,12 +871,13 @@
}
},
"node_modules/qs": {
"version": "6.15.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz",
"integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==",
"version": "6.15.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
"integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
"es-define-property": "^1.0.1",
"side-channel": "^1.1.1"
},
"engines": {
"node": ">=0.6"
@@ -868,12 +887,16 @@
}
},
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz",
"integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/raw-body": {
@@ -995,14 +1018,14 @@
}
},
"node_modules/side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
"integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3",
"side-channel-list": "^1.0.0",
"object-inspect": "^1.13.4",
"side-channel-list": "^1.0.1",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
@@ -1014,13 +1037,13 @@
}
},
"node_modules/side-channel-list": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
"integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3"
"object-inspect": "^1.13.4"
},
"engines": {
"node": ">= 0.4"
@@ -1085,17 +1108,34 @@
}
},
"node_modules/type-is": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
"integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
"integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==",
"license": "MIT",
"dependencies": {
"content-type": "^1.0.5",
"content-type": "^2.0.0",
"media-typer": "^1.1.0",
"mime-types": "^3.0.0"
},
"engines": {
"node": ">= 0.6"
"node": ">= 18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/type-is/node_modules/content-type": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
"integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/typescript": {
@@ -1159,9 +1199,9 @@
"license": "ISC"
},
"node_modules/zod": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
"integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
+3 -3
View File
@@ -6,14 +6,14 @@
buildNpmPackage rec {
pname = "mcp-arr-server";
version = "1.5.4";
version = "1.7.3";
src = fetchzip {
url = "https://registry.npmjs.org/mcp-arr-server/-/mcp-arr-server-${version}.tgz";
hash = "sha256-4eSL1eQmPfm5XlQuxykRDotTHvq9oScJOdXOZrYs6sU=";
hash = "sha256-n2wbAvkssh1OuxAZDcixOYkc2fdmhRkKJWsb+zoEEmY=";
};
npmDepsHash = "sha256-s3/NbuHGqp+wAs7ysKcdBk6X0DNcvfMce+RbsB8Nt14=";
npmDepsHash = "sha256-fG9reQSzNb3QvqvrHKhtOjijTKNEKH7I27rpr0t2gio=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
+57
View File
@@ -0,0 +1,57 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonApplication rec {
pname = "mcp-email-server";
version = "1.4.1";
pyproject = true;
src = fetchFromGitHub {
owner = "Wh1isper";
repo = "mcp-email-server";
rev = "a1668a912db08373cc109b7482363129c75fd646";
hash = "sha256-Zt+198bQMthp6Mxmmsd7eTh9iybqOXWuVqLylzfUiIg=";
};
build-system = with python3Packages; [
hatchling
];
dependencies = with python3Packages; [
aioimaplib
aiosmtplib
anyio
beautifulsoup4
click
jinja2
keyring
loguru
mcp
pydantic
pydantic-settings
starlette
tomli-w
typer
email-validator
filelock
uvicorn
];
doCheck = false;
# mcp transitively requires filelock>=3.32.2 but nixpkgs ships 3.29.7;
# the runtime-deps check is too strict, so skip it (same as nextcloud-mcp-server).
dontCheckRuntimeDeps = true;
pythonImportsCheck = [ "mcp_email_server" ];
meta = with lib; {
description = "MCP server for email - send, receive, search, and manage mail over IMAP/SMTP";
homepage = "https://github.com/Wh1isper/mcp-email-server";
license = licenses.mit;
mainProgram = "mcp-email-server";
platforms = platforms.all;
};
}
File diff suppressed because it is too large. Load diff
+33
View File
@@ -0,0 +1,33 @@
{
lib,
buildNpmPackage,
fetchzip,
}:
buildNpmPackage rec {
pname = "namecheap-mcp";
version = "1.0.1";
src = fetchzip {
# npm package is "namecheap-api-mcp"; pname is the Nix attr name.
url = "https://registry.npmjs.org/namecheap-api-mcp/-/namecheap-api-mcp-${version}.tgz";
hash = "sha256-+/MwPgrxJiWmObkLF30YqXWGwesbp98qzGiv/W86WYw=";
};
npmDepsHash = "sha256-l0i/zzy3I29ilF8vZMBrTlBQdvrISC9Vr/iQJXDVKmw=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
'';
# dist/ is already built in the npm tarball
dontNpmBuild = true;
meta = with lib; {
description = "Namecheap API MCP server - DNS, domains, contacts, and registrar lock management";
homepage = "https://github.com/lanternrow/namecheap-api-mcp";
license = licenses.mit;
mainProgram = "namecheap-api-mcp";
platforms = platforms.all;
};
}
File diff suppressed because it is too large. Load diff
+32
View File
@@ -0,0 +1,32 @@
{
lib,
buildNpmPackage,
fetchzip,
}:
buildNpmPackage rec {
pname = "navidrome-mcp";
version = "2.2.0";
src = fetchzip {
url = "https://registry.npmjs.org/${pname}/-/${pname}-${version}.tgz";
hash = "sha256-1wZyM0GJUrQfzBK1tWqqIcVk90KUv/9wt2ZpRobQp/A=";
};
npmDepsHash = "sha256-58OZ4qVfeN+0LVzcSJQHQqiY66gPSGWI6ht/4fMp0oQ=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
'';
# dist/ is already built in the npm tarball
dontNpmBuild = true;
meta = with lib; {
description = "MCP server for Navidrome - search music library, playlists, radio stations, and playback control";
homepage = "https://github.com/Blakeem/Navidrome-MCP";
license = licenses.mit;
mainProgram = "navidrome-mcp";
platforms = platforms.all;
};
}
File diff suppressed because it is too large. Load diff
+34
View File
@@ -0,0 +1,34 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
}:
buildNpmPackage rec {
pname = "ovhcloud-mcp";
version = "2.0.1";
src = fetchFromGitHub {
owner = "hlebtkachenko";
repo = "ovhcloud-mcp";
rev = "ccadc85bd4aab35434a24732bc77ef2b6f100b4c";
hash = "sha256-FYJSKOU/lCutGCUJhaAtKWBLJOBUyWvdkSnMWbxwhI4=";
};
npmDepsHash = "sha256-myeqksb3mjJ1GJej/4D7iuyOOTsGJBdkka9zUpH+flY=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
'';
# dist/ is NOT committed to the repo; buildNpmPackage runs "npm run build"
# (tsc) by default, which emits dist/index.js.
meta = with lib; {
description = "OVHcloud MCP server - VPS, domains, DNS, billing, SSH, and API explorer";
homepage = "https://github.com/hlebtkachenko/ovhcloud-mcp";
license = licenses.mit;
mainProgram = "ovhcloud-mcp";
platforms = platforms.all;
};
}
+34 -3
View File
@@ -150,11 +150,25 @@ def force_metadata_refresh(source_id: int) -> dict:
# --- Media Items ---
@mcp.tool()
def list_media(source_id: Optional[int] = None, limit: int = 50) -> dict:
"""List media items. Optionally filter by source_id."""
params = {}
def list_media(
source_id: Optional[int] = None,
limit: int = 50,
offset: int = 0,
downloaded: Optional[bool] = None,
) -> dict:
"""List media items with pagination. Optionally filter by source_id or download status.
Args:
source_id: Filter to a specific source
limit: Max items to return (default 50)
offset: Skip first N items for pagination (default 0)
downloaded: If True, only return downloaded media; if False, only undownloaded
"""
params = {"limit": limit, "offset": offset}
if source_id:
params["source_id"] = source_id
if downloaded is not None:
params["downloaded"] = "true" if downloaded else "false"
return _get("/media", params=params)
@@ -176,6 +190,23 @@ def force_download_media(media_id: int) -> dict:
return _post(f"/media/{media_id}/force_download")
@mcp.tool()
def delete_media(media_id: int, prevent_download: bool = False) -> dict:
"""Delete a media item's downloaded files from disk.
Args:
media_id: The media item ID to delete
prevent_download: If True, prevent the item from being re-downloaded in the future
"""
params = {}
if prevent_download:
params["prevent_download"] = "true"
with httpx.Client(timeout=120) as client:
r = client.delete(f"{BASE}/media/{media_id}", headers=HEADERS, params=params)
r.raise_for_status()
return r.json()
# --- Media Profiles ---
@mcp.tool()
+7 -3
View File
@@ -21,10 +21,14 @@ stdenv.mkDerivation {
version = "0.1.0-unstable";
src = fetchFromGitHub {
owner = "jmagar";
# Original upstream (jmagar/sabnzbd-mcp) was deleted from GitHub.
# Using jasonpaulso's fork, which preserves the same file layout
# (client.py + sabnzbd-mcp-server.py at repo root) and the
# /sabnzbd/api string that postPatch below rewrites.
owner = "jasonpaulso";
repo = "sabnzbd-mcp";
rev = "9d691ed70b72397fddec03ca4ec68c81b30c79c3";
hash = "sha256-1sEnHH40cDVT5oiZD2Xywl7S9vJThii/ce+6r+XmpSw=";
rev = "8755e70e2634c02c24471f32962224833877dc81";
hash = "sha256-y46jTXBsOXMoFnnwyv0n+8uq2Z/kw2HbnZC85knWpUw=";
};
nativeBuildInputs = [ makeWrapper ];
+49
View File
@@ -0,0 +1,49 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
python3,
}:
let
python = python3.withPackages (
ps: with ps; [
fastmcp
httpx
]
);
in
stdenv.mkDerivation rec {
pname = "slskd-mcp";
version = "0.1.0-unstable-2026-07-28";
src = fetchFromGitHub {
owner = "abl030";
repo = "slskd-mcp";
rev = "08e4373f41fddcceff8ea3240323e0c6258a373e";
hash = "sha256-ELUoAOOWmNoxoTjPxxAY00exN56lngSPs4wtn/GadQU=";
};
nativeBuildInputs = [ makeWrapper ];
# generated/server.py is tracked in git; no build step needed.
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/lib/slskd-mcp $out/bin
cp -r $src/generated $out/lib/slskd-mcp/
makeWrapper ${python}/bin/fastmcp $out/bin/slskd-mcp \
--add-flags "run $out/lib/slskd-mcp/generated/server.py"
runHook postInstall
'';
meta = with lib; {
description = "MCP server for slskd (Soulseek daemon) - search, download, browse peers, private messages";
homepage = "https://github.com/abl030/slskd-mcp";
license = licenses.mit;
mainProgram = "slskd-mcp";
platforms = platforms.all;
};
}