Commit Graph

68 Commits

Author SHA1 Message Date
David Soria Parra
fbf4acc679 fix: method ordering 2025-02-13 14:54:53 +00:00
Jerome
9abfe775cc Added failing test 2025-02-13 14:46:57 +00:00
David Soria Parra
e5815bd162 docs: update README with lifespan examples and usage
Add comprehensive documentation for lifespan support:
- Add usage examples for both Server and FastMPC classes
- Document startup/shutdown patterns
- Show context access in tools and handlers
- Clean up spacing in test files
2025-02-11 12:16:51 +00:00
David Soria Parra
e598750cba test: add tests for server lifespan support
Adds comprehensive tests for lifespan functionality:
- Tests for both low-level Server and FastMCP classes
- Coverage for startup, shutdown, and context access
- Verifies context passing to request handlers
2025-02-11 12:16:47 +00:00
David Soria Parra
f10665db4c tests: cleanup 2025-02-05 11:02:51 +00:00
David Soria Parra
c58adfe3f5 Merge pull request #167 from modelcontextprotocol/davidsp/88-v2
feat: add request cancellation and cleanup
2025-02-04 20:23:05 +00:00
David Soria Parra
27bfde95a4 fix: fix tests 2025-02-04 20:16:30 +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
David Soria Parra
888bdd3c34 tests for issue 88 2025-02-03 14:03:41 +00:00
David Soria Parra
0d3e02f6a2 fix: standardize resource response format
Github-Issue:#141
2025-02-03 11:33:32 +00:00
Jerome
444edf6760 Merge pull request #180 from modelcontextprotocol/jeremy/relax-pydantic
Relax pydantic, pydantic-settings, and uvicorn requirements
2025-01-31 07:07:59 +13:00
David Soria Parra
5e19c7cf73 Merge pull request #176 from sheffler/fixFirstProgressReport
progress_token is 0 on first tool-call and the return is taken mistakenly
2025-01-30 16:00:01 +00:00
jeremy
defd52b2d6 Fix comment about pydantic versioning 2025-01-30 10:21:03 -05:00
jeremy
0d48a4494f relax pydantic, pydantic-settings, and uvicorn 2025-01-29 22:49:43 -05:00
David Soria Parra
2dc5fbfa3d fix: add test for #176 2025-01-28 11:19:13 +00:00
David Soria Parra
070e8412c0 refactor: standardize resource response format
Introduce ReadResourceContents type to properly handle MIME types in resource responses. Breaking change in FastMCP read_resource() return type.

Github-Issue:#152
2025-01-27 20:36:10 +00:00
David Soria Parra
8ff4b5e9d3 fix: respect resource mime type in responses
The server was ignoring mime types set on resources, defaulting to text/plain
for strings and application/octet-stream for bytes. Now properly preserves
the specified mime type in both FastMCP and low-level server implementations.

Note that this is breaks backwards compatibility as it changes the return
values of read_resource() on FastMCP. It is BC compatible on lowlevel since
it only extends the callback.

Github-Issue: #152
Reported-by: eiseleMichael
2025-01-27 15:51:44 +00:00
David Soria Parra
f10c2e3f1f fix: add test to reproduce #152 2025-01-27 15:50:52 +00:00
David Soria Parra
978cfe3f92 more fixes 2025-01-27 15:49:59 +00:00
David Soria Parra
43a30c1d00 fix tests 2025-01-27 14:36:48 +00:00
Michał Pstrąg
f5f19b2361 add support for async resources 2025-01-18 19:37:39 +01:00
Nick Merrill
d01d49ea6e add timeout test 2025-01-14 12:10:41 -05:00
Nick Merrill
e798d20cbb ruff 2025-01-14 11:56:44 -05:00
Nick Merrill
aa7869a62f add type hints 2025-01-14 11:54:09 -05:00
Nick Merrill
3fa26a5a97 remove unused imports 2025-01-14 11:49:04 -05:00
Nick Merrill
07e721f63f formatting 2025-01-14 11:47:41 -05:00
Nick Merrill
7b35ab844a run server in separate process 2025-01-14 11:44:03 -05:00
Nick Merrill
8d90a3afa3 attempt at server in process 2025-01-14 11:15:05 -05:00
Nick Merrill
7ab1fc71aa attempt to get server to shut down 2025-01-14 11:01:43 -05:00
Nick Merrill
8f81a85abe all tests passing with custom port, but not passing all together 2025-01-14 10:45:55 -05:00
Nick Merrill
e79a56435a passing SSE client test 2025-01-14 10:34:32 -05:00
Nick Merrill
66ccd1c515 test_sse_connection is passing 2025-01-14 10:18:27 -05:00
Nick Merrill
a0e2f7fab7 WIP 2025-01-14 09:38:06 -05:00
Nick Merrill
3f9f7c8311 WIP 2025-01-14 09:27:42 -05:00
Nick Merrill
b0a6aafaf6 WIP 2025-01-14 09:24:44 -05:00
Nick Merrill
f164291483 trying to test SSE 2025-01-14 09:22:05 -05:00
Salman Mohammed
bc6746e89b Add instructions field to ServerSession and FastMCP 2025-01-13 13:00:11 -05:00
Salman Mohammed
135191403a Add instructions field to InitializeResult 2025-01-13 11:58:43 -05:00
David Soria Parra
4770bcd0b1 fix: #129 resource template handling in FastMCP server 2025-01-06 20:02:03 +00:00
David Soria Parra
b66c6759c3 feat: add example and test for parameter descriptions in FastMCP tools 2025-01-06 12:30:44 +00:00
David Soria Parra
e21e8c157d style: Fix import sorting and update ruff version 2025-01-03 15:57:14 +00:00
David Soria Parra
329f595f5f fix: Fix line length in test_server.py 2025-01-03 15:53:19 +00:00
David Soria Parra
2d8f08d648 fix: Address formatting and type checking issues 2025-01-03 15:23:58 +00:00
David Soria Parra
79ec8dccdb test: Add test for unlimited tool listing (issue #100) 2025-01-03 15:20:43 +00:00
David Soria Parra
43796bfa24 test: Add test for non-ASCII character handling in FastMCP tools 2025-01-03 15:20:43 +00:00
David Soria Parra
73c055f136 fix: Update AnyIO stream creation to use type annotation syntax 2025-01-02 16:59:26 +00:00
samefarrar
6194d06f6c test: Add test that uv command inserted into config can run "with --help" 2024-12-29 14:57:34 +00:00
David Soria Parra
44e1abb7f1 fix tests 2024-12-21 01:17:59 +00:00
David Soria Parra
680afeeed6 fix pydantic version 2024-12-21 01:04:30 +00:00