# Changelog

## [1.3.0rc1] - 2025-02-13

### Breaking Changes

- **Context API Changes**: The Context logging methods (info, debug, warning, error) are now async and must be awaited. ([#172](https://github.com/modelcontextprotocol/python-sdk/pull/172))
- **Resource Response Format**: Standardized resource response format to return both content and MIME type. Method `read_resource()` now returns a tuple of `(content, mime_type)` instead of just content. ([#170](https://github.com/modelcontextprotocol/python-sdk/pull/170))

### New Features

#### Lifespan Support
Added comprehensive server lifecycle management through the lifespan API:
```python
@dataclass
class AppContext:
    db: Database

@asynccontextmanager
async def app_lifespan(server: FastMCP) -> AsyncIterator[AppContext]:
    try:
        await db.connect()
        yield AppContext(db=db)
    finally:
        await db.disconnect()

mcp = FastMCP("My App", lifespan=app_lifespan)

@mcp.tool()
def query_db(ctx: Context) -> str:
    db = ctx.request_context.lifespan_context["db"]
    return db.query()
```
([#203](https://github.com/modelcontextprotocol/python-sdk/pull/203))

#### Async Resources
Added support for async resource functions in FastMCP:
```python
@mcp.resource("users://{user_id}")
async def get_user(user_id: str) -> str:
    async with client.session() as session:
        response = await session.get(f"/users/{user_id}")
        return await response.text()
```
([#157](https://github.com/modelcontextprotocol/python-sdk/pull/157))

#### Concurrent Request Handling
Made message handling concurrent, allowing multiple requests to be processed simultaneously. ([#206](https://github.com/modelcontextprotocol/python-sdk/pull/206))

#### Request Cancellation
Added support for canceling in-flight requests and cleaning up resources. ([#167](https://github.com/modelcontextprotocol/python-sdk/pull/167))

#### Server Instructions
Added support for the `instructions` field in server initialization, allowing servers to provide usage guidance. ([#150](https://github.com/modelcontextprotocol/python-sdk/pull/150))

### Bug Fixes

- Fixed progress reporting for first tool call by correcting progress_token handling ([#176](https://github.com/modelcontextprotocol/python-sdk/pull/176))
- Fixed server crash when using debug logging ([#158](https://github.com/modelcontextprotocol/python-sdk/pull/158))
- Fixed resource template handling in FastMCP server ([#137](https://github.com/modelcontextprotocol/python-sdk/pull/137))
- Fixed MIME type preservation in resource responses ([#170](https://github.com/modelcontextprotocol/python-sdk/pull/170))
- Fixed documentation for environment variables in CLI commands ([#149](https://github.com/modelcontextprotocol/python-sdk/pull/149))
- Fixed request ID preservation in JSON-RPC responses ([#205](https://github.com/modelcontextprotocol/python-sdk/pull/205))

### Dependency Updates

- Relaxed version constraints for better compatibility:
  - `pydantic`: Changed from `>=2.10.1,<3.0.0` to `>=2.7.2,<3.0.0`
  - `pydantic-settings`: Changed from `>=2.6.1` to `>=2.5.2`
  - `uvicorn`: Changed from `>=0.30` to `>=0.23.1`
  ([#180](https://github.com/modelcontextprotocol/python-sdk/pull/180))

### Examples

- Added a simple chatbot example client to demonstrate SDK usage ([#98](https://github.com/modelcontextprotocol/python-sdk/pull/98))

### Internal Improvements

- Improved type annotations for better IDE support ([#181](https://github.com/modelcontextprotocol/python-sdk/pull/181))
- Added comprehensive tests for SSE transport ([#151](https://github.com/modelcontextprotocol/python-sdk/pull/151))
- Updated types to match 2024-11-05 MCP schema ([#165](https://github.com/modelcontextprotocol/python-sdk/pull/165))
- Refactored request and notification handling for better code organization ([#166](https://github.com/modelcontextprotocol/python-sdk/pull/166))

## [1.2.1] - 2024-01-27

### Added
- Support for async resources
- Example and test for parameter descriptions in FastMCP tools

### Fixed
- MCP install command with environment variables
- Resource template handling in FastMCP server (#129)
- Package in the generated MCP run config (#128)
- FastMCP logger debug output
- Handling of strings containing numbers in FastMCP (@sd2k, #142)

### Changed
- Refactored to use built-in typing.Annotated instead of typing_extensions
- Updated uv.lock
- Added .DS_Store to gitignore

# MCP Python SDK v1.2.0rc1 Release Notes

## Major Features

### FastMCP Integration
- Integrated [FastMCP](https://github.com/jlowin/fastmcp) as the recommended high-level server framework
- Added new `mcp.server.fastmcp` module with simplified decorator-based API
- Introduced `FastMCP` class for easier server creation and management
- Added comprehensive documentation and examples for FastMCP usage

### New CLI Package
- Added new CLI package for improved developer experience
- Introduced `mcp dev` command for local development and testing
- Added `mcp install` command for Claude Desktop integration
- Added `mcp run` command for direct server execution

## Improvements

### Documentation
- Completely revamped README with new structure and examples
- Added detailed sections on core concepts (Resources, Tools, Prompts)
- Updated documentation to recommend FastMCP as primary API
- Added sections on development workflow and deployment options
- Improved example server documentation

### Developer Experience
- Added pre-commit hooks for code quality
- Updated to Pydantic 2.10.0 for improved type checking
- Added uvicorn as a dependency for better server capabilities

## Bug Fixes
- Fixed deprecation warnings in core components
- Fixed Pydantic field handling for meta fields
- Fixed type issues throughout the codebase
- Fixed example server READMEs

## Breaking Changes
- Deprecated direct usage of `mcp.server` in favor of `mcp.server.fastmcp`
- Updated import paths for FastMCP integration
- Changed recommended installation to include CLI features (`pip install "mcp[cli]"`)

## Contributors
Special thanks to all contributors who made this release possible, including:
- Jeremiah Lowin (FastMCP)
- Oskar Raszkiewicz

**Full Changelog**: https://github.com/modelcontextprotocol/python-sdk/compare/v1.1.2...v1.2.0rc1
