MCP:在 Claude Code 里实测工具调用,并核对断开后模拟器不被带走

オープン
#21 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
半日
初心者へのやさしさ
40/100
issue の種類
ドキュメント
明瞭さ
おおむね明確
活発さ
活発
技術スタック
go
領域
testing

調査の方向性

Start with the MCP section of the README and the modavd mcp entry point, then read how modavd list --json and modavd stop report instance state. Run the two Claude Code rounds (default and legacy protocol) in a separate test root with claude -p --mcp-config <file> --strict-mcp-config, following the tool sequence in the issue. Done means both rounds match the Codex results, progress notifications increase, the disconnect check passes or a P1 bug is filed, and the outcome is recorded in the README.

索引モデルが issue の本文から書いたものです。

説明

enhancement P2

现状

modavd mcp 已经实测过的:

  • Codex 当 MCP 客户端,七个工具的调用全部成功,start_instance 期间收到 13 条 notifications/progress,进度值严格递增;
  • Claude Code 两代协议(默认和 MCP_PROTOCOL_NEGOTIATION=legacy)的握手都通,tools/list 返回完整的 11 个工具;
  • 「断开 MCP 后模拟器还在」只在自己写的模拟客户端上核过:qemu 的父进程链里没有客户端和 modavd。

还没在 Claude Code 里真正调用过工具,也没在真实客户端上核过断开。

为什么要测断开

Windows 上 Claude Code 断开 MCP 服务器时,会结束服务端的整棵进程树。modavd 拉起模拟器时经过一个中间进程,按设计模拟器不在这棵树里。如果这一点在真实客户端上不成立,关掉 Claude Code 就会把开着的实例直接结束:不走 sync,客体里还没写回的数据会丢。

要做的

在一个单独的测试根目录里做,不改用户自己的 Claude Code 配置(用 claude -p --mcp-config <文件> --strict-mcp-config,只在这一次调用里加载 modavd)。

  1. 默认协议和 legacy 协议各跑一轮,按顺序调用:list_instances、check_host、create_instance(3 GB、4 核)、start_instance、shell(getprop sys.boot_completed)、stop_instance、delete_instance。每轮记下:实际走的协议、每个工具的结果、start_instance 的进度通知是否递增、delete_instance 带 anthropic/requiresUserInteraction 时在 -p 下是放行还是被拦。
  2. 断开:单独跑一次,只 create_instance + start_instance,开完就结束会话。之后 modavd list --json 里这台应该仍是 online,qemu 还在,父进程链里没有 claude 和 modavd;再 modavd stop 应该是正常关机。
  3. 结果写进 README 的 MCP 一节(客户端版本、日期)。

验收

  • 两轮的工具调用结果都和 Codex 那轮一致,进度通知递增;
  • 断开后实例还在,之后能正常关机;如果被带走了,另开 bug(P1)修好。
主要言語
Go
スター
0
フォーク
1
平均マージ
2時間 42分
マージ済み PR(30日)
13

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

ModAVD/ModAVDManager のほかの issue

ModAVD/ModAVDManager の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。