MCP tool calls fail: invalid JSON when passing session_name / session_id (Cursor agent)
还没有人认领这个 Issue。
- #25 来自 @tony —— 已关闭,未合并
评估
调研方向
Start by reproducing the Cursor agent calls to list_windows and select_window with session_name or session_id, and capture the malformed payload. Compare this behavior with the existing _coerce_dict_arg and create_session.environment handling; done means determining whether a repository-side error or documentation change is possible, or whether the failure belongs upstream to Cursor or the MCP client.
由索引模型根据 Issue 内容生成。
描述
Summary
When driving libtmux-mcp from Cursor’s agent, some tool invocations fail before the Python server runs: the MCP layer rejects the request because the JSON payload for tool arguments is malformed.
This is not the same as the existing workaround for dict-shaped parameters sent as JSON strings (_coerce_dict_arg / Composer dict-stringification). Here, string values that must be JSON strings are emitted without quotes, producing invalid JSON.
Symptoms
Errors observed on the client/MCP bridge when calling tools that accept optional session targeting, for example:
Unexpected token '$', "{"session_id": $10}" is not valid JSONUnexpected token 'c', "{"session_name": cv}" is not valid JSON
Valid JSON would require:
"session_id": "$10""session_name": "cv"
Impact
- Tools such as
list_windows(withsession_name/session_id) andselect_windowfail entirely; the agent falls back to shelltmuxcommands. - Any tool parameter that is a string could theoretically hit the same class of bug if the serializer mishandles it.
Steps to reproduce (agent)
- Use Cursor with the libtmux MCP server configured (stdio).
- From the agent, call
list_windowswithsession_nameset to a bare session name (e.g.cv), orlist_windows/ related tools withsession_id(e.g.$10). - Observe MCP parse/validation errors instead of a normal tool result.
(Exact UI steps depend on Cursor version; the failure is visible in the agent tool-call error output.)
Expected behavior
Tool arguments are serialized as valid JSON. String parameters are JSON-encoded (quoted, with proper escaping).
Actual behavior
The serialized arguments are not valid JSON (unquoted $10, unquoted cv), so the request fails at parse time.
Nature of the bug
- Likely location: MCP client / Cursor’s tool-argument serialization for this model or code path—not libtmux-mcp’s Python handlers (they never run).
- Relation to existing work: The project already documents dict parameters arriving as JSON strings (Composer 1/1.5) in
_coerce_dict_argandcreate_session.environment. This issue is orthogonal: it is invalid JSON at the wire level, not a semantic coercion problem.
Suggestions
- Upstream: If reproducible only in Cursor, report or cross-link to Cursor with a minimal failing tool call payload.
- Docs: Optionally note in MCP/client docs that agents should prefer globally unique
pane_idtargeting where possible to reduce reliance on session filters. - Investigation: Confirm whether FastMCP / MCP server can surface a clearer error when the client sends malformed JSON (may be outside server control).
Environment (observed)
- OS: Linux (WSL2)
- Cursor agent + libtmux-mcp MCP server (stdio)
- tmux sessions present (e.g. session name
cv, id$10)
If maintainers prefer this tracked as documentation-only or upstream-meta, feel free to relabel; the goal is to capture the failure mode and distinguish it from _coerce_dict_arg-style workarounds.
- 主要语言
- Python
- 星标
- 13
- 派生
- 0
- 平均合并
- 22 分钟
- 30 天内合并 PR
- 4
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
tmux-python/libtmux-mcp 的其他 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 76/100
tmux-python/libtmux-mcp#121 ·
-
bug
难度 2/5 1-3 小时 新手友好度 82/100
tmux-python/libtmux-mcp#120 ·
-
bug
难度 2/5 1-3 小时 新手友好度 82/100
tmux-python/libtmux-mcp#119 ·
-
bug
难度 2/5 1-3 小时 新手友好度 76/100
tmux-python/libtmux-mcp#118 ·
-
pytest filterwarnings suppresses the DeprecationWarnings this project needs to see可能已有人在做 @tony 于 90 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
tmux-python/libtmux-mcp#111 ·
查看 tmux-python/libtmux-mcp 的全部 Issue
相似的 Issue
-
bug
难度 1/5 1 小时以内 新手友好度 88/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
documentation
难度 2/5 1-3 小时 新手友好度 84/100
sergey-miryanov/gcmon#230 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
Azure-Samples/azure-search-openai-demo#3249 ·
维护者通常 1 天内回复
-
[BUG] Failed archive extraction deletes the dataset cache可能已有人在做 @dajiaohuang 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
alibaba/GraphScope#4674 ·