MoonshotAI / MoonshotAI/kimi-code

ACP session/new accepts HTTP MCP servers but never connects to them (silent no-op)

Open
#2,834 1 comment 0 reactions 0 assignees View on GitHub

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/new with mcpServers parameter
  • 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 mcpCapabilities advertise http/sse: true ("forwards HTTP MCP services configured by the IDE"), and the official capability matrix confirms session/new accepts mcpServers — 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.