/ Каталог / Песочница / MCP Python SDK
● Официальный modelcontextprotocol ⚡ Сразу

MCP Python SDK

автор modelcontextprotocol · modelcontextprotocol/python-sdk

Официальный Python SDK для Model Context Protocol — создавайте серверы и клиенты в 30 строк, поставляется с декораторами совместимыми с FastMCP.

Официальный Python SDK для MCP, поддерживаемый Anthropic. Предоставляет сервер (mcp.server.fastmcp.FastMCP), клиент (mcp.client.session.ClientSession) и низкоуровневые примитивы. Используется как каноническая реализация для соответствия спецификации — когда сомневаетесь, это источник истины. API FastMCP на базе декораторов был влит из jlowin/fastmcp.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

mcp-python-sdk.replay ▶ готово
0/0

Установка

Выберите клиент

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-python-sdk": {
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ],
      "_inferred": true
    }
  }
}

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-python-sdk",
      "command": "uvx",
      "args": [
        "--with",
        "mcp",
        "python",
        "-m",
        "mcp.server.example"
      ]
    }
  ]
}

Continue использует массив объектов серверов, а не map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-python-sdk": {
      "command": {
        "path": "uvx",
        "args": [
          "--with",
          "mcp",
          "python",
          "-m",
          "mcp.server.example"
        ]
      }
    }
  }
}

Добавьте в context_servers. Zed перезагружается автоматически.

claude mcp add mcp-python-sdk -- uvx --with mcp python -m mcp.server.example

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: MCP Python SDK

Создайте первый MCP-сервер на Python менее чем за 10 минут

👤 Python-разработчики, новые в MCP ⏱ ~15 min beginner

Когда использовать: Вы хотите предоставить Python-функцию Claude.

Предварительные требования
  • Python 3.10+ — uv или pyenv
Поток
  1. Установка и скаффолдинг
    Use uv to install mcp. Create server.py with one tool: get_weather(city) that calls a public API.✓ Скопировано
    → 10-строчный файл с декоратором @tool
  2. Запуск через stdio
    Run mcp dev server.py. Open the MCP Inspector and verify the tool listing.✓ Скопировано
    → Инструмент вызывается из инспектора
  3. Добавление в Claude Desktop
    Add to claude_desktop_config.json. Test from Claude.✓ Скопировано
    → Живой ответ в чате

Итог: Рабочий MCP-сервер на Python, зарегистрированный в Claude.

Подводные камни
  • Использование print() в обработчике ломает stdio — Используйте logging в stderr; никогда не пишите в stdout

Пишите интеграционные тесты для MCP-сервера с клиентом из SDK

👤 Разработчики, публикующие MCP в production ⏱ ~30 min intermediate

Когда использовать: Вам нужны CI-тесты, доказывающие правильное поведение вашего MCP.

Поток
  1. Запуск сервера
    Use mcp.client.stdio to spawn server.py and call list_tools(). Assert expected names.✓ Скопировано
    → Тест проходит
  2. Вызов каждого инструмента
    For each tool, call with a representative input and assert the output schema.✓ Скопировано
    → Все инструменты проверены
  3. Интеграция с pytest
    Convert into pytest fixtures so CI runs them on every PR.✓ Скопировано
    → Переиспользуемый тест-харнес

Итог: MCP-сервер с уверенностью, что инструменты не деградируют.

Стримьте вывод долгоживущего инструмента обратно в Claude по мере поступления

👤 Разработчики, создающие MCP для сборок, деплоев или долгих симуляций ⏱ ~45 min advanced

Когда использовать: Инструмент работает минуты, и вы хотите видеть прогресс в чате, не дожидаясь завершения.

Поток
  1. Использование streamable HTTP транспорта
    Switch from stdio to streamable HTTP. Yield progress events from the tool.✓ Скопировано
    → Claude показывает частичный вывод во время выполнения
  2. Добавление отмены
    Honor cancel requests so user can abort if the tool takes too long.✓ Скопировано
    → Отмена работает в середине выполнения

Итог: Инструменты, которые ощущаются как реального времени, даже когда медленные.

Комбинации

Сочетайте с другими MCP — эффект x10

mcp-python-sdk + mcp-go-mark3labs

Полиглот — критичное по производительности на Go, ML/данные на Python

Use mcp-python-sdk for the model-serving MCP, mcp-go for the high-throughput one.✓ Скопировано
mcp-python-sdk + mcp-registry

Публикация вашего Python MCP в официальный реестр

Submit metadata to modelcontextprotocol/registry once your server passes its tests.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
FastMCP name, version? Создание сервера верхнего уровня 0
@server.tool decorator on async function Каждая функция, которую вы хотите предоставить 0
@server.resource decorator with uri pattern Предоставление данных только для чтения 0
@server.prompt decorator on prompt builder Переиспользуемые шаблоны промптов 0
ClientSession transport Тестирование или построение MCP-клиентов 0
stdio_server () Локальный режим 0

Стоимость и лимиты

Во что обходится

Квота API
Не применимо — библиотека
Токенов на вызов
Не применимо
Деньги
Бесплатно (MIT)
Совет
Пинните версию SDK в pyproject.toml; спецификация эволюционирует

Безопасность

Права, секреты, радиус поражения

Хранение учётных данных: Что нужно вашим инструментам
Исходящий трафик: Контролируется вашими обработчиками

Устранение неполадок

Частые ошибки и исправления

Tool not appearing

Убедитесь, что декоратор @tool стоит на async-функции и функция зарегистрирована до старта сервера

Проверить: Запустите `mcp dev server.py` и откройте инспектор
Pydantic validation errors

Входные данные инструментов валидируются Pydantic; проверьте, что типовые аннотации совпадают с тем, что отправляет Claude

Server hangs on stdin EOF

Убедитесь, что ваши async-обработчики не дедлочатся — используйте anyio для совместимости

Альтернативы

MCP Python SDK в сравнении

АльтернативаКогда использоватьКомпромисс
FastMCP (PrefectHQ)Вы хотите оригинальный сторонний форк с дополнительными утилитамиСейчас в основном влит обратно; тонкая обёртка
mcp-go (mark3labs)Go — ваш языкДругая экосистема

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills