fix(cli-runtime): merge user mcp servers

This commit is contained in:
Peter Steinberger
2026-04-25 01:25:26 +01:00
parent b86a04262d
commit 5086069c94
3 changed files with 4 additions and 5 deletions

View File

@@ -17,6 +17,7 @@ Docs: https://docs.openclaw.ai
- Plugins/Google Meet: make meeting creation join by default, with an explicit URL-only opt-out, so agents that create a Meet also enter it. Thanks @steipete.
- Telegram/polling: persist accepted update offsets before long-running handlers complete so poller restarts do not replay already-ingested updates, while keeping same-process retries for handler failures. Thanks @steipete.
- Telegram/config: include generated Telegram channel config schema metadata in packaged plugin manifests so forum-topic/group config is accepted before runtime loads. Thanks @steipete.
- CLI/Claude: include user-configured `mcp.servers` in the strict Claude CLI MCP bundle config, matching Pi runs while preserving the OpenClaw loopback override. Fixes #70909. Thanks @keishingu.
- Browser/tool: keep explicit AI snapshots from inheriting the efficient role-snapshot default and preserve numeric Playwright AI refs, so `--format ai` remains a real AI snapshot path. Fixes #62550. Thanks @ly85206559.
- Gateway/config: keep in-process config patch reload comparisons on the resolved source snapshot when `${VAR}` env refs are restored on disk, avoiding false full gateway restarts for unchanged gateway/plugin secrets. Fixes #71208. Thanks @robbiethompson18.
- Slack/messages: serialize write-client requests and whole outbound sends per target so rapid multi-message Slack replies preserve send order. Fixes #69101. (#69105) Thanks @nightq and @ztexydt-cqh.

View File

@@ -315,7 +315,7 @@ describe("prepareCliBundleMcpConfig", () => {
config: {
plugins: {
entries: {
omi: { enabled: true, path: pluginDir },
omi: { enabled: true },
},
},
mcp: {

View File

@@ -418,12 +418,10 @@ export async function prepareCliBundleMcpConfig(params: {
mergedConfig = applyMergePatch(mergedConfig, bundleConfig.config) as BundleMcpConfig;
const configuredMcp = normalizeConfiguredMcpServers(params.config?.mcp?.servers);
if (Object.keys(configuredMcp).length > 0) {
const existingMcpServers = mergedConfig.mcpServers;
mergedConfig = {
...mergedConfig,
mcpServers: {
...(mergedConfig.mcpServers ?? {}),
...configuredMcp,
},
mcpServers: existingMcpServers ? { ...existingMcpServers, ...configuredMcp } : configuredMcp,
} satisfies BundleMcpConfig;
}
if (params.additionalConfig) {