Commit graph python-sdk/src/mcp/shared
Author SHA1 Message Date
Yann Jouanin
e68e513b42
fix: allow to pass list[str] to token_endpoint_auth_signing_alg_values_supported (#1226) 2025-08-06 10:21:24 +02:00
Yann Jouanin
68e25d478b
Improved supported for ProtectedResourceMetadata (#1235)
Co-authored-by: Paul Carleton <paulcarletonjr@gmail.com>
2025-08-04 18:29:01 +00:00
Ke Yu
7bc190bae8
fix: support "form_post" to be one of response modes in authorization server metadata validation (#1046) 2025-07-04 11:13:13 +01:00
Marcelo Trylesinski
9301924f44
chore: bump ruff (#1085) 2025-07-04 09:01:17 +01:00
Inna Harper
4b659639f7
Update latest protocol version to 2025-06-18 (#1036) 2025-06-26 10:02:57 +01:00
Inna Harper
679b22970e
RFC 8707 Resource Indicators Implementation (#991) 2025-06-23 17:10:20 +01:00
Inna Harper
17f9c00c53
MCP server separation into Authorization Server (AS) and Resource Server (RS) roles per spec PR #338 (#982)
Co-authored-by: Paul Carleton <paulc@anthropic.com>
2025-06-23 14:19:03 +01:00
Felix Weinberger
a2f8766a8a
Add title to tools, resources, prompts (#972)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-17 15:53:14 +01:00
Inna Harper
69e6572d48
Add support for Elicitation (#625)
Co-authored-by: David Soria Parra <davidsp@anthropic.com>
2025-06-17 11:54:11 +01:00
David Dworken
7b420656de
Fix uncaught exception in MCP server (#967) 2025-06-16 17:04:51 -07:00
Marcelo Trylesinski
543961968c
Use 120 characters instead of 88 (#856) 2025-06-11 11:45:50 +02:00
David Dworken
29c69e6a47
Fix uncaught exception in MCP server (#822) 2025-06-09 17:03:15 -07:00
dr3s
1a9ead07f5
relax validation (#879) 2025-06-09 19:21:01 +01:00
Sam Tombury
2bce10bdb1
Support Cursor OAuth client registration (#895) 2025-06-07 07:24:11 -07:00
ihrpr
70014a2bbb
Support for http request injection propagation to tools (#816) 2025-05-28 15:59:14 +01:00
Marshall Roch
7901552eba
send errors to pending requests if server closes (#333)
Co-authored-by: ihrpr <inna@anthropic.com>
2025-05-27 22:55:27 +01:00
Nick Cooper
10cf0f78a8
Support custom httpx client creation (#752) 2025-05-23 13:55:01 +01:00
ihrpr
e33cd41c7a
Add OAuth authentication client for HTTPX (#751)
Co-authored-by: Paul Carleton <paulc@anthropic.com>
2025-05-19 20:38:04 +01:00
ihrpr
5d33861cad
Add progress notification callback for client (#721) 2025-05-15 17:45:58 +01:00
ihrpr
13f018264c
Set 2025-03-26 as the latest protocol version (#719) 2025-05-15 09:29:54 +01:00
Akshey D
9e66f7ce89
feat: add message to ProgressNotification (#435)
Co-authored-by: ihrpr <inna.hrpr@gmail.com>
2025-05-13 18:40:15 +01:00
ihrpr
c6fb822c86
Fix streamable http sampling (#693)
Some checks failed
Main branch checks / checks (push) Has been cancelled
2025-05-12 18:31:35 +01:00
ihrpr
ed25167fa5
Introduce a function to create a standard AsyncClient with options (#655)
Some checks failed
Main branch checks / checks (push) Has been cancelled
2025-05-08 20:53:21 +01:00
ihrpr
9d99aee014
Revert "Add message queue for SSE messages POST endpoint (#459)" (#649) 2025-05-07 16:35:20 +01:00
Akash D
3b1b213a96
Add message queue for SSE messages POST endpoint (#459) 2025-05-06 17:10:43 -07:00
ihrpr
74f5fcfa0d
StreamableHttp - client refactoring and resumability support (#595) 2025-05-02 14:49:50 +01:00
ihrpr
cf8b66b82f
use metadata from SessionMessage to propagate related_request_id (#591) 2025-05-02 14:35:17 +01:00
ihrpr
da0cf22355
Wrap JSONRPC messages with SessionMessage for metadata support (#590) 2025-05-02 14:29:00 +01:00
ihrpr
78f0b11a09
StreamableHttp - Server transport with state management (#553) 2025-05-02 11:58:54 +01:00
Peter Raboud
2210c1be18
Add support for serverside oauth (#255)
Some checks failed
Check uv.lock / check-lock (push) Has been cancelled
Main branch checks / checks (push) Has been cancelled
Co-authored-by: David Soria Parra <davidsp@anthropic.com>
Co-authored-by: Basil Hosmer <basil@anthropic.com>
Co-authored-by: ihrpr <inna@anthropic.com>
2025-05-01 19:42:59 +01:00
bhosmer-ant
82bd8bc1d9
Properly clean up response streams in BaseSession (#515) 2025-05-01 14:45:47 +01:00
Guillaume Raille
96e5327110
add a timeout arguments on per-request basis (as per MCP specifications) (#601) 2025-04-29 13:58:48 +01:00
Jerome
c4beb3e8ef
Support custom client info throughout client APIs (#474)
Co-authored-by: Claude <noreply@anthropic.com>
2025-04-10 14:52:01 +01:00
David Soria Parra
df2d3a57c2
Fix #355: Fix type error with lifespan context (#368)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-03-26 14:18:41 +00:00
David Soria Parra
568cbd1a66
Fix #201: Move incoming message stream from BaseSession to ServerSession (#325)
Co-authored-by: Claude <noreply@anthropic.com>
2025-03-24 14:14:14 +00:00
Marcelo Trylesinski
ae77772ea8
Add strict mode to pyright (#315)
* Add strict mode to pyright

* Apply UP rule

* fix readme

* More correct

* Leave wrong Context for now

* Add strict mode to pyright

* Apply UP rule

* fix readme

* fix

* ignore
2025-03-20 09:13:08 +00:00
ihrpr
08f4e01b8f
add callback for logging message notification (#314) 2025-03-19 09:40:08 +00:00
Marcelo Trylesinski
97201cce59
Strict types on the client side (#285) 2025-03-14 10:56:48 +00:00
Marcelo Trylesinski
7196604468
Revert "refactor: reorganize message handling for better type safety and clar…" (#282)
Some checks failed
Main branch checks / checks (push) Has been cancelled
This reverts commit 9d0f2daddb.
2025-03-14 09:50:46 +00:00
David Soria Parra
9d0f2daddb
refactor: reorganize message handling for better type safety and clarity (#239)
Some checks failed
Main branch checks / checks (push) Has been cancelled
* refactor: improve typing with memory stream type aliases

Move memory stream type definitions to models.py and use them throughout
the codebase for better type safety and maintainability.

GitHub-Issue:#201

* refactor: move streams to ParsedMessage

* refactor: update test files to use ParsedMessage

Updates test files to work with the ParsedMessage stream type aliases
and fixes a line length issue in test_201_client_hangs_on_logging.py.

Github-Issue:#201

* refactor: rename ParsedMessage to MessageFrame for clarity

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: move MessageFrame class to types.py for better code organization

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>

* fix pyright

* refactor: update websocket client to use MessageFrame

Modified the websocket client to work with the new MessageFrame type,
preserving raw message text and properly extracting the root JSON-RPC
message when sending.

Github-Issue:#204

* fix: use NoneType instead of None for type parameters in MessageFrame

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

* refactor: rename root to message
2025-03-13 13:44:55 +00:00
Marcelo Trylesinski
94d326dbf1
Close unclosed resources in the whole project (#267)
* Close resources

* Close all resources

* Update pyproject.toml

* Close all resources

* Close all resources

* try now...

* try to ignore this

* try again

* try adding one more..

* try now

* try now

* revert ci changes
2025-03-13 10:59:45 +00:00
David Soria Parra
78fc5c12c0
fix: fix ci 2025-03-12 14:22:30 +00:00
Marcelo Trylesinski
3e0ab1e7ee
Drop AbstractAsyncContextManager for proper type hints (#257) 2025-03-11 13:17:15 +00:00
Marcelo Trylesinski
5cbea24ecb
Use proper generic for Context (#245) 2025-03-11 13:15:07 +00:00
Jerome
ff22f48365
Add client handling for sampling, list roots, ping (#218)
Adds sampling and list roots callbacks to the ClientSession, allowing the client to handle requests from the server.

Co-authored-by: TerminalMan <84923604+SecretiveShell@users.noreply.github.com>
Co-authored-by: David Soria Parra <davidsp@anthropic.com>
2025-02-20 10:49:43 +00:00
David Soria Parra
4d3e05f6f6
refactor: improve lifespan context typing and documentation
- Add proper generic parameter for lifespan context type
- Update README with TypedDict example for strong typing
- Fix context variable initialization in server
- Improve property return type safety
- Remove redundant documentation
- Ensure compatibility with existing tests
2025-02-13 10:12:59 +00:00
David Soria Parra
2c7bd8343e
feat: add lifespan support to low-level MCP server
Adds a context manager based lifespan API in mcp.server.lowlevel.server to manage server lifecycles in a
type-safe way. This enables servers to:
- Initialize resources on startup and clean them up on shutdown
- Pass context data from startup to request handlers
- Support async startup/shutdown operations
2025-02-11 12:16:40 +00:00
David Soria Parra
733db0c9cf
fix: enforce context manager usage for RequestResponder 2025-02-04 20:13:26 +00:00
David Soria Parra
08cfbe522a
fix: improve error handling and request cancellation for issue #88 2025-02-04 18:20:17 +00:00
David Soria Parra
827e494df4
feat: add request cancellation and in-flight request tracking
This commit adds support for request cancellation and tracking of
in-flight requests in the MCP protocol implementation. The key
architectural changes are:

1. Request Lifecycle Management:
   - Added _in_flight dictionary to BaseSession to track active requests
   - Requests are tracked from receipt until completion/cancellation
   - Added proper cleanup via on_complete callback

2. Cancellation Support:
   - Added CancelledNotification handling in _receive_loop
   - Implemented cancel() method in RequestResponder
   - Uses anyio.CancelScope for robust cancellation
   - Sends error response on cancellation

3. Request Context:
   - Added request_ctx ContextVar for request context
   - Ensures proper cleanup after request handling
   - Maintains request state throughout lifecycle

4. Error Handling:
   - Improved error propagation for cancelled requests
   - Added proper cleanup of cancelled requests
   - Maintains consistency of in-flight tracking

This change enables clients to cancel long-running requests and
servers to properly clean up resources when requests are cancelled.

Github-Issue:#88
2025-02-03 20:50:05 +00:00