python-sdk README

The project's README from github.com/modelcontextprotocol/python-sdk. As one markdown file: README.md.

MCP Python SDK

Python implementation of the Model Context Protocol (MCP)

PyPI MIT licensed Python Version Documentation Protocol Specification

[!NOTE] This is v2 of the MCP Python SDK, the current stable release line. It is a major rework of the SDK, both to support the 2026-07-28 MCP specification (and every earlier revision) and to fix long-standing architectural issues. Coming from v1? See What's new in v2 for the tour of what changed and the migration guide for every breaking change.

Not ready to migrate? v1.x lives on the v1.x branch, continues to receive critical bug fixes and security patches, and is documented at https://py.sdk.modelcontextprotocol.io/v1/. Since pip install mcp now installs 2.x, keep a <2 upper bound on your requirement (for example mcp>=1.28,<2) until you've migrated.

Something rough, confusing, or broken? Open an issue or find us in #python-sdk-dev on the MCP Contributors Discord.

Documentation

The documentation lives at https://py.sdk.modelcontextprotocol.io/.

It has a Get started guide, What's new in v2, the API reference, and the migration guide.

What is MCP?

The Model Context Protocol lets you build servers that expose data and functionality to LLM applications in a secure, standardized way. Think of it like a web API, but designed for LLM interactions. With this SDK you can:

Requirements

Python 3.10+.

Installation

uv add "mcp[cli]"      # or: pip install "mcp[cli]"

The cli extra adds the mcp command-line tool (mcp dev, mcp run, mcp install) on top of the SDK; install plain mcp if you don't need it. For one-off commands, uv run --with "mcp[cli]" mcp ... works without a project.

A server in 15 lines

Create a server.py:

from mcp.server import MCPServer

mcp = MCPServer("Demo")


@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b


@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
    """Greet someone by name."""
    return f"Hello, {name}!"

Full example: docs_src/index/tutorial001.py

That's a complete MCP server: one tool, one templated resource. Open it in the MCP Inspector:

uv run mcp dev server.py

Call add with a=1, b=2 and you get 3 back.

Notice what you did not write: no JSON Schema (a: int, b: int is the schema), no request parsing, no validation code, no protocol handling. Two type-hinted Python functions and a docstring.

Get started takes it from here.

A client in 10 lines

The same package is a full MCP client. Serve server.py over HTTP:

uv run mcp run server.py --transport streamable-http

then point a Client at it:

import asyncio

from mcp import Client


async def main() -> None:
    async with Client("http://localhost:8000/mcp") as client:
        result = await client.call_tool("add", {"a": 1, "b": 2})
        print(result.structured_content)  # {'result': 3}


asyncio.run(main())

A URL means Streamable HTTP, the transport you deploy. Client can also launch a local server as a stdio subprocess or take any custom transport; Clients has the rest.

Contributing

We are passionate about supporting contributors of all levels of experience and would love to see you get involved in the project. See the contributing guide to get started.

License

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

python-sdk (modelcontextprotocol/python-sdk)

Searching Database…

Что это такое?Официальный Python SDK для Model Context Protocol (MCP) — представьте себе веб-API, только созданный специально для работы с LLM. Он позволяет создавать серверы, которые открывают LLM-приложениям доступ к данным и функциям, и клиенты, которые подключаются к любому MCP-серверу.
Это библиотека, которую я подключаю к своему коду, или отдельный инструмент?Это Python-библиотека, которая ставится через pip (пакет называется mcp), а не отдельное приложение — вы импортируете её в код своего сервера или клиента. Опциональная extras-группа cli дополнительно добавляет утилиту командной строки mcp для задач разработки.
Как запустить свой первый сервер?Установите pip install 'mcp[cli]', создайте файл server.py с функциями на Python, оформленными декораторами и аннотациями типов, и запустите его — полный сервер из туториала (один инструмент и один шаблонный ресурс) занимает всего 15 строк.
Какая версия Python мне нужна?Достаточно Python 3.10 или новее. Пакет опубликован на PyPI, так что обычная установка через pip или uv закроет все остальные зависимости.
Я уже делал проект на v1 — придётся всё переписывать под v2?v2 — это серьёзная переработка с несовместимыми изменениями, но в документации есть руководство по миграции с описанием каждого из них. Если вы пока не готовы, ветка v1.x живёт отдельно и по-прежнему получает исправления критических багов и патчи безопасности.
Что сервер может отдать LLM-приложению?Инструменты, ресурсы (в том числе шаблонные) и промпты — доступные любому MCP-хосту. Пример из туториала определяет один инструмент и один шаблонный ресурс.
Как проверить сервер во время разработки?mcp dev открывает его в MCP Inspector — в туториале вызов add с a=1, b=2 возвращает 3, и ни строчки клиентского кода писать не пришлось.
Можно выполнить разовую команду, не создавая проект?Да — uv run --with 'mcp[cli]' mcp ... работает и без проекта.
Какие версии спецификации MCP поддерживает SDK v2?Спецификацию 2026-07-28 и все предыдущие редакции. v2 была переработана под неё, а заодно избавилась от давних архитектурных проблем.
Size
17 MB
Stars
24.6K
Age
2y
Commits · 90 Days