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
NixOS Configuration CI / Nix Flake Check (push) Successful in 1m10s
This commit was merged in pull request #9.
This commit is contained in:
commit
b4b26c6ef2
13 files changed
+23093
No files matched your search
@@ -26,6 +26,13 @@ This repository provides Nix derivations for MCP (Model Context Protocol) server
|
|||||||
| sabnzbd-mcp | MCP server for SABnzbd download management | Python |
|
| sabnzbd-mcp | MCP server for SABnzbd download management | Python |
|
||||||
| jellyfin-mcp | MCP server for Jellyfin — search, playback, metadata, admin | Go |
|
| jellyfin-mcp | MCP server for Jellyfin — search, playback, metadata, admin | Go |
|
||||||
| zotero-mcp | Connect Zotero research library with AI assistants | Python |
|
| 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 |
|
| mcp-score | AI-driven music score generation and MuseScore live control | Python |
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
buildGoModule,
|
||||||
|
fetchFromGitHub,
|
||||||
|
makeWrapper,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "annas-mcp";
|
||||||
|
version = "0.1.0-unstable-2026-06-26";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "iosifache";
|
||||||
|
repo = "annas-mcp";
|
||||||
|
rev = "c095963ad5d10d33da3c614495246b6ec7f680d4";
|
||||||
|
hash = "sha256-4gH5175yA9YYPVifXX3n9WCTRug0gOOfpQBLaGbvBcU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-2NdG5p2XfrhVgi388dRDBUSGwg6ybnzfn9495TWNGsA=";
|
||||||
|
|
||||||
|
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 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.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+10011
File diff suppressed because it is too large.
Load diff
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -21,5 +21,12 @@
|
|||||||
applemusic-mcp = pkgs.callPackage ./applemusic-mcp/package.nix { };
|
applemusic-mcp = pkgs.callPackage ./applemusic-mcp/package.nix { };
|
||||||
pinchflat-mcp = pkgs.callPackage ./pinchflat-mcp/package.nix { };
|
pinchflat-mcp = pkgs.callPackage ./pinchflat-mcp/package.nix { };
|
||||||
audiobookshelf-mcp = pkgs.callPackage ./audiobookshelf-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 { };
|
# example-mcp-server = pkgs.callPackage ./example-mcp-server/package.nix { };
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+1252
File diff suppressed because it is too large.
Load diff
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+5900
File diff suppressed because it is too large.
Load diff
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+5642
File diff suppressed because it is too large.
Load diff
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in new issue
Block a user