Skip to content

Releases: modelcontextprotocol/python-sdk

v1.1.2

12 Dec 17:14
v1.1.2
dd1a069
Compare
Choose a tag to compare

Full Changelog: v1.1.1...v1.1.2

v1.1.1

09 Dec 14:24
v1.1.1
34f380c
Compare
Choose a tag to compare

Full Changelog: v1.1.0...v1.1.1

v1.1.0

03 Dec 22:19
v1.1.0
e4e4954
Compare
Choose a tag to compare

What's Changed

  • Fix first Python demo so it works without further modifications by @simonw in #66
  • Fix experimental capabilities example by @jspahrsummers in #70
  • Add handler for resource templates by @dsp-ant in #77
  • Updated example in README.md for increased outreach by @miguelg719 in #82

New Contributors

Full Changelog: v1.0.0...v1.1.0

1.0.0

25 Nov 14:22
v1.0.0
91b255f
Compare
Choose a tag to compare

We're excited to announce the first stable release of the Model Context Protocol (MCP) Python SDK! This release provides a complete implementation of the MCP specification, enabling seamless integration between LLM applications and context providers.

Features

Core Protocol Implementation

  • Full implementation of MCP protocol v2024-11-05
  • Robust client and server capabilities with async/await support
  • Type-safe request/response handling using Pydantic models
  • Support for all core MCP primitives:
    • Prompts and prompt templates
    • Resources and resource templates
    • Tools with JSON Schema validation
    • Progress tracking and notifications
    • Logging with severity levels

Transport Layer Support

  • Standard input/output (stdio) transport
  • Server-Sent Events (SSE) transport

Client Features

  • Simple, intuitive client API
  • Automatic protocol negotiation
  • Request timeout handling
  • Progress tracking
  • Error handling with typed exceptions

Server Features

  • Decorator-based request handlers
  • Built-in capability negotiation
  • Request context management
  • Support for experimental capabilities
  • Automatic request/response routing

Installation

# Using uv (recommended)
uv add mcp

# Using pip
pip install mcp

Basic Usage

Creating a Server

from mcp.server import Server
import mcp.types as types

server = Server("example-server")

@server.list_prompts()
async def handle_list_prompts() -> list[types.Prompt]:
    return [
        types.Prompt(
            name="example-prompt",
            description="An example prompt template",
            arguments=[
                types.PromptArgument(
                    name="arg1", 
                    description="Example argument",
                    required=True
                )
            ]
        )
    ]

# Run the server over stdio
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
    await server.run(
        read_stream,
        write_stream,
        server.create_initialization_options()
    )

Creating a Client

from mcp import ClientSession, StdioServerParameters

async with mcp.client.stdio.stdio_client(
    StdioServerParameters(command="path/to/server")
) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        prompts = await session.list_prompts()

Requirements

  • Python 3.10 or later
  • anyio 4.6 or later
  • pydantic 2.8.0 or later
  • httpx 0.27 or later

Breaking Changes

This is the initial stable release, establishing the baseline API for future versions.

License

MIT License


For more information:

v0.9.1

20 Nov 11:31
v0.9.1
5c1bf93
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.9.0...v0.9.1