Skip to content

Commit 9bcfa86

Browse files
author
Dev Agent Amelia
committed
fix(http): support multiple simultaneous MCP clients in HTTP mode
The MCP SDK's Server allows only one initialize call per instance. Sharing a single Server across HTTP sessions caused a HTTP 400 \"Server already initialized\" error for every client after the first. Fix: adopt a per-session factory pattern in startHttpTransport(). Each new MCP session receives its own (Server, transport) pair. Sessions are tracked in Map<sessionId, transport> and cleaned up on close. server.ts: extract createMcpServer(client) so the factory can be passed as () => createMcpServer(client). ALL_TOOL_DEFS promoted to module-level constant. docs: add 7 client-guide installation guides (Claude Desktop, Claude Code, Codex CLI, Gemini CLI, Cursor, Windsurf, HTTP Server) with corrections from real installation tests: - claude-code: fix --env flag order (server name must precede -e flags) - claude-desktop: document AUTH_MODE=pac option - codex-cli: correct \"Rust binary\" note (npm version is Node.js/JS) - gemini-cli: add npm list -g fallback for Windows version check - cursor: add mkdir note for missing ~/.cursor on fresh Windows install - windsurf: add workspace-scoped .windsurf/mcp.json section - http-server: update tool count 50 → 63"
1 parent bd98bd1 commit 9bcfa86

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+3618
-776
lines changed

dist/dataverse/dataverse-client.metadata.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,8 @@ export declare class DataverseMetadataClient extends DataverseActionsClient {
3737
indexStatus: string;
3838
}>>;
3939
updateEntityDefinition(logicalName: string, body: Record<string, unknown>): Promise<void>;
40+
createAttribute(entityLogicalName: string, body: Record<string, unknown>): Promise<string>;
41+
updateAttribute(entityLogicalName: string, attributeLogicalName: string, body: Record<string, unknown>): Promise<void>;
42+
deleteAttribute(entityLogicalName: string, attributeLogicalName: string): Promise<void>;
4043
}
4144
//# sourceMappingURL=dataverse-client.metadata.d.ts.map

dist/dataverse/dataverse-client.metadata.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/dataverse/dataverse-client.metadata.js

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/dataverse/dataverse-client.metadata.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/http-server.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2-
export declare function startHttpTransport(server: Server, port: number, version: string, toolCount: number): Promise<void>;
2+
export declare function startHttpTransport(serverFactory: () => Server, port: number, version: string, toolCount: number): Promise<void>;
33
//# sourceMappingURL=http-server.d.ts.map

dist/http-server.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/http-server.js

Lines changed: 49 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)