MCP Appsにおける2つの未修正バグ、Claude用のタ... ノート

MCP Appsにおける2つの未修正バグ、Claude用のタスクパネル構築中に発見

著者は、Claudeの会話内に永続的なタスクパネルを表示するオープンソースのMCPサーバーであるWingmanを開発しました。これには、著者が堅牢だと感じたMCP Appsおよび関連SDKの活用が含まれていました。しかし、2つの重大な文書化されていないバグが開発にかなりの時間を費やしました。最初のバグは`resourceUri`の配置に関するもので、これは`structuredContent`内ではなく、`CallToolResult`オブジェクトのトップレベルの`_meta`にある必要があります。ツールからプレーンな辞書を返すと、`_meta`が誤ってネストされ、ホストがレンダリングするリソースを見つけられなくなる可能性があります。 修正には、`_meta`が正しく配置された適切な`CallToolResult`オブジェクトを返すことが含まれます。2番目の重大なバグは、CSSの特異性の問題が`[hidden]`属性を上書きしたことに起因していました。カスタムスタイルシートの明示的な`display`ルールが、JavaScriptによって意図されたとおりに要素が非表示になるのを妨げていました。`[hidden]` CSSルールに`!important`を追加する1行で、3つの別々のUIの問題が同時に解決されました。 さらに、MCP Appsホスト内で3つのiframeサンドボックス制約に遭遇しました。`confirm()`はサイレントに失敗し、`navigator.clipboard.writeText`は利用できず、`Blob`/`URL.createObjectURL`のダウンロードはブロックされます。これらの制限には、インライン確認の使用や、`sendMessage`を介してコンテンツをルーティングするなどの回避策が必要です。著者は、これらのAPIの失敗は通常、エラーではなくサイレントな非動作につながるため、診断が困難であると強調しています。最終的に、両方の重大なバグは、最初の検査ポイントから1層離れた問題を含んでおり、デバッグ中にこれらの中間層を確認することの重要性を浮き彫りにしています。WingmanはMITライセンスで、PyPIで利用可能です。