synix/pkgs/fetcher-mcp/default.nix
2026-02-26 23:10:38 +01:00

69 lines
1.5 KiB
Nix

{
lib,
buildNpmPackage,
fetchFromGitHub,
makeWrapper,
playwright-driver,
linkFarm,
jq,
...
}:
let
revision = "1161";
chromium-headless-shell =
playwright-driver.passthru.components."chromium-headless-shell".overrideAttrs
(old: {
inherit revision;
});
browsers-headless-only = linkFarm "playwright-browsers-headless-only" [
{
name = "chromium-${revision}";
path = chromium-headless-shell;
}
];
in
buildNpmPackage rec {
pname = "fetcher-mcp";
version = "0.3.6";
src = fetchFromGitHub {
owner = "jae-jae";
repo = "fetcher-mcp";
rev = "8754aff66e3d9207502207bf82a493f45f556bb8";
hash = "sha256-CH9qTU+BS3/zCs9QVIHPqoHdul9qpaha1D+gZzoLteY=";
};
env.PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1";
nativeBuildInputs = [
makeWrapper
jq
];
npmDepsHash = "sha256-waLaOeDaCsgltLrri0kjjFJPazOE/cY+2F+Yu0i55Cg=";
postPatch = ''
${jq}/bin/jq 'del(.scripts.postinstall) | del(.scripts."install-browser")' package.json > package.json.tmp && mv package.json.tmp package.json
'';
makeWrapperArgs = [
"--set"
"PLAYWRIGHT_BROWSERS_PATH"
"${browsers-headless-only}"
# "--set"
# "PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS"
# "true"
];
meta = {
description = "MCP server for fetch web page content using Playwright headless browser";
homepage = "https://github.com/jae-jae/fetcher-mcp";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ];
mainProgram = "fetcher-mcp";
platforms = lib.platforms.all;
};
}