@mcp-b/webmcp-ts-sdk 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/index.d.ts +163 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4692 -47
- package/dist/index.js.map +1 -1
- package/package.json +17 -3
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
[](https://www.typescriptlang.org/)
|
|
9
9
|
[](https://github.com/WebMCP-org/npm-packages)
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**[Full Documentation](https://docs.mcp-b.ai/packages/webmcp-ts-sdk)** | **[Quick Start](https://docs.mcp-b.ai/quickstart)**
|
|
12
12
|
|
|
13
13
|
**@mcp-b/webmcp-ts-sdk** adapts the official MCP TypeScript SDK for browser environments, enabling dynamic tool registration required by the W3C Web Model Context API. This allows AI agents like Claude, ChatGPT, Gemini, Cursor, and Copilot to interact with browser-based applications.
|
|
14
14
|
|
|
@@ -185,10 +185,10 @@ server.registerTool('analyze-data', {
|
|
|
185
185
|
|
|
186
186
|
This package is designed for **minimal maintenance**:
|
|
187
187
|
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
188
|
+
- **~50 lines** of custom code
|
|
189
|
+
- **Automatic updates** for types, protocol, validation via official SDK dependency
|
|
190
|
+
- **Single modification point** - only capability registration behavior
|
|
191
|
+
- **Type-safe** - no prototype hacks or unsafe casts
|
|
192
192
|
|
|
193
193
|
### Syncing with Upstream
|
|
194
194
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,36 +1,153 @@
|
|
|
1
|
-
import { Server, ServerOptions } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
1
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
3
|
-
import { RequestOptions, mergeCapabilities } from "@modelcontextprotocol/sdk/shared/protocol.js";
|
|
4
|
-
import { CallToolRequest, CallToolRequestSchema, CallToolResult, CallToolResultSchema, ClientCapabilities, ClientNotification, ClientRequest, ClientResult, CreateMessageRequest, CreateMessageRequestSchema, CreateMessageResult, CreateMessageResultSchema, ElicitRequest, ElicitRequestSchema, ElicitResult, ElicitResultSchema, ErrorCode, GetPromptRequest, GetPromptRequestSchema, GetPromptResult, GetPromptResultSchema, Implementation, Implementation as Implementation$1, InitializeRequest, InitializeRequestSchema, InitializeResult, InitializeResultSchema, JSONRPCMessage, JSONRPCMessageSchema, LATEST_PROTOCOL_VERSION, ListPromptsRequest, ListPromptsRequestSchema, ListPromptsResult, ListPromptsResultSchema, ListResourcesRequest, ListResourcesRequestSchema, ListResourcesResult, ListResourcesResultSchema, ListToolsRequest, ListToolsRequestSchema, ListToolsResult, ListToolsResultSchema, LoggingLevel, LoggingLevelSchema, LoggingMessageNotification, McpError, Notification, Prompt, PromptMessage, ReadResourceRequest, ReadResourceRequestSchema, ReadResourceResult, ReadResourceResultSchema, Request, Resource, ResourceContents, ResourceListChangedNotificationSchema, ResourceTemplate, Result, SUPPORTED_PROTOCOL_VERSIONS, ServerCapabilities, ServerNotification, ServerRequest, ServerResult, Tool, ToolAnnotations, ToolListChangedNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { RequestOptions, RequestOptions as RequestOptions$1, mergeCapabilities } from "@modelcontextprotocol/sdk/shared/protocol.js";
|
|
5
3
|
import { ReadBuffer, serializeMessage } from "@modelcontextprotocol/sdk/shared/stdio.js";
|
|
6
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
7
4
|
import { Transport, Transport as Transport$1, TransportSendOptions } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
5
|
+
import { CallToolRequest, CallToolRequestSchema, CallToolResult, CallToolResultSchema, ClientCapabilities, ClientNotification, ClientRequest, ClientResult, CreateMessageRequest, CreateMessageRequest as CreateMessageRequest$1, CreateMessageRequestSchema, CreateMessageResult, CreateMessageResult as CreateMessageResult$1, CreateMessageResultSchema, ElicitRequest, ElicitRequest as ElicitRequest$1, ElicitRequestSchema, ElicitResult, ElicitResult as ElicitResult$1, ElicitResultSchema, ErrorCode, GetPromptRequest, GetPromptRequestSchema, GetPromptResult, GetPromptResultSchema, Implementation, Implementation as Implementation$1, InitializeRequest, InitializeRequestSchema, InitializeResult, InitializeResultSchema, JSONRPCMessage, JSONRPCMessageSchema, LATEST_PROTOCOL_VERSION, ListPromptsRequest, ListPromptsRequestSchema, ListPromptsResult, ListPromptsResultSchema, ListResourcesRequest, ListResourcesRequestSchema, ListResourcesResult, ListResourcesResultSchema, ListToolsRequest, ListToolsRequestSchema, ListToolsResult, ListToolsResultSchema, LoggingLevel, LoggingLevelSchema, LoggingMessageNotification, McpError, Notification, Prompt, PromptMessage, PromptMessage as PromptMessage$1, ReadResourceRequest, ReadResourceRequestSchema, ReadResourceResult, ReadResourceResultSchema, Request, Resource, ResourceContents, ResourceListChangedNotificationSchema, ResourceTemplate, Result, SUPPORTED_PROTOCOL_VERSIONS, ServerCapabilities, ServerNotification, ServerRequest, ServerResult, Tool, ToolAnnotations, ToolListChangedNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
import { InputSchema, ModelContextCore, ModelContextOptions, ResourceContents as ResourceContents$1, ToolDescriptor, ToolListItem, ToolResponse } from "@mcp-b/webmcp-types";
|
|
7
|
+
import { ServerOptions } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
9
|
|
|
9
10
|
//#region src/browser-server.d.ts
|
|
10
|
-
|
|
11
|
+
interface BrowserMcpServerOptions extends ServerOptions {
|
|
12
|
+
native?: ModelContextCore;
|
|
13
|
+
}
|
|
11
14
|
/**
|
|
12
|
-
* Browser-optimized MCP Server
|
|
15
|
+
* Browser-optimized MCP Server that speaks WebMCP natively.
|
|
13
16
|
*
|
|
14
|
-
* This
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
+
* This server IS navigator.modelContext — it implements the WebMCP standard API
|
|
18
|
+
* (provideContext, registerTool, unregisterTool, clearContext) while retaining
|
|
19
|
+
* full MCP protocol capabilities (resources, prompts, elicitation, sampling)
|
|
20
|
+
* via the inherited BaseMcpServer surface.
|
|
17
21
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* - Allows items to be registered after transport is connected
|
|
21
|
-
* - Uses no-op JSON Schema validator to avoid ajv errors in browser environments
|
|
22
|
-
* - Designed for browser environments where items arrive asynchronously
|
|
22
|
+
* When `native` is provided, all tool operations are mirrored to it so that
|
|
23
|
+
* navigator.modelContextTesting (polyfill testing shim) stays in sync.
|
|
23
24
|
*/
|
|
24
25
|
declare class BrowserMcpServer extends McpServer {
|
|
25
|
-
|
|
26
|
+
private native;
|
|
27
|
+
private _promptSchemas;
|
|
28
|
+
private _jsonValidator;
|
|
29
|
+
private _publicMethodsBound;
|
|
30
|
+
constructor(serverInfo: Implementation$1, options?: BrowserMcpServerOptions);
|
|
31
|
+
/**
|
|
32
|
+
* navigator.modelContext consumers may destructure methods (e.g. const { registerTool } = ...).
|
|
33
|
+
* Bind methods once so they remain callable outside instance-method invocation syntax.
|
|
34
|
+
*/
|
|
35
|
+
private bindPublicApiMethods;
|
|
36
|
+
private get _parentTools();
|
|
37
|
+
private get _parentResources();
|
|
38
|
+
private get _parentPrompts();
|
|
39
|
+
/**
|
|
40
|
+
* Converts a schema (Zod or plain JSON Schema) to a transport-ready JSON Schema.
|
|
41
|
+
* When `requireObjectType` is true (the default, for inputSchema), empty `{}` schemas
|
|
42
|
+
* are normalized to `{ type: "object", properties: {} }` and schemas missing a root
|
|
43
|
+
* `type` get `type: "object"` prepended — per MCP spec requirements.
|
|
44
|
+
* When false (for outputSchema), no object-type normalization is applied.
|
|
45
|
+
*/
|
|
46
|
+
private toTransportSchema;
|
|
47
|
+
private isZodSchema;
|
|
48
|
+
private getNativeToolsApi;
|
|
49
|
+
private registerToolInServer;
|
|
50
|
+
backfillTools(tools: readonly ToolListItem[], execute: (name: string, args: Record<string, unknown>) => Promise<ToolResponse>): number;
|
|
51
|
+
registerTool(tool: ToolDescriptor): {
|
|
52
|
+
unregister: () => void;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Backfill tools that were already registered on the native/polyfill context
|
|
56
|
+
* before this BrowserMcpServer wrapper was installed.
|
|
57
|
+
*/
|
|
58
|
+
syncNativeTools(): number;
|
|
59
|
+
unregisterTool(name: string): void;
|
|
60
|
+
registerResource(descriptor: {
|
|
61
|
+
uri: string;
|
|
62
|
+
name: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
mimeType?: string;
|
|
65
|
+
read: (uri: URL, params?: Record<string, string>) => Promise<{
|
|
66
|
+
contents: ResourceContents$1[];
|
|
67
|
+
}>;
|
|
68
|
+
}): {
|
|
69
|
+
unregister: () => void;
|
|
70
|
+
};
|
|
71
|
+
registerPrompt(descriptor: {
|
|
72
|
+
name: string;
|
|
73
|
+
description?: string;
|
|
74
|
+
argsSchema?: InputSchema;
|
|
75
|
+
get: (args: Record<string, unknown>) => Promise<{
|
|
76
|
+
messages: PromptMessage$1[];
|
|
77
|
+
}>;
|
|
78
|
+
}): {
|
|
79
|
+
unregister: () => void;
|
|
80
|
+
};
|
|
81
|
+
provideContext(options?: ModelContextOptions): void;
|
|
82
|
+
clearContext(): void;
|
|
83
|
+
listResources(): Array<{
|
|
84
|
+
uri: string;
|
|
85
|
+
name: string;
|
|
86
|
+
description?: string;
|
|
87
|
+
mimeType?: string;
|
|
88
|
+
}>;
|
|
89
|
+
readResource(uri: string): Promise<{
|
|
90
|
+
contents: ResourceContents$1[];
|
|
91
|
+
}>;
|
|
92
|
+
listPrompts(): Array<{
|
|
93
|
+
name: string;
|
|
94
|
+
description?: string;
|
|
95
|
+
arguments?: Array<{
|
|
96
|
+
name: string;
|
|
97
|
+
description?: string;
|
|
98
|
+
required?: boolean;
|
|
99
|
+
}>;
|
|
100
|
+
}>;
|
|
101
|
+
getPrompt(name: string, args?: Record<string, unknown>): Promise<{
|
|
102
|
+
messages: PromptMessage$1[];
|
|
103
|
+
}>;
|
|
104
|
+
listTools(): ToolListItem[];
|
|
105
|
+
/**
|
|
106
|
+
* Override SDK's validateToolInput to handle both Zod schemas and plain JSON Schema.
|
|
107
|
+
* Zod schemas use the SDK's safeParseAsync; plain JSON Schema uses PolyfillJsonSchemaValidator.
|
|
108
|
+
*/
|
|
109
|
+
validateToolInput(tool: {
|
|
110
|
+
inputSchema?: unknown;
|
|
111
|
+
}, args: Record<string, unknown> | undefined, toolName: string): Promise<Record<string, unknown> | undefined>;
|
|
112
|
+
/**
|
|
113
|
+
* Override SDK's validateToolOutput to handle both Zod schemas and plain JSON Schema.
|
|
114
|
+
*/
|
|
115
|
+
validateToolOutput(tool: {
|
|
116
|
+
outputSchema?: unknown;
|
|
117
|
+
}, result: unknown, toolName: string): Promise<void>;
|
|
118
|
+
callTool(params: {
|
|
119
|
+
name: string;
|
|
120
|
+
arguments?: Record<string, unknown>;
|
|
121
|
+
}): Promise<ToolResponse>;
|
|
122
|
+
executeTool(name: string, args?: Record<string, unknown>): Promise<ToolResponse>;
|
|
26
123
|
/**
|
|
27
|
-
* Override connect to
|
|
28
|
-
*
|
|
124
|
+
* Override connect to initialize request handlers BEFORE the transport connection.
|
|
125
|
+
* This prevents "Cannot register capabilities after connecting to transport" errors
|
|
126
|
+
* when tools are registered dynamically after connection.
|
|
29
127
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
128
|
+
* After the parent sets up its Zod-based handlers, we replace the ones that break
|
|
129
|
+
* with plain JSON Schema objects (ListTools, ListPrompts, GetPrompt).
|
|
32
130
|
*/
|
|
33
131
|
connect(transport: Transport$1): Promise<void>;
|
|
132
|
+
createMessage(params: CreateMessageRequest$1['params'], options?: RequestOptions$1): Promise<CreateMessageResult$1>;
|
|
133
|
+
elicitInput(params: ElicitRequest$1['params'], options?: RequestOptions$1): Promise<ElicitResult$1>;
|
|
134
|
+
}
|
|
135
|
+
interface ResourceDescriptor {
|
|
136
|
+
uri: string;
|
|
137
|
+
name: string;
|
|
138
|
+
description?: string;
|
|
139
|
+
mimeType?: string;
|
|
140
|
+
read: (uri: URL, params?: Record<string, string>) => Promise<{
|
|
141
|
+
contents: ResourceContents$1[];
|
|
142
|
+
}>;
|
|
143
|
+
}
|
|
144
|
+
interface PromptDescriptor {
|
|
145
|
+
name: string;
|
|
146
|
+
description?: string;
|
|
147
|
+
argsSchema?: InputSchema;
|
|
148
|
+
get: (args: Record<string, unknown>) => Promise<{
|
|
149
|
+
messages: PromptMessage$1[];
|
|
150
|
+
}>;
|
|
34
151
|
}
|
|
35
152
|
//#endregion
|
|
36
153
|
//#region src/no-op-validator.d.ts
|
|
@@ -49,13 +166,13 @@ declare class BrowserMcpServer extends McpServer {
|
|
|
49
166
|
* Interface for JSON Schema validators.
|
|
50
167
|
* This matches the MCP SDK's jsonSchemaValidator interface.
|
|
51
168
|
*/
|
|
52
|
-
interface JsonSchemaValidator {
|
|
53
|
-
getValidator<T>(schema: unknown): (input: unknown) => JsonSchemaValidatorResult<T>;
|
|
169
|
+
interface JsonSchemaValidator$1 {
|
|
170
|
+
getValidator<T>(schema: unknown): (input: unknown) => JsonSchemaValidatorResult$1<T>;
|
|
54
171
|
}
|
|
55
172
|
/**
|
|
56
173
|
* Result type for JSON Schema validation
|
|
57
174
|
*/
|
|
58
|
-
type JsonSchemaValidatorResult<T> = {
|
|
175
|
+
type JsonSchemaValidatorResult$1<T> = {
|
|
59
176
|
valid: true;
|
|
60
177
|
data: T;
|
|
61
178
|
errorMessage: undefined;
|
|
@@ -83,7 +200,7 @@ type JsonSchemaValidatorResult<T> = {
|
|
|
83
200
|
* );
|
|
84
201
|
* ```
|
|
85
202
|
*/
|
|
86
|
-
declare class NoOpJsonSchemaValidator implements JsonSchemaValidator {
|
|
203
|
+
declare class NoOpJsonSchemaValidator implements JsonSchemaValidator$1 {
|
|
87
204
|
/**
|
|
88
205
|
* Returns a validator function that always passes.
|
|
89
206
|
* The input data is passed through unchanged.
|
|
@@ -91,8 +208,29 @@ declare class NoOpJsonSchemaValidator implements JsonSchemaValidator {
|
|
|
91
208
|
* @param _schema - The JSON Schema (ignored)
|
|
92
209
|
* @returns A validator function that always returns valid
|
|
93
210
|
*/
|
|
94
|
-
getValidator<T>(_schema: unknown): (input: unknown) => JsonSchemaValidatorResult<T>;
|
|
211
|
+
getValidator<T>(_schema: unknown): (input: unknown) => JsonSchemaValidatorResult$1<T>;
|
|
212
|
+
}
|
|
213
|
+
//#endregion
|
|
214
|
+
//#region src/polyfill-validator.d.ts
|
|
215
|
+
interface JsonSchemaValidator {
|
|
216
|
+
getValidator<T>(schema: unknown): (input: unknown) => JsonSchemaValidatorResult<T>;
|
|
95
217
|
}
|
|
218
|
+
type JsonSchemaValidatorResult<T> = {
|
|
219
|
+
valid: true;
|
|
220
|
+
data: T;
|
|
221
|
+
errorMessage: undefined;
|
|
222
|
+
} | {
|
|
223
|
+
valid: false;
|
|
224
|
+
data: undefined;
|
|
225
|
+
errorMessage: string;
|
|
226
|
+
};
|
|
227
|
+
declare class PolyfillJsonSchemaValidator implements JsonSchemaValidator {
|
|
228
|
+
getValidator<T>(schema: unknown): (input: unknown) => JsonSchemaValidatorResult<T>;
|
|
229
|
+
}
|
|
230
|
+
//#endregion
|
|
231
|
+
//#region src/index.d.ts
|
|
232
|
+
type SamplingRequestParams = CreateMessageRequest$1['params'];
|
|
233
|
+
type SamplingResult = CreateMessageResult$1;
|
|
96
234
|
//#endregion
|
|
97
|
-
export { BrowserMcpServer, BrowserMcpServer as McpServer, type CallToolRequest, CallToolRequestSchema, type CallToolResult, CallToolResultSchema, Client, type ClientCapabilities, type ClientNotification, type ClientRequest, type ClientResult, type CreateMessageRequest, CreateMessageRequestSchema, type CreateMessageResult, CreateMessageResultSchema, type ElicitRequest, ElicitRequestSchema, type ElicitResult, ElicitResultSchema, ErrorCode, type GetPromptRequest, GetPromptRequestSchema, type GetPromptResult, GetPromptResultSchema, type Implementation, type InitializeRequest, InitializeRequestSchema, type InitializeResult, InitializeResultSchema, type JSONRPCMessage, JSONRPCMessageSchema, LATEST_PROTOCOL_VERSION, type ListPromptsRequest, ListPromptsRequestSchema, type ListPromptsResult, ListPromptsResultSchema, type ListResourcesRequest, ListResourcesRequestSchema, type ListResourcesResult, ListResourcesResultSchema, type ListToolsRequest, ListToolsRequestSchema, type ListToolsResult, ListToolsResultSchema, type LoggingLevel, LoggingLevelSchema, type LoggingMessageNotification, type McpError, NoOpJsonSchemaValidator, type Notification, type Prompt, type PromptMessage, ReadBuffer, type ReadResourceRequest, ReadResourceRequestSchema, type ReadResourceResult, ReadResourceResultSchema, type Request, type RequestOptions, type Resource, type ResourceContents, ResourceListChangedNotificationSchema, type ResourceTemplate, type Result, SUPPORTED_PROTOCOL_VERSIONS,
|
|
235
|
+
export { BrowserMcpServer, BrowserMcpServer as McpServer, type BrowserMcpServerOptions, type CallToolRequest, CallToolRequestSchema, type CallToolResult, CallToolResultSchema, Client, type ClientCapabilities, type ClientNotification, type ClientRequest, type ClientResult, type CreateMessageRequest, CreateMessageRequestSchema, type CreateMessageResult, CreateMessageResultSchema, type ElicitRequest, ElicitRequestSchema, type ElicitResult, ElicitResultSchema, ErrorCode, type GetPromptRequest, GetPromptRequestSchema, type GetPromptResult, GetPromptResultSchema, type Implementation, type InitializeRequest, InitializeRequestSchema, type InitializeResult, InitializeResultSchema, type JSONRPCMessage, JSONRPCMessageSchema, LATEST_PROTOCOL_VERSION, type ListPromptsRequest, ListPromptsRequestSchema, type ListPromptsResult, ListPromptsResultSchema, type ListResourcesRequest, ListResourcesRequestSchema, type ListResourcesResult, ListResourcesResultSchema, type ListToolsRequest, ListToolsRequestSchema, type ListToolsResult, ListToolsResultSchema, type LoggingLevel, LoggingLevelSchema, type LoggingMessageNotification, type McpError, NoOpJsonSchemaValidator, type Notification, PolyfillJsonSchemaValidator, type Prompt, type PromptDescriptor, type PromptMessage, ReadBuffer, type ReadResourceRequest, ReadResourceRequestSchema, type ReadResourceResult, ReadResourceResultSchema, type Request, type RequestOptions, type Resource, type ResourceContents, type ResourceDescriptor, ResourceListChangedNotificationSchema, type ResourceTemplate, type Result, SUPPORTED_PROTOCOL_VERSIONS, SamplingRequestParams, SamplingResult, type ServerCapabilities, type ServerNotification, type ServerRequest, type ServerResult, type Tool, type ToolAnnotations, ToolListChangedNotificationSchema, type Transport, type TransportSendOptions, mergeCapabilities, serializeMessage };
|
|
98
236
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/browser-server.ts","../src/no-op-validator.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/browser-server.ts","../src/no-op-validator.ts","../src/polyfill-validator.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|