Spaces:
Running
Running
| --- | |
| title: context | |
| sidebarTitle: context | |
| --- | |
| # `fastmcp.server.context` | |
| ## Functions | |
| ### `set_context` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L36"><Icon icon="github" size="14" /></a></sup> | |
| ```python | |
| set_context(context: Context) -> Generator[Context, None, None] | |
| ``` | |
| ## Classes | |
| ### `Context` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L45"><Icon icon="github" size="14" /></a></sup> | |
| Context object providing access to MCP capabilities. | |
| This provides a cleaner interface to MCP's RequestContext functionality. | |
| It gets injected into tool and resource functions that request it via type hints. | |
| To use context in a tool function, add a parameter with the Context type annotation: | |
| ```python | |
| @server.tool | |
| def my_tool(x: int, ctx: Context) -> str: | |
| # Log messages to the client | |
| ctx.info(f"Processing {x}") | |
| ctx.debug("Debug info") | |
| ctx.warning("Warning message") | |
| ctx.error("Error message") | |
| # Report progress | |
| ctx.report_progress(50, 100, "Processing") | |
| # Access resources | |
| data = ctx.read_resource("resource://data") | |
| # Get request info | |
| request_id = ctx.request_id | |
| client_id = ctx.client_id | |
| return str(x) | |
| ``` | |
| The context parameter name can be anything as long as it's annotated with Context. | |
| The context is optional - tools that don't need it can omit the parameter. | |
| **Methods:** | |
| #### `request_context` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L98"><Icon icon="github" size="14" /></a></sup> | |
| ```python | |
| request_context(self) -> RequestContext | |
| ``` | |
| Access to the underlying request context. | |
| If called outside of a request context, this will raise a ValueError. | |
| #### `client_id` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L168"><Icon icon="github" size="14" /></a></sup> | |
| ```python | |
| client_id(self) -> str | None | |
| ``` | |
| Get the client ID if available. | |
| #### `request_id` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L177"><Icon icon="github" size="14" /></a></sup> | |
| ```python | |
| request_id(self) -> str | |
| ``` | |
| Get the unique ID for this request. | |
| #### `session_id` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L182"><Icon icon="github" size="14" /></a></sup> | |
| ```python | |
| session_id(self) -> str | None | |
| ``` | |
| Get the MCP session ID for HTTP transports. | |
| Returns the session ID that can be used as a key for session-based | |
| data storage (e.g., Redis) to share data between tool calls within | |
| the same client session. | |
| **Returns:** | |
| - The session ID for HTTP transports (SSE, StreamableHTTP), or None | |
| - for stdio and in-memory transports which don't use session IDs. | |
| #### `session` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L213"><Icon icon="github" size="14" /></a></sup> | |
| ```python | |
| session(self) | |
| ``` | |
| Access to the underlying session for advanced usage. | |
| #### `get_http_request` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/context.py#L282"><Icon icon="github" size="14" /></a></sup> | |
| ```python | |
| get_http_request(self) -> Request | |
| ``` | |
| Get the active starlette request. | |