Mirror of https://github.com/modelcontextprotocol/python-sdk — The official Python SDK for Model Context Protocol servers and clients
  • Python 99.8%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2024-11-24 14:27:58 -06:00
.github/workflows PyPI release workflow 2024-11-12 11:32:13 +00:00
examples ruff fix 2024-11-22 10:47:58 +00:00
src/mcp fix return values of tools 2024-11-20 11:24:18 +00:00
tests run ruff 2024-11-11 20:42:46 +00:00
.gitignore Initial import 2024-09-24 22:04:19 +01:00
.python-version pin to lowest supported python version 2024-11-13 10:44:54 +00:00
CODE_OF_CONDUCT.md Add code of conduct 2024-11-18 15:32:03 +00:00
CONTRIBUTING.md Suggest forking in CONTRIBUTING.md 2024-11-20 15:44:08 +00:00
LICENSE Update LICENSE 2024-11-18 22:24:04 +00:00
pyproject.toml Add URLs 2024-11-20 16:12:21 +00:00
README.md Fix README links to docs/spec 2024-11-24 14:27:58 -06:00
RELEASE.md update release.md 2024-11-19 12:27:03 +00:00
SECURITY.md Update SECURITY.md 2024-11-19 11:37:59 -05:00
uv.lock bump and constraint 2024-11-19 12:33:23 +00:00

MCP Python SDK

Python implementation of the Model Context Protocol (MCP), providing both client and server capabilities for integrating with LLM surfaces.

Overview

The Model Context Protocol allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction. This Python SDK implements the full MCP specification, making it easy to:

  • Build MCP clients that can connect to any MCP server
  • Create MCP servers that expose resources, prompts and tools
  • Use standard transports like stdio and SSE
  • Handle all MCP protocol messages and lifecycle events

Installation

uv add mcp

Quick Start

Creating a Client

from mcp import ClientSession
from mcp.client.stdio import stdio_client

async with stdio_client(command="path/to/server") as (read, write):
    async with ClientSession(read, write) as session:
        # Initialize the connection
        await session.initialize()

        # List available resources
        resources = await session.list_resources()

Creating a Server

from mcp.server import Server
from mcp.server.stdio import stdio_server

# Create a server instance
server = Server("example-server")

# Add capabilities
@server.list_resources()
async def list_resources():
    return [
        {
            "uri": "file:///example.txt",
            "name": "Example Resource"
        }
    ]

# Run the server
async with stdio_server() as (read, write):
    await server.run(read, write, server.create_initialization_options())

Documentation

Contributing

Issues and pull requests are welcome on GitHub at https://github.com/modelcontextprotocol/python-sdk.

License

This project is licensed under the MIT License - see the LICENSE file for details.