Files
mcp-servers/packages/manim-mcp-server/package.nix
MCP Packages 6902073113 fix
2026-02-04 15:53:58 +01:00

61 lines
1.6 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
python3,
manim,
}:
let
python = python3.withPackages (
ps: with ps; [
mcp
fastmcp
]
);
in
stdenv.mkDerivation rec {
pname = "manim-mcp-server";
version = "0.0.1-unstable";
src = fetchFromGitHub {
owner = "abhiemj";
repo = "manim-mcp-server";
rev = "da23214426a56ce3ba4da39b0718d64cf97cd23c";
hash = "sha256-orR3CtFiSucErPJzIF0Si4s16LH1d+ZhyUKo6PC966I=";
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/lib/manim-mcp-server
# Patch manim_server.py to use a configurable media directory
# The original code uses a path relative to __file__ which fails in the read-only Nix store
substitute src/manim_server.py $out/lib/manim-mcp-server/manim_server.py \
--replace-fail \
'BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "media")' \
'BASE_DIR = os.getenv("MANIM_MCP_MEDIA_DIR", os.path.join(os.path.expanduser("~"), ".cache", "manim-mcp-server", "media"))'
makeWrapper ${python}/bin/python $out/bin/manim-mcp-server \
--add-flags "$out/lib/manim-mcp-server/manim_server.py" \
--set MANIM_EXECUTABLE "${manim}/bin/manim"
runHook postInstall
'';
meta = with lib; {
description = "MCP server that executes Manim animation code and returns generated videos";
homepage = "https://github.com/abhiemj/manim-mcp-server";
license = licenses.mit;
maintainers = [ ];
mainProgram = "manim-mcp-server";
platforms = platforms.all;
};
}