Commit graph python-sdk/src/mcp/server/fastmcp/server.py
Author SHA1 Message Date
Inna Harper
4fee123e72
clean up log.error (#1109) 2025-07-09 11:15:14 +01:00
Marcelo Trylesinski
9301924f44
chore: bump ruff (#1085) 2025-07-04 09:01:17 +01:00
bhosmer-ant
43bb24f62b
feat: Add structured output support for tool functions (#993) 2025-06-26 09:36:17 +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
Inna Harper
d0443a1832
Add resource Link (#974) 2025-06-17 20:23:07 +01:00
David Dworken
86bb54cb28
Add support for DNS rebinding protections (#861) 2025-06-17 20:13:00 +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
Inna Harper
a3bcabdce2
Include context into completions (#966) 2025-06-17 09:33:25 +01:00
Luca Chang
d69b290b65
chore: create union for working with message content (#939) 2025-06-12 09:01:33 +02:00
Marcelo Trylesinski
543961968c
Use 120 characters instead of 88 (#856) 2025-06-11 11:45:50 +02:00
Luca Chang
7123556a34
feat: support audio content (#725)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-06-07 14:32:11 +00:00
ihrpr
70014a2bbb
Support for http request injection propagation to tools (#816) 2025-05-28 15:59:14 +01:00
ciccolo-anthropic
2ca2de767b
Change default binding from 0.0.0.0 to 127.0.0.1 to align with security recommendations (#738) 2025-05-20 20:23:19 +01:00
Vadym Barda
5a9340af71
fastmcp: allow passing Tool directly to FastMCP constructor (#699) 2025-05-19 19:52:02 -07:00
ihrpr
5d33861cad
Add progress notification callback for client (#721) 2025-05-15 17:45:58 +01:00
gaojingyu
1bdeed33c2
fix: Update @mcp.resource to use function documentation as default descrip… (#489) 2025-05-15 11:14:50 +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
e4e119b324
Streamable HTTP - improve usability, fast mcp and auth (#641) 2025-05-08 20:43:25 +01:00
ihrpr
9d99aee014
Revert "Add message queue for SSE messages POST endpoint (#459)" (#649) 2025-05-07 16:35:20 +01:00
tim-watcha
e0d443c95e
Add mount_path support for proper SSE endpoint routing with multiple FastMCP servers (#540)
Co-authored-by: ihrpr <inna.hrpr@gmail.com>
2025-05-07 11:14:25 +01:00
Akash D
3b1b213a96
Add message queue for SSE messages POST endpoint (#459) 2025-05-06 17:10:43 -07:00
ihrpr
58c5e7223c
SSE FastMCP - do not go though auth when it's not needed (#619) 2025-05-02 17:56:02 +01:00
Akash D
83968b5b2f
Handle SSE Disconnects Properly (#612) 2025-05-02 09:32:46 -07: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
1a330ac672
Add ToolAnnotations support in FastMCP and lowlevel servers (#482) 2025-04-30 14:52:56 +01:00
Samuel Colvin
697b6e8e05
replace inefficient use of to_jsonable_python (#545) 2025-04-26 20:41:19 +02:00
ihrpr
b4c7db6a50
Format files with ruff (#562) 2025-04-23 05:06:51 +01:00
Dan Lapid
8c9269c34b
Move uvicorn import to usage (#502) 2025-04-15 16:51:02 +02: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
Bar Nuri
fd2fd34357
default log level info (#366) 2025-03-25 09:50:15 +00:00
elsejj
e2a7338730
enable custom path of sse server (#246)
Co-authored-by: David Soria Parra <167242713+dsp-ant@users.noreply.github.com>
2025-03-20 17:56:35 +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
comfuture
a9aca20205
Option to mount SSE server to existing ASGI server (#312)
* Option to mount SSE server to existing ASGI server

Fixes #311

Add option to mount SSE server to an existing ASGI server.

* Add a new method `sse_app` in `src/mcp/server/fastmcp/server.py` to return an instance of the SSE server app.
* Update the `run_sse_async` method in `src/mcp/server/fastmcp/server.py` to use the new `sse_app` method.
* Update the documentation in `README.md` to include instructions on how to mount the SSE server to an existing ASGI server.
* Fix the example in `README.md` to use `app.mount('/', mcp.sse_app())` instead.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/modelcontextprotocol/python-sdk/issues/311?shareId=XXXX-XXXX-XXXX-XXXX).

* Add `sse_app` method and update `run_sse_async` method in `server.py`

* Add `sse_app` method to return an instance of the SSE server app
* Update `run_sse_async` method to use the new `sse_app` method

Update `README.md` to include instructions for mounting SSE server

* Add section on mounting the SSE server to an existing ASGI server

* fix: Move import statements to the top of the file/

* docs: Update README to reflect changes in mounting SSE server with Starlette

* docs: Formatting of SSE server mounting example in README
2025-03-19 05:26:49 +01:00
Michaelzag
ad7f7a5473
Changed default log level to error (#258) 2025-03-13 13:16:21 +00:00
Marcelo Trylesinski
e756315dea
Add ServerSessionT type var to Context (#271)
* Add ServerSessionT type var to Context

* Passing locally

* Try now
2025-03-12 15:35:15 +00:00
Marcelo Trylesinski
5cbea24ecb
Use proper generic for Context (#245) 2025-03-11 13:15:07 +00:00
David Soria Parra
b1942b31c4
Fix #177: Returning multiple tool results (#222)
* feat: allow lowlevel servers to return a list of resources

The resource/read message in MCP allows of multiple resources
to be returned. However, in the SDK we do not allow this. This
change is such that we allow returning multiple resource in
the lowlevel API if needed. However in FastMCP we stick to
one, since a FastMCP resource defines the mime_type in the decorator
and hence a resource cannot dynamically return different mime_typed resources.
It also is just the better default to only return one resource.
However in the lowlevel API we will allow this.

Strictly speaking this is not a BC break since the new return value
is additive, but if people subclassed server, it will break them.

* feat: lower the type requriements for call_tool to Iterable
2025-02-20 21:31:26 +00:00
Jerome
2628e01f4b
Merge pull request #217 from modelcontextprotocol/jerome/fix/request-context-typing
Updated typing on request context for the server to use server session
2025-02-20 11:07:54 +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
d3ea9009b0
feat: add lifespan support to FastMCP server
Adds support for the lifespan API to FastMCP server, enabling:
- Simple setup with FastMCP constructor
- Type-safe context passing to tools and handlers
- Configuration via Settings class
2025-02-11 12:16:44 +00:00
zzstoatzz
ca060014bb centralize type 2025-02-04 11:11:38 -06:00
zzstoatzz
00a44692e7 init 2025-02-04 11:11:38 -06: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
David Soria Parra
53bfac0cc2
fix: make progress_token check E711 compat 2025-01-29 10:01:56 +00:00
Thomas Sheffler
76325b7846 progress_token is 0 on first tool-call and the return is taken mistakenly 2025-01-27 19:04:20 -08: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
Thomas Sheffler
7a64d8f9af async and await for logging in fastmcp 2025-01-25 07:03:20 -08:00