feat(mcp): add built-in image generation MCP server#1243
feat(mcp): add built-in image generation MCP server#1243piorpua merged 8 commits intoiOfficeAI:mainfrom
Conversation
|
@Castor6 卷得很嗷 |
|
@piorpua 冲突解决后可合入 |
…on-mcp # Conflicts: # src/agent/acp/AcpConnection.ts # src/agent/acp/index.ts # src/agent/gemini/cli/tools/img-gen.ts # src/common/ApiKeyManager.ts # src/process/services/mcpServices/agents/CodexMcpAgent.ts # src/renderer/components/SettingsModal/contents/ToolsModalContent.tsx # src/renderer/pages/settings/McpManagement/McpServerHeader.tsx # src/renderer/pages/settings/McpManagement/index.tsx
|
@piorpua 佬冲突已解决,麻烦看看哈 |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Code Review:feat(mcp): add built-in image generation MCP server (#1243)变更概述本 PR 将 Gemini 专有的图片生成工具重构为统一的内置 MCP 服务器,提取共享核心逻辑到 方案评估结论:✅ 方案合理 整体方案正确解决了图片生成工具跨 Agent 统一的问题,利用 MCP 标准协议实现了解耦。拆分 问题清单🔴 CRITICAL — initStorage.ts 直接变异
|
| # | 严重级别 | 文件 | 问题 |
|---|---|---|---|
| 1 | 🔴 CRITICAL | src/process/initStorage.ts:88-113 |
直接变异 existing 对象,违反不可变性原则 |
| 2 | 🔴 CRITICAL | src/agent/gemini/cli/tools/img-gen.ts:~130 |
方法内动态 require('fs'),应为顶层 import |
| 3 | 🟠 HIGH | src/process/builtinMcp/imageGenCore.ts |
318 行核心逻辑无单元测试,未加入 coverage.include |
| 4 | 🟡 MEDIUM | src/agent/gemini/cli/tools/img-gen.ts:18 |
worker 导入 @process/ 代码,架构越界 |
| 5 | 🔵 LOW | ToolsModalContent.tsx:31, McpManagement/index.tsx:23 |
BUILTIN_IMAGE_GEN_ID 重复定义,建议提取到公共位置 |
结论
❌ 需要修改 — 存在 2 个阻塞性问题(不可变性违反 + 动态 require),以及核心逻辑无测试覆盖的高优先级问题,需处理后合并。
本报告由本地 pr-review skill 生成,包含完整项目上下文,无截断限制。


Summary
imageGenCore.ts) and expose it as a stdio MCP serverChanges
src/process/builtinMcp/imageGenServer.ts(new): Standalone stdio MCP server that reads provider config from environment variables and exposes anaionui_image_generationtool for text-to-image generation and image editingsrc/process/builtinMcp/imageGenCore.ts(new): Shared image generation logic (URI processing, base64 encoding, API call, image saving) used by both the MCP server and the legacy Gemini toolsrc/process/builtinMcp/constants.ts(new): Constants and helpers for identifying the built-in image generation server (BUILTIN_IMAGE_GEN_ID,isBuiltinImageGenName,isBuiltinImageGenTransport)src/agent/acp/mcpSessionConfig.ts(new): Build ACP session MCP server configs from storage; parse MCP capabilities from ACP session responses; filter built-in servers by agent capability support (stdio/http/sse)src/agent/acp/index.ts: Inject built-in MCP servers into ACPsession/createandsession/loadrequests based on parsed MCP capabilitiessrc/agent/acp/AcpConnection.ts: Pass MCP session servers through to session create/load payloadssrc/agent/gemini/cli/tools/img-gen.ts: Refactor to delegate to sharedexecuteImageGenerationfromimageGenCore.ts, removing ~400 lines of duplicated logicsrc/process/initStorage.ts: Auto-provision the built-in image generation MCP server entry on first launch; migrate legacy server names to the new canonical namesrc/process/services/mcpServices/agents/ClaudeMcpAgent.ts: Filter out the built-in image gen server from user MCP list (injected separately via ACP session config)src/process/services/mcpServices/agents/CodexMcpAgent.ts: Same filtering for Codex MCP agentsrc/process/task/GeminiAgentManager.ts: Integrate built-in MCP toggle check for Gemini image generation availabilitysrc/common/storage.ts: Addbuiltinflag toIMcpServertypesrc/renderer/components/SettingsModal/contents/ToolsModalContent.tsx: Add image generation on/off toggle that enables/disables the built-in MCP server; sync model config to MCP server env vars; hide built-in server from MCP listsrc/renderer/pages/settings/McpManagement/index.tsx: Filter built-in image gen server from the visible MCP server listsrc/renderer/pages/settings/McpManagement/McpServerHeader.tsx: Show "Built-in" badge for built-in MCP serverssrc/renderer/hooks/useConfigModelListWithImage.ts: Expand image model name matching to includeimaginepatternelectron.vite.config.ts: Addbuiltin-mcp-image-genentry point for the standalone MCP server bundletests/unit/acpBuiltinMcp.test.ts(new): Tests formcpSessionConfig— capability parsing, server filtering, transport mappingtests/unit/claudeMcpAgent.test.ts(new): Tests for built-in server filtering in Claude MCP agenttests/unit/codexMcpAgent.test.ts(new): Tests for built-in server filtering in Codex MCP agentTest plan
bun run test— all unit tests pass including newacpBuiltinMcp,claudeMcpAgent,codexMcpAgenttests