MoonshotAI / MoonshotAI/kimi-code
ACP session/new accepts HTTP MCP servers but never connects to them (silent no-op)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 7.5k
- Forks
- 1.2k
- Avg merge
- 11h 53m
- Merged PRs (30d)
- 350
Description
Environment
- kimi-code 0.34.0, macOS
- Client: ACP (Agent Client Protocol)
session/newwithmcpServersparameter - Test servers: ~50-line stdio echo server and ~80-line HTTP echo server, both answering
ECHO:/ECHOHTTP:markers so we can prove which path answered
Repro matrix (all four rows same session, same agent)
| # | Injection route | Transport | Result |
|---|---|---|---|
| 1 | global ~/.kimi-code/mcp.json |
stdio | ✅ works |
| 2 | session/new mcpServers |
stdio | ✅ works (+14.9s, marker hit) |
| 3 | session/new mcpServers |
http | ❌ silently never connects |
| 4 | global ~/.kimi-code/mcp.json |
http | ✅ works (+18.3s, server logged 4 requests) |
Row 3 details: session/new accepts the HTTP entry without any error (we tried both {url} per the documented config grammar and a {name, url} variant). The HTTP server logged zero requests for the entire session, and the agent could not find the tool — i.e. the tool table was never built. No error surfaces anywhere: not in the ACP response, not in session events, not in the agent's tool list.
Expected
Either HTTP MCP servers passed via session/new are connected on demand (matching the global-config behavior of row 4), or session/new rejects/diagnoses unsupported transports instead of accepting them silently.
Actual
Silent accept + never connect + no diagnostics. The only way to detect the failure is to notice the tools are missing.
Why this matters
Per-session MCP injection is the natural integration point for clients that drive kimi via ACP (editor plugins, mobile remotes). stdio-per-session works, but HTTP sidecars (long-lived local services shared across sessions) currently require the global config file, which is a poor fit for dynamic per-session tooling. The silence makes it worse: integrators burn hours before realizing the connection is never attempted.
Notes
- Your
mcpCapabilitiesadvertisehttp/sse: true("forwards HTTP MCP services configured by the IDE"), and the official capability matrix confirmssession/newacceptsmcpServers— so rows 3 vs 4 look like a genuine gap rather than an unsupported combination. - Full POC log (Chinese) available on request; the matrix above is the complete repro.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the ACP session/new handling of the mcpServers parameter and compare its HTTP path with the global ~/.kimi-code/mcp.json path, using the provided stdio and HTTP repro matrix. Done means an HTTP server supplied per session is connected and its tools appear, or the request clearly reports that the transport is unsupported.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100