# MCP Java SDK: установка, версии и редакции протокола

> Официальный Java SDK для MCP, выпуск 2.0.1 - работает только в эпохе Legacy до редакции 2025-11-25, поддержка 2026-07-28 пока существует лишь как план линии 3.x

Страница: https://mcpdoc.ru/sdk/java/
Указатель сайта: https://mcpdoc.ru/llms.txt

Java SDK - официальный SDK второго уровня (Tier 2). Выпуск 2.0.1 понимает редакции до `2025-11-25` включительно и работает только через рукопожатие `initialize`. Редакции `2026-07-28` в нём нет. Она обещана в линии 3.x, но на 4 октября 2026 у этой линии нет ни метки в репозитории, ни опубликованного пакета.

сверено с выпуском 2.0.1 4 октября 2026

Совместимость Legacy редакция 2025-11-25 и старше: рукопожатие initialize и сессии

- **Проверенная версия:** 2.0.1, выпуск от 2026-08-19

- **Новейшая поддерживаемая редакция:** 2025-11-25

- **С сервером только Modern:** не работает

- **С сервером только Legacy:** работает

- **Переход на старую редакцию:** нет

- **Использует устаревшее:** Roots, Sampling, Logging, транспорт HTTP+SSE

- **Сохраняет удалённое в редакции 2026-07-28:** сессии, рукопожатие initialize

- **Расширение Tasks:** нет

- **Расширение MCP Apps:** неизвестно

- **Проверено:** 2026-10-04

- **Источник:** [github.com](https://github.com/modelcontextprotocol/java-sdk/releases/tag/v2.0.1)

## Что это

Java SDK - набор модулей для серверов и клиентов MCP на Java, с синхронным и асинхронным интерфейсом. В [списке официальных SDK](https://modelcontextprotocol.io/docs/sdk) у него второй уровень (Tier 2). То же сказано в [плане развития SDK](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/ROADMAP.md): «The Java SDK is an official Tier 2 SDK».

По [правилам уровней](https://modelcontextprotocol.io/community/sdk-tiers) второй уровень - это SDK, который активно сопровождается и движется к полной поддержке спецификации.

Модули выпуска перечислены в [README](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/README.md):

| Модуль | Что в нём |
|---|---|
| `mcp-bom` | согласованные версии зависимостей |
| `mcp-core` | основная реализация: stdio, клиент на `HttpClient` из JDK, сервер на Servlet |
| `mcp-json-jackson3` | работа с JSON через Jackson 3 |
| `mcp-json-jackson2` | работа с JSON через Jackson 2 |
| `mcp` | удобный набор: `mcp-core` и Jackson 3 |
| `mcp-test` | общие средства тестирования |

Транспорты для Spring WebFlux и WebMVC в этот SDK не входят. По README выпуска они теперь часть Spring AI 2.0 и новее, группа `org.springframework.ai`. Эта страница описывает только то, что лежит в репозитории Java SDK.

## Выпуск и установка

Проверенный выпуск - 2.0.1 от 19 августа 2026: [выпуск на GitHub](https://github.com/modelcontextprotocol/java-sdk/releases/tag/v2.0.1), пакет [`io.modelcontextprotocol.sdk:mcp`](https://central.sonatype.com/artifact/io.modelcontextprotocol.sdk/mcp) на Maven Central.

В тот же день вышли 1.1.4 и 0.18.4. По плану развития линии 1.x и 0.x получают только исправления безопасности.

Нужна Java 17 или новее: в [`pom.xml`](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/pom.xml) записано `java.version` 17.

Способ установки описан в [руководстве по началу работы](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/docs/quickstart.md): сначала подключается BOM, затем модуль без номера версии.

```xml title="pom.xml"
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.modelcontextprotocol.sdk</groupId>
            <artifactId>mcp-bom</artifactId>
            <version>2.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependency>
    <groupId>io.modelcontextprotocol.sdk</groupId>
    <artifactId>mcp</artifactId>
</dependency>
```

Пример взят из документации выпуска 2.0.1 и здесь не запускался.

В документации у BOM стоит номер 2.0.0 и просьба заменить его на последнюю версию с Maven Central. На 4 октября 2026 это 2.0.1.

## Какие редакции понимает выпуск

В файле [`ProtocolVersions.java`](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/mcp-core/src/main/java/io/modelcontextprotocol/spec/ProtocolVersions.java) четыре редакции: `2024-11-05`, `2025-03-26`, `2025-06-18`, `2025-11-25`. Все они относятся к эпохе Legacy.

Строки `2026-07-28` и `server/discover` во всём дереве выпуска встречаются только в файле `ROADMAP.md`, то есть в плане, а не в коде.

Клиент, собранный на выпуске 2.0.1, не сможет работать с сервером, который понимает только Modern: такой сервер не отвечает на `initialize`. Сервер, собранный на 2.0.1, не сможет обслужить клиента, который понимает только Modern: такой клиент не начинает с `initialize`. Связь возможна, если другая сторона поддерживает обе эпохи.

## Что клиент отправляет по умолчанию

Клиент начинает с `initialize`. По [документации клиента](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/docs/client.md) встроенные транспорты `StdioClientTransport` и `HttpClientStreamableHttpTransport` объявляют все четыре редакции, поэтому согласование обычно останавливается на самой новой общей.

По коду выпуска клиент просит последнюю редакцию из списка своего транспорта. Для stdio и Streamable HTTP это `2025-11-25`. Устаревший транспорт `HttpClientSseClientTransport` объявляет только `2024-11-05`.

Если сервер ответит редакцией, которой нет в списке транспорта, `initialize()` завершится ошибкой `McpError`. Сузить список можно, переопределив `protocolVersions()` в своём транспорте.

## Что принимает сервер

По коду [`McpAsyncServer`](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/mcp-core/src/main/java/io/modelcontextprotocol/server/McpAsyncServer.java) сервер отвечает той редакцией, которую попросил клиент, если она есть в списке транспорта. Если нет, сервер предлагает самую новую из своих и пишет предупреждение в журнал.

В выпуске есть три вида серверного транспорта: stdio, Streamable HTTP на Servlet и устаревший HTTP+SSE на Servlet.

В выпуске есть `McpStatelessServerTransport` - сервер без сеансов. Его список редакций состоит из `2025-03-26`, `2025-06-18` и `2025-11-25`. Это режим старой эпохи, а не жизненный цикл без состояния из редакции `2026-07-28`.

Встроенной авторизации для сервера нет. README выпуска описывает подключаемые точки авторизации и прямо говорит, что собственной реализации SDK не содержит.

## Минимальный сервер

В [документации сервера](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/docs/server.md) транспорт и сервер показаны отдельными фрагментами. Переменная `schema` - схема входных данных инструмента, её вы задаёте сами.

```java title="Транспорт stdio"
StdioServerTransportProvider transportProvider =
    new StdioServerTransportProvider(McpJsonDefaults.getMapper());
```

```java title="Сервер с одним инструментом"
var server = McpServer.sync(transportProvider)
    .toolCall(
        Tool.builder("echo", schema).description("Echoes input").build(),
        (exchange, request) -> CallToolResult.builder()
            .content(List.of(new McpSchema.TextContent(request.arguments().get("text").toString())))
            .build()
    )
    .build();
```

Пример взят из документации выпуска 2.0.1 и здесь не запускался.

## Минимальный клиент

```java title="Клиент по Streamable HTTP"
McpTransport transport = HttpClientStreamableHttpTransport
    .builder("http://your-mcp-server")
    .endpoint("/mcp")
    .build();

McpSyncClient client = McpClient.sync(transport).build();

InitializeResult initResult = client.initialize();
String negotiatedVersion = initResult.protocolVersion();
```

Пример собран из двух фрагментов документации выпуска 2.0.1 и здесь не запускался.

## Расширения

**Tasks.** Нет. Документация и план развития выпуска расширение не упоминают, а поиск слова `task` по исходному коду ядра выпуска и строки `tasks/` по всему дереву ничего не нашёл.

**MCP Apps.** Неизвестно. Документация выпуска расширение не упоминает. Поиск строк `io.modelcontextprotocol/ui` и `ui://` по дереву выпуска ничего не нашёл.

## Устаревшие функции в выпуске

| Функция | Как с ней обходится выпуск 2.0.1 |
|---|---|
| `initialize` | Единственный способ установить связь |
| Сеансы | Транспорт Streamable HTTP работает с заголовком `Mcp-Session-Id` |
| HTTP+SSE из `2024-11-05` | Транспорты поставляются, но помечены `@Deprecated`. План развития: «SSE transports deprecated in favor of Streamable HTTP» |
| Roots, Sampling, Logging | Методы `roots/list`, `sampling/createMessage` и `logging/setLevel` есть в [`McpSchema.java`](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpSchema.java) |

## Выпуск, ветка main и план

Здесь три разных состояния, и смешивать их нельзя.

- **Выпуск 2.0.1.** Редакции до `2025-11-25`, эпоха Legacy.
- **Ветка `main`.** На 4 октября 2026 она опережает метку `v2.0.1` на 32 изменения, версия в `pom.xml` - `2.1.0-SNAPSHOT`. Файл `ProtocolVersions.java` в ней по-прежнему заканчивается на `2025-11-25`.
- **План.** В [плане развития](https://github.com/modelcontextprotocol/java-sdk/blob/v2.0.1/ROADMAP.md) сказано, что следующая мажорная линия 3.x реализует редакцию `2026-07-28`, включая `server/discover` и жизненный цикл без состояния, а первые промежуточные выпуски 3.0.0 намечены на сентябрь 2026.

Поддержка `2026-07-28` существует только как пункт плана. В репозитории нет ни одной метки 3.x. В [списке версий на Maven Central](https://repo1.maven.org/maven2/io/modelcontextprotocol/sdk/mcp/maven-metadata.xml) последняя версия - 2.0.1. Ветки для линии 3.x в репозитории тоже нет.

## Что неизвестно

- Когда выйдет первый выпуск линии 3.x: названный в плане срок прошёл, новой даты нет.
- Поддержка расширения MCP Apps: SDK о нём не говорит.
- Применяет ли клиент динамическую регистрацию клиента: в ядре нет встроенной авторизации, а код клиента на этот счёт здесь не разбирался.
- Кто сопровождает SDK: README выпуска и список официальных SDK этого не говорят.

## Что читать дальше

- [Все SDK](https://mcpdoc.ru/sdk/) - сравнение официальных SDK по эпохам.
- [Редакции и версии](https://mcpdoc.ru/protocol/versions/) - чем Modern отличается от Legacy.
- [Две эпохи на одном сервере](https://mcpdoc.ru/deployment/dual-era/) - как сервер старой эпохи сосуществует с новыми клиентами.
- [Kotlin SDK](https://mcpdoc.ru/sdk/kotlin/) - официальный SDK для того же окружения JVM.
