An MCP server that gives AI assistants hands-on access to a local nodejs/node checkout — build, test, search, and review, all from the conversation.
- Node.js ≥ 18
- A local clone of
nodejs/node ghCLI (only forget_pr_metadata)
npm install -g node-core-mcpOr use directly with npx:
npx node-core-mcp --repo /path/to/nodeBy default (no --repo flag), the server resolves the repo root as three directories above the bin/ folder — which works when the package lives inside the repo at tools/node-core-mcp/.
~/.claude/settings.json (global) or .claude/settings.json (project):
{
"mcpServers": {
"node-core": {
"command": "node-core-mcp",
"args": ["--repo", "/absolute/path/to/nodejs/node"]
}
}
}~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"node-core": {
"command": "node-core-mcp",
"args": ["--repo", "/absolute/path/to/nodejs/node"]
}
}
}Requires VS Code 1.99+ with the GitHub Copilot extension. .vscode/mcp.json:
{
"servers": {
"node-core": {
"type": "stdio",
"command": "node-core-mcp",
"args": ["--repo", "${workspaceFolder}/../node"]
}
}
}~/.codex/config.toml:
[mcp_servers.node-core]
command = "node-core-mcp"
args = ["--repo", "/absolute/path/to/nodejs/node"]| Tool | Description |
|---|---|
configure |
Run ./configure (accepts debug, extra_flags) |
build |
Run make (accepts target, jobs) |
run_lint |
Run make lint-js, make lint-cpp, or make lint |
get_node_version |
Get the version of the local dev build (falls back to system Node.js) |
| Tool | Description |
|---|---|
run_test |
Run a single test file with the dev binary |
run_tests |
Run tests matching a pattern via tools/test.py |
run_benchmark |
Run a benchmark file with the dev binary |
explain_test_failure |
Parse TAP / tools/test.py output and return failures + re-run commands |
verify_change |
Detect changed files via git, rebuild only when required, run the relevant tests, and return parsed results. Skips the rebuild entirely for JS-only changes when the binary was configured with --node-builtin-modules-path |
| Tool | Description |
|---|---|
search_code |
grep -rn across lib/, src/, test/ (or a custom dir) |
read_file |
Read a source file (supports offset and limit for large files) |
git_log |
Show recent commit history, optionally filtered by path |
| Tool | Description |
|---|---|
list_docs |
List Markdown files in doc/api/ |
read_doc |
Read a single API doc (e.g. stream.md) |
search_docs |
Search doc/api/, doc/contributing/, and test/README.md |
Requires node-core-utils (ncu-ci) configured with a Jenkins API token, and an authenticated gh CLI.
| Tool | Description |
|---|---|
start_ci |
Start a node-test-pull-request Jenkins run for a PR via ncu-ci run |
get_ci_status |
Fetch parsed Jenkins results for a PR or job URL via ncu-ci url --json |
classify_failure |
Answer "known flake or real regression?" by cross-referencing nodejs/node flaky-test issues and recent nodejs/reliability reports |
| Tool | Description |
|---|---|
find_subsystem |
Given changed files, identify the primary subsystem, likely reviewers, and PR labels |
list_relevant_tests |
Given changed files, suggest tests via the lib/ require graph and a test-name index (not just path heuristics) |
get_pr_metadata |
Fetch labels, CI status, reviews, and commits for a nodejs/node PR via gh |
# Run the test suite (submodule required)
git submodule update --init
npm testTests that require a dev binary (get_node_version, run_test) are automatically skipped unless the binary has been built. To build it:
npm run setup # git submodule update --init + configure + makeCI runs the test suite on Node.js 18, 20, and 22 for every push to main and every pull request. A full build with npm run setup runs weekly (Sundays) to verify the dev-binary-dependent tests.
MIT