deepseek-ai/deepseek-harness · error
mcp-client: serverName "${config.serverName}" is already in
Error message
mcp-client: serverName "${config.serverName}" is already in use by another mcp-client instance — pick a unique serverName in cordis.yml What it means
Error "mcp-client: serverName "${config.serverName}" is already in use by another mcp-client instance — pick a unique serverName in cordis.yml" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/mcp/mcp-client/src/index.ts:155
* @param config - resolved transport and server namespace configuration.
* @returns startup readiness after connection and initial tool discovery settle.
*/
export async function apply(ctx: Context, config: Config): Promise<void> {
// Fail loud at load: reconnect misconfiguration (including programmatic
// construction that bypassed Schemastery) rejects THIS instance before any
// effect registers.
const reconnect = resolveReconnectPolicy(config.reconnect, `mcp-client(${config.serverName}): reconnect`)
// Reserve the namespace next: a duplicate `serverName` fails THIS instance
// at load with an actionable error and leaves the earlier instance intact.
ctx.effect(() => {
let names = activeServerNames.get(ctx.root)
if (!names) {
names = new Set()
activeServerNames.set(ctx.root, names)
}
if (names.has(config.serverName)) {
throw new Error(
`mcp-client: serverName "${config.serverName}" is already in use by another mcp-client instance — pick a unique serverName in cordis.yml`,
)
}
names.add(config.serverName)
return () => void names.delete(config.serverName)
}, 'mcp-client.serverName')
// The supervisor owns the client/transport generations, the reconnect
// loop, and the live tool registrations; disposal stops reconnection,
// quiesces in-flight work, and unregisters the current generation.
const connection = startConnection(ctx, config, reconnect)
ctx.effect(() => {
return () => connection.dispose()
}, 'mcp-client.connection')
// Block plugin activation on the initial connection + tool discovery so
// Cordis consumers observe the tools immediately after the fiber activates.View on GitHub (pinned to b150a551b8)
Solutions
- Pick a unique serverName in cordis.yml for each mcp-client instance.
When it happens
Trigger: Thrown at packages/mcp/mcp-client/src/index.ts:155 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/c33b95aa9ab2b87e.
Report an issue: GitHub.