node9 runs on your own machine — the client starts it, so there is no endpoint to ping. 3 096 installs a week from npm. Last commit 31 Oct 2026.
Access control for AI agents and MCP servers: allow, hold for approval, or block each tool call
We read the source, 10 h ago · rules 995398eba69f
Things with no honest explanation: a promise that contradicts the code, code that runs at install time while hiding what it does, data leaving the machine.
if (name === 'su' || name === 'runuser') {
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
if (fs.existsSync('/.dockerenv') || fs.existsSync('/run/.containerenv')) return true;
этот файл ставится пользователю, но в репозитории его нет
String.raw`\bopen\s*\(\s*[rRbBuU]?['"]${OUTSIDE}[^'"\n]*['"]\s*,\s*(?:mode\s*=\s*)?[rRbB]?['"][^'"\n]*[wax+]|\bPath\s*\(\s*[rR]?['"]${OUTSIDE}[^'"\n]*['"]\s*\)\s*\.(?:write_text|write_bytes|touch|mkdir|symlink_to)\s*\(|\bshutil\.(?:copy\w*|move)\s*\([^)\n]*['"]${OUTSIDE}|\b…
const found = execSync(`${locatorCommand()} node9`, {
const raw = fs.readFileSync(path.join(__dirname, rel), 'utf-8');
dirs = fs.readdirSync(projectsDir);
Object.entries(process.env).filter(([k]) => !UPSTREAM_INJECTOR_VARS.has(k))
"value": "(cat|less|head|tail|bat|more|open|print|nano|vim?|emacs|code|type|[ef]?grep|rg|ag|ack|g?awk|sed|cut|tr|[jy]q|od|xxd|hexdump|strings|base64|sort|uniq|tac|nl|dd)\\s+.*(credentials\\.json|\\.netrc|\\.npmrc|\\.docker[\\/\\\\]config\\.json|gcloud[\\/\\\\]credentials)",
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
Code changes quietly between releases, and nobody reads the diff of a dependency. We do, on every release — watch node9 and you get told the day something new turns up.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add node9 -- npx -y node9-ai
{
"mcpServers": {
"node9": {
"command": "npx",
"args": [
"-y",
"node9-ai"
]
}
}
}
[mcp_servers.node9]
command = "npx"
args = ["-y", "node9-ai"]
{
"mcpServers": {
"node9": {
"command": "npx",
"args": [
"-y",
"node9-ai"
]
}
}
}
{
"servers": {
"node9": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"node9-ai"
]
}
}
}
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for TouchDesigner - Control and operate TouchDesigner projects through AI agents
Zillow homes and agent contacts for AI agents — search by ZIP, by URL, or look up a zpid.
Budget, payment and audit controls for AI agent API calls and MCP tool calls.
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Pre-sign EVM tx/approval safety for AI agents: decode calldata, flag drainers, return GO/HOLD/BLOCK.
Set up human approval for your AI agents' tool calls.
AI agent tools for Open Security Controls Assessment Language (OSCAL)
Answers built from our own checks of this server.