Bridges MCP clients to Moonshot AI's Kimi Code CLI, letting you invoke Kimi's coding agents without leaving your editor. Wraps the native CLI flags (sessions, multi-root workspaces, MCP passthrough) and adds structured tools: ask-kimi for file analysis with @path references and session resume, batch-kimi for parallel task execution, review-changes for git diff code review, and brainstorm for structured ideation modes. Uses the same working directory inference chain as codex-mcp-tool (argument, env var, @path, process cwd). Useful when you want Kimi K2.6's agent orchestration and 262k context as a sub-agent inside Claude Desktop, Cursor, or any stdio MCP client. Requires Kimi CLI installed and authenticated via /login or MOONSHOT_API_KEY.
MCP server (stdio) that bridges Claude / Cursor / any MCP client to Moonshot AI's Kimi Code CLI.
Architecture mirrors @trishchuk/codex-mcp-tool — same patterns, adapted to Kimi's flag surface (--print, --quiet, -r, --continue, --add-dir, --mcp-config-file, --config).
Kimi K2.6 (April 2026) is a 1T-parameter MoE open-weight model with native agent-swarm orchestration, 262k context, and SWE-Bench Pro on par with GPT-5.5. Kimi Code CLI is the reference agent harness. This server lets MCP-aware editors call Kimi as a sub-agent without leaving their primary interface.
npm install -g @trishchuk/kimi-mcp-server
You also need Kimi Code CLI:
curl -LsSf https://code.kimi.com/install.sh | bash
# OR
uv tool install --python 3.13 kimi-cli
Then run kimi once and use /login to authenticate via the Kimi Code platform — or set MOONSHOT_API_KEY.
Minimal — working directory is auto-detected from PWD / INIT_CWD / process.cwd(), just like codex-mcp-tool:
{
"mcpServers": {
"kimi": {
"command": "kimi-mcp"
}
}
}
Pin a specific project root only if your client launches the server from somewhere unrelated:
{
"mcpServers": {
"kimi": {
"command": "kimi-mcp",
"env": { "KIMI_MCP_CWD": "/absolute/path/to/your/project" }
}
}
}
You can also override per call via the workingDir argument on ask-kimi, or let the server infer it from @path/to/file references in the prompt — same priority chain as codex-mcp-tool: workingDir arg → KIMI_MCP_CWD → PWD → INIT_CWD → @path inference → process.cwd().
| Tool | What it does |
|---|---|
ask-kimi | Main entry — file analysis (@path), session resume, MCP passthrough |
brainstorm | Structured ideation (divergent / convergent / SCAMPER / design-thinking / lateral / auto) |
batch-kimi | Sequential or parallel atomic tasks with priority, stop-on-error, structured report |
review-changes | Code review of working tree / branch diff / specific commit (collects git diff and prompts Kimi) |
list-sessions | List, delete, or clear active conversation sessions |
health | Diagnose Kimi CLI installation, auth, and session state |
ping / Help / version | Smoke tests + help passthrough |
ask-kimi highlightsprompt — supports @path/to/file to drop file context (Kimi reads via working dir).model — overrides default_model at runtime via --config. Known: kimi-for-coding, kimi-k2-6, kimi-k2-thinking-turbo, kimi-k2-5, kimi-latest.thinking — toggles thinking mode (writes default_thinking into runtime config).outputFormat — text (default) or stream-json (JSONL of assistant + tool messages, parsed transparently).responseMode — clean (default; final assistant text only) or full (tool calls + stderr log + final).sessionId — workspace-isolated session ID (md5 of repo:head:path). The server tracks the native Kimi session ID returned by the CLI and replays it via kimi -r <id>.continueLatest — sets --continue (resume the most recent session in the cwd).mcpConfigFile — passes --mcp-config-file so Kimi can talk to other MCP servers from inside this process.addDirs — repeats --add-dir for multi-root projects.yolo / afk — approval shortcuts (print mode auto-approves anyway, but useful for documentation/logging).| Feature | Kimi CLI |
|---|---|
| Print / non-interactive | --print (required for MCP); --quiet = --print --output-format text --final-message-only |
| JSON streaming | --output-format=stream-json, --input-format=stream-json |
| Sessions | --continue, --session <id>, -r <id> |
| Configuration | --config-file <path>, --config '<json/toml>' |
| Workspace | spawn cwd + --add-dir <path> (no --cd flag) |
| MCP passthrough | --mcp-config-file or kimi mcp add |
| Exit codes | 0 ok, 1 fatal, 75 retryable transient |
| Var | Default | Purpose |
|---|---|---|
KIMI_MCP_CWD | — | Override working directory for every tool call |
KIMI_SESSION_TTL_MS | 86400000 (24h) | Session expiration |
KIMI_MAX_SESSIONS | 50 | Max concurrent sessions |
MOONSHOT_API_KEY | — | Forwarded to Kimi CLI for unattended auth |
npm install
npm run build # tsc → dist/
npm run lint # tsc --noEmit
node dist/index.js # smoke run on stdio
MIT — Taras Trishchuk
KIMI_MCP_CWDOverride working directory for all tool calls
KIMI_SESSION_TTL_MSdefault: 86400000Session time-to-live in milliseconds (default: 86400000 = 24h)
KIMI_MAX_SESSIONSdefault: 50Maximum concurrent sessions (default: 50)
MOONSHOT_API_KEYsecretForwarded to Kimi CLI for unattended auth. Leave unset to use OAuth (run `kimi /login` once).