Skip to content

Commit 0dafed3

Browse files
fix: treat empty object as raw shape (matches v1); drop stale changeset claims
1 parent b44029f commit 0dafed3

3 files changed

Lines changed: 10 additions & 3 deletions

File tree

.changeset/mcpserver-variadic-compat.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
'@modelcontextprotocol/server': patch
33
---
44

5-
Restore `McpServer.tool()`, `.prompt()`, `.resource()` variadic overloads as `@deprecated` v1-compat shims forwarding to `registerTool`/`registerPrompt`/`registerResource`. Emits a one-time deprecation warning; removed in v3.
5+
Restore `McpServer.tool()`, `.prompt()`, `.resource()` variadic overloads as `@deprecated` v1-compat shims forwarding to `registerTool`/`registerPrompt`/`registerResource`.

packages/server/src/server/mcp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,8 +1219,8 @@ export type LegacyPromptCallback<Args extends ZodRawShape | undefined> = Args ex
12191219
function isZodRawShape(obj: unknown): obj is ZodRawShape {
12201220
if (typeof obj !== 'object' || obj === null) return false;
12211221
if (isStandardSchema(obj)) return false;
1222-
const values = Object.values(obj);
1223-
return values.length > 0 && values.every(v => isStandardSchema(v));
1222+
// [].every() is true, so an empty object is a valid raw shape (matches v1).
1223+
return Object.values(obj).every(v => isStandardSchema(v));
12241224
}
12251225

12261226
/**

packages/server/test/server/mcp.compat.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ describe('McpServer v1-compat variadic shims', () => {
3333
const reg = server.tool('x', () => ({ content: [{ type: 'text', text: 'ok' }] }));
3434
expect(reg.inputSchema).toBeUndefined();
3535
});
36+
37+
it('treats empty object as raw shape, not annotations (matches v1)', () => {
38+
const server = new McpServer({ name: 't', version: '1' });
39+
const reg = server.tool('x', {}, () => ({ content: [{ type: 'text', text: 'ok' }] }));
40+
expect(reg.inputSchema).toBeDefined();
41+
expect(reg.annotations).toBeUndefined();
42+
});
3643
});
3744

3845
describe('.prompt()', () => {

0 commit comments

Comments
 (0)