Skip to content

Commit d4f4f63

Browse files
committed
add check for mcp mode
1 parent 0beaab3 commit d4f4f63

3 files changed

Lines changed: 17 additions & 0 deletions

File tree

packages/cli/src/mcpserver.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { errorMessage } from "../../core/src/error"
1111
import { setConsoleColors } from "../../core/src/consolecolor"
1212
import { startProjectWatcher } from "./watch"
1313
import { applyRemoteOptions, RemoteOptions } from "./remote"
14+
import { setMcpMode } from "../../core/src/mcp"
1415

1516
/**
1617
* Starts the MCP server.
@@ -26,6 +27,7 @@ export async function startMcpServer(
2627
) {
2728
setConsoleColors(false)
2829
logVerbose(`mcp server: starting...`)
30+
setMcpMode("server")
2931

3032
await applyRemoteOptions(options)
3133

packages/core/src/mcp.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import debug from "debug"
2+
const dbg = debug("genaiscript:mcp")
3+
export let mcpMode: "server" | "client" = undefined
4+
5+
export function setMcpMode(mode: "server" | "client") {
6+
if (mcpMode && mcpMode !== mode) {
7+
throw new Error(
8+
`MCP mode already set to ${mcpMode}. Cannot change to ${mode}`
9+
)
10+
}
11+
mcpMode = mode
12+
dbg(`mode: ${mode}`)
13+
}

packages/core/src/mcpclient.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { errorMessage } from "./error"
1212
import { CancellationOptions, toSignal } from "./cancellation"
1313
import type { ProgressCallback } from "@modelcontextprotocol/sdk/shared/protocol.js"
1414
import { deleteUndefinedValues } from "./cleaners"
15+
import { setMcpMode } from "./mcp"
1516

1617
export class McpClientManager extends EventTarget implements AsyncDisposable {
1718
readonly options: TraceOptions
@@ -31,6 +32,7 @@ export class McpClientManager extends EventTarget implements AsyncDisposable {
3132
dbgc(`starting ${id}`)
3233
const trace = this.options.trace.startTraceDetails(`🪚 mcp ${id}`)
3334
try {
35+
setMcpMode("client")
3436
const { Client } = await import(
3537
"@modelcontextprotocol/sdk/client/index.js"
3638
)

0 commit comments

Comments
 (0)