Commit graph typescript-sdk/src/server
Author SHA1 Message Date
Olivier Chafik
6656d23d84
Simplify demo in-memory oauth provider
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 22:56:55 +01:00
Olivier Chafik
ccccb4b7cc
simplify PR / only keep verification in demo inmemory oauth provider
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 21:34:06 +01:00
Olivier Chafik
cba6a6ea58
Update authorize.config.test.ts
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 20:41:56 +01:00
Olivier Chafik
1f4e42c09e
cleanup auth-utils and remove example files
Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 20:05:02 +01:00
Olivier Chafik
7b5bfcee52
implementation of RFC 8707 Resource Indicators (Fixes #592, Fixes #635) 2025-06-16 19:29:04 +01:00
ihrpr
f1a07a940a
ci fix 2025-06-16 11:45:35 +01:00
ihrpr
3f939be6c7
readme fixes and template tests for title 2025-06-16 11:21:07 +01:00
ihrpr
8719f93357
clean up mcp.ts 2025-06-16 11:00:20 +01:00
ihrpr
bce2dbfb83
small fixes like argsSchema 2025-06-16 10:55:02 +01:00
ihrpr
d1c94a2c69
refactor 2025-06-16 10:43:31 +01:00
ihrpr
4d03b243e3
add title 2025-06-15 20:42:25 +01:00
ihrpr
9bf5c62979
Merge pull request #619 from modelcontextprotocol/ihrpr/602
Rename ResourceReference to ResourceTemplateReference
2025-06-15 17:30:24 +01:00
ihrpr
6b3d326cf7
Merge pull request #614 from modelcontextprotocol/ochafik/protocol-version
feat: implement MCP-Protocol-Version header requirement for HTTP transport
2025-06-13 18:31:03 +01:00
Olivier Chafik
33257f14d4
switch to optional Transport.setProtocolVersion 2025-06-13 13:36:04 +01:00
Olivier Chafik
4aaa26d900
remove protocol version mismatch warning 2025-06-13 13:35:38 +01:00
bhosmer-ant
b6f0273569
Merge pull request #621 from modelcontextprotocol/carlpeaslee/fix-resource-template-list-metadata
Adding tests to prevent regressions for: fixes metadata for listed resources from resource templates so that they favor their own metadata
2025-06-12 13:53:43 -04:00
ihrpr
9d3374c519
Merge pull request #574 from loopwork-ai/carlpeaslee/fix-resource-template-list-metadata
fixes metadata for listed resources from resource templates so that they favor their own metadata
2025-06-12 18:50:23 +01:00
ihrpr
bc5312991e
adding tests to prevent regressions 2025-06-12 18:47:16 +01:00
Olivier Chafik
4e9d6a707d
Merge branch 'ochafik/protocol-version' of https://github.com/modelcontextprotocol/typescript-sdk into ochafik/protocol-version 2025-06-12 18:45:10 +01:00
Olivier Chafik
bb0592bd50
add supported versions to error message 2025-06-12 18:42:51 +01:00
ihrpr
255d30cbf2
Rename ResourceReference to ResourceTemplateReference 2025-06-12 15:10:12 +01:00
Olivier Chafik
18f8b40d00
Merge branch 'main' into ochafik/protocol-version 2025-06-11 18:53:04 +01:00
Olivier Chafik
84971c83ea
Set Mcp-Protocol-Version in client requests after init, and warn when it doesn't match negotiated version (it SHOULD match) 2025-06-11 17:29:09 +01:00
Carl Peaslee
6cf034595d
updates listed resources from resource templates to favor their own metadata 2025-05-30 11:32:10 -07:00
Frédéric Barthelet
7e0521550b Add tests for completions capability registration on template resource with completion or prompt completable argument registration 2025-05-25 19:07:26 -07:00
Frédéric Barthelet
269c8caf8e Remove server-specific capabilities definition from Client constructor in mcp tests 2025-05-25 18:00:28 -07:00
Frédéric Barthelet
5f5180c4d3 Register completions capabilities 2025-05-25 17:20:02 -07:00
Basil Hosmer
aeb7b8d741
server error if tool declares outputSchema but no structuredContent in result 2025-05-21 15:45:52 -04:00
bhosmer-ant
a41b174330
Merge pull request #524 from modelcontextprotocol/ihrpr/output-types
Make content in Tool Result required
2025-05-21 12:54:19 -04:00
Basil Hosmer
7636c63f39
update to track spec changes 2025-05-21 12:42:20 -04:00
Shubham Lohar
1d860bb217
fixing ProxyOAuthServerProvider: redirect_uri missing in token request (#519) 2025-05-21 17:19:49 +01:00
ihrpr
265ad071f7
make content required 2025-05-21 12:19:31 -04:00
Paul Carleton
ac1b80a331
feat: Add support for separate Authorization Server / Resource server in server flow (spec: DRAFT-2025-v2) (#503)
* add support for .oauth-protected-resource metadata endpoint and www-authenticate

* test and types

* thread throughs scopes

* have example separate AS and RS

* make inmemory explicitly demo

* fix type

* fix types

* fix client example

* fixup comments

* refactor metadata endpoints to cleanup

* almost working w/ forwarding

* separate AS/RS working

* add to readme

* de-async the auth server setup for happier top level flow

* add test for new router

* fix test

* remove redundant comment

* clarify comment

* remove more unused endpoints

* simplify router

* slim down

* simplify verifier, and fix router test

* fix doc string
2025-05-21 13:13:34 +01:00
Basil Hosmer
d37de9b110
Add support for message field in progress notifications
Implements the new optional message field for progress notifications as
defined in the MCP specification update. This allows servers to provide
descriptive status updates alongside progress values.

Changes:
- Add optional message field to ProgressSchema in types.ts
- Add tests for progress notifications with message field
- Update protocol tests to verify message field handling

Refs: https://github.com/modelcontextprotocol/modelcontextprotocol/pull/197

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-16 15:18:28 -04:00
Basil Hosmer
39b2f65434
restore server-side validation for tools returning structuredContent without outputSchema
Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-15 10:03:50 -04:00
Basil Hosmer
712b04e96d
Refactor McpServer tool registration API
- Remove tool() overload that takes a config object with callback
- Add new registerTool() method that separates config from callback
- Extract common tool registration logic into _createRegisteredTool() helper
- Update all tests to use registerTool() for tools with output schemas
- Update examples to use registerTool() and high-level Client API
- Add comment noting that output schema validation only works with high-level API

This change improves API clarity by using a distinct method for tools with
output schemas while maintaining backward compatibility.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-15 10:03:50 -04:00
Basil Hosmer
0fa3277550
avoid ({}) => ... in tests 2025-05-15 10:03:50 -04:00
Basil Hosmer
6079cd8307
- add new tool() api and tests
- fix schema validation
- comment headers on tests
2025-05-15 10:03:02 -04:00
Basil Hosmer
9686fc2ead
formatting, more version rollbacks 2025-05-15 10:02:03 -04:00
Basil Hosmer
bb28098d81
feat: add server-side support for tool outputSchema with backward compatibility
- Update McpServer to support registering tools with outputSchema
- Add automatic content generation from structuredContent for backward compatibility
- Add validation to ensure proper usage of structuredContent vs content
- Add comprehensive tests for outputSchema functionality
- Add example servers demonstrating structured output usage
- Update existing test to match new backward compatibility behavior

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-15 10:02:02 -04:00
Basil Hosmer
882e0b7d05
feat: update TypeScript SDK to implement draft spec changes for structured tool output
- Add outputSchema support to Tool interface with proper documentation
- Split CallToolResult into structured and unstructured variants
- Change structuredContent from string to object type
- Add validation that tools without outputSchema cannot return structuredContent
- Add validation that tools with outputSchema must return structuredContent
- Update client to validate structured content as object (no JSON parsing)
- Update tests to use object format for structuredContent
- Add tests for new validation constraints
- Update LATEST_PROTOCOL_VERSION to DRAFT-2025-v2

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-15 10:02:02 -04:00
Basil Hosmer
a85fee407a
Add support for outputSchema and optional content fields in tools
- Add outputSchema field to Tool type and RegisteredTool interface
- Make content field optional in CallToolResult
- Update ListToolsRequestSchema handler to include outputSchema in tool list responses
- Add support for structuredContent in tool results
- Update examples to handle optional content field
- Add tests for new outputSchema and structuredContent functionality
- Update ToolCallback documentation to clarify when to use structuredContent vs content

This change enables tools to define structured output schemas and return
structured JSON content, providing better type safety and validation for
tool outputs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-15 09:58:40 -04:00
ihrpr
bac916e804
Merge pull request #399 from its-nikhil/FEAT-auth-ctx-streamable-http
[FEAT] added support for AuthInfo in extra for StreamableHTTPServerTransport
2025-05-14 14:30:28 +01:00
Basil Hosmer
4a295a4043
remove vendored library tests 2025-05-09 17:48:33 -04:00
Basil Hosmer
3c9496812e
tweak heuristic type test for isZodRawShape
- simpler test for empty object
- only test public zod properties (parse, safeParse)

Confirmed that vendored-library tests still pass. Note that you need the --testPathIgnorePatterns to avoid the __tests__ directory (this is what was breaking the build):
$ npm test -- --testPathIgnorePatterns="vendor"
2025-05-09 17:43:00 -04:00
Glen Maddern
b6617dc44c Fix Zod object detection logic
Previously, this check was `value instanceof ZodType`, which breaks if
the user is using a different version of Zod than the library. Instead,
do the check using the structure of the input object rather than its
prototype chain.

Additionally, this adds a vendored version of Zod to use for tests, which
ensures that regressions like this would be caught next time.
2025-05-09 15:26:33 +10:00
yuna0x0
52dc7f1160
Fix isZodRawShape return false on empty object and add test 2025-05-06 01:49:33 +08:00
ihrpr
7e18c70169
Merge pull request #403 from botengyao/fix-comments-stateless
comment: fix stateless comments that no session-id is included in any responses
2025-04-28 18:39:31 +01:00
ihrpr
dbd439ec57
Merge pull request #406 from botengyao/format-issue
nit: fix the comment format in the streamableHTTP.ts
2025-04-28 18:31:14 +01:00
Michael Hart
67ad0bd773
Ensure JSONRPCError messages are sent for streamable http
Prior to this, any JSONRPCError message sent when `enableJsonResponse` is true would be ignored (and response.end() never called)
2025-04-25 22:18:18 +10:00