clinkx
v0.1.0
Published
ClinkX MCP STDIO server — CLI-to-CLI bridge tool
Readme
ClinkX
An MCP server (STDIO) that exposes one tool: clink. It runs a local CLI — Gemini, Codex, Claude, or anything else you configure — as a subprocess and returns the output.
Config-driven. No hardcoded CLI allowlist. PAL-compatible at the field level.
Quick start
Requires Node.js >= 24 and at least one CLI configured as an adapter.
npm install
npm run build
node dist/index.jsstdout carries MCP JSON-RPC frames (one JSON object per line). Logs go to stderr.
Configuration
Adapters are JSON files discovered in this order:
CLINKX_CONFIG_PATH(file or directory)${XDG_CONFIG_HOME:-~/.config}/clinkx/adapters/*.jsonconf/adapters/*.json(relative toprocess.cwd())
See docs/configuration.md for the full adapter reference.
Adding an adapter
Create conf/adapters/echo.json:
{
"name": "echo",
"command": "node",
"args": ["-e", "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>process.stdout.write(d));"],
"parser": "text",
"prompt_mode": "stdin",
"timeout_seconds": 60
}Then start the server with node dist/index.js.
MCP client config
The exact shape depends on the client. For a local STDIO server:
{
"mcpServers": {
"clinkx": {
"command": "npx",
"args": ["-y", "clinkx@latest"],
"env": {
"CLINKX_ALLOWED_ROOTS": "/path/to/your/workspace"
}
}
}
}Safety
ClinkX validates what goes into the request: paths, environment variables, and argument policy. It does not sandbox the spawned process.
CLINKX_ALLOWED_ROOTS constrains which file paths the tool accepts. The subprocess runs with the permissions of whoever started ClinkX.
See docs/security.md for details.
