Split protocol types into a standalone mcp-types package (#2973)

This commit is contained in:
Marcelo Trylesinski 2026-06-25 19:18:38 +02:00 • committed by GitHub
commit 0ee7f1b293
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 1040 additions and 867 deletions

View file

@ -7,15 +7,10 @@ on an Event rather than a sleep, and every wait is bounded by `anyio.fail_after`
"""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.client import ClientRequestContext, ClientSession
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from mcp.types import (
from mcp_types import (
REQUEST_TIMEOUT,
CallToolResult,
EmptyResult,
@ -29,6 +24,12 @@ from mcp.types import (
ServerCapabilities,
TextContent,
)
from mcp import MCPError
from mcp.client import ClientRequestContext, ClientSession
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from tests.interaction._connect import Connect
from tests.interaction._helpers import IncomingMessage
from tests.interaction._requirements import requirement

View file

@ -17,18 +17,9 @@ from contextlib import asynccontextmanager
import anyio
import httpx
import mcp_types as types
import pytest
from mcp import MCPError, types
from mcp.client._memory import InMemoryTransport
from mcp.client._transport import TransportStreams
from mcp.client.client import Client
from mcp.client.streamable_http import streamable_http_client
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from mcp.shared.version import LATEST_HANDSHAKE_VERSION, LATEST_MODERN_VERSION, MODERN_PROTOCOL_VERSIONS
from mcp.types import (
from mcp_types import (
CLIENT_CAPABILITIES_META_KEY,
CLIENT_INFO_META_KEY,
INVALID_REQUEST,
@ -45,6 +36,16 @@ from mcp.types import (
ServerCapabilities,
ToolsCapability,
)
from mcp_types.version import LATEST_HANDSHAKE_VERSION, LATEST_MODERN_VERSION, MODERN_PROTOCOL_VERSIONS
from mcp import MCPError
from mcp.client._memory import InMemoryTransport
from mcp.client._transport import TransportStreams
from mcp.client.client import Client
from mcp.client.streamable_http import streamable_http_client
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from tests.interaction._connect import BASE_URL, Connect, mounted_app
from tests.interaction._helpers import RecordingTransport
from tests.interaction._requirements import requirement

View file

@ -1,11 +1,9 @@
"""Completion interactions against the low-level Server, driven through the public Client API."""
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.server import Server, ServerRequestContext
from mcp.types import (
from mcp_types import (
INVALID_PARAMS,
METHOD_NOT_FOUND,
CompleteResult,
@ -14,6 +12,9 @@ from mcp.types import (
PromptReference,
ResourceTemplateReference,
)
from mcp import MCPError
from mcp.server import Server, ServerRequestContext
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -5,15 +5,10 @@ mode field, because the typed server API (`elicit_form`/`elicit_url`) always ser
"""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, UrlElicitationRequiredError, types
from mcp.client import ClientRequestContext, ClientSession
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from mcp.types import (
from mcp_types import (
CallToolResult,
ElicitCompleteNotification,
ElicitCompleteNotificationParams,
@ -31,6 +26,12 @@ from mcp.types import (
ServerCapabilities,
TextContent,
)
from mcp import MCPError, UrlElicitationRequiredError
from mcp.client import ClientRequestContext, ClientSession
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from tests.interaction._connect import Connect
from tests.interaction._helpers import IncomingMessage
from tests.interaction._requirements import requirement

View file

@ -9,14 +9,10 @@ individual features are pinned by their own tests; these prove they compose.
from collections.abc import Awaitable, Callable
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, UrlElicitationRequiredError, types
from mcp.client import ClientRequestContext
from mcp.server import Server, ServerRequestContext
from mcp.server.session import ServerSession
from mcp.types import (
from mcp_types import (
URL_ELICITATION_REQUIRED,
CallToolResult,
ElicitCompleteNotification,
@ -31,6 +27,11 @@ from mcp.types import (
TextResourceContents,
Tool,
)
from mcp import MCPError, UrlElicitationRequiredError
from mcp.client import ClientRequestContext
from mcp.server import Server, ServerRequestContext
from mcp.server.session import ServerSession
from tests.interaction._connect import Connect
from tests.interaction._helpers import IncomingMessage
from tests.interaction._requirements import requirement

View file

@ -8,16 +8,10 @@ answer initialize with an unsupported protocol version.
"""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.client import ClientRequestContext, ClientSession
from mcp.client._memory import InMemoryTransport
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from mcp.types import (
from mcp_types import (
INVALID_PARAMS,
CallToolResult,
ClientCapabilities,
@ -40,6 +34,13 @@ from mcp.types import (
TextContent,
ToolsCapability,
)
from mcp import MCPError
from mcp.client import ClientRequestContext, ClientSession
from mcp.client._memory import InMemoryTransport
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import MessageStream, create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -15,18 +15,18 @@ alongside the fix that introduces capability gating.
"""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import types
from mcp.server import Server, ServerRequestContext
from mcp.types import (
from mcp_types import (
CallToolResult,
PromptListChangedNotification,
ResourceListChangedNotification,
TextContent,
ToolListChangedNotification,
)
from mcp.server import Server, ServerRequestContext
from tests.interaction._connect import Connect
from tests.interaction._helpers import IncomingMessage
from tests.interaction._requirements import requirement

View file

@ -5,12 +5,12 @@ Notification ordering: await-free callbacks finish in arrival order, and passing
streamable HTTP, so plain-list collection is deterministic on every transport leg.
"""
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp_types import CallToolResult, EmptyResult, LoggingMessageNotificationParams, TextContent
from mcp import types
from mcp.server import Server, ServerRequestContext
from mcp.types import CallToolResult, EmptyResult, LoggingMessageNotificationParams, TextContent
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -5,11 +5,11 @@ rather than snapshotting a literal: the expected value and the sent value are th
which also proves the SDK injected nothing alongside it.
"""
import mcp_types as types
import pytest
from mcp_types import CallToolResult, RequestParamsMeta, TextContent
from mcp import types
from mcp.server import Server, ServerRequestContext
from mcp.types import CallToolResult, RequestParamsMeta, TextContent
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -5,12 +5,10 @@ handler returns as next_cursor comes back verbatim on the client's next call, no
pagination scheme.
"""
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.server import Server, ServerRequestContext
from mcp.types import (
from mcp_types import (
INVALID_PARAMS,
ListPromptsResult,
ListResourcesResult,
@ -21,6 +19,9 @@ from mcp.types import (
ResourceTemplate,
Tool,
)
from mcp import MCPError
from mcp.server import Server, ServerRequestContext
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -1,11 +1,11 @@
"""Ping interactions against the low-level Server, driven through the public Client API."""
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp_types import CallToolResult, EmptyResult, TextContent
from mcp import types
from mcp.server import Server, ServerRequestContext
from mcp.types import CallToolResult, EmptyResult, TextContent
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -10,14 +10,14 @@ server's handler.
"""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp_types import CallToolResult, ProgressNotification, ProgressNotificationParams, ProgressToken, TextContent
from mcp import types
from mcp.server import Server, ServerRequestContext
from mcp.server.session import ServerSession
from mcp.shared.session import ProgressFnT
from mcp.types import CallToolResult, ProgressNotification, ProgressNotificationParams, ProgressToken, TextContent
from tests.interaction._connect import Connect
from tests.interaction._helpers import IncomingMessage
from tests.interaction._requirements import requirement

View file

@ -1,11 +1,9 @@
"""Prompt interactions against the low-level Server, driven through the public Client API."""
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.server import Server, ServerRequestContext
from mcp.types import (
from mcp_types import (
INVALID_PARAMS,
AudioContent,
EmbeddedResource,
@ -20,6 +18,9 @@ from mcp.types import (
TextContent,
TextResourceContents,
)
from mcp import MCPError
from mcp.server import Server, ServerRequestContext
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -3,12 +3,10 @@
import base64
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.server import Server, ServerRequestContext
from mcp.types import (
from mcp_types import (
METHOD_NOT_FOUND,
Annotations,
BlobResourceContents,
@ -26,6 +24,9 @@ from mcp.types import (
TextContent,
TextResourceContents,
)
from mcp import MCPError
from mcp.server import Server, ServerRequestContext
from tests.interaction._connect import Connect
from tests.interaction._helpers import IncomingMessage
from tests.interaction._requirements import requirement

View file

@ -1,14 +1,15 @@
"""Roots interactions against the low-level Server, driven through the public Client API."""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp_types import INTERNAL_ERROR, CallToolResult, ErrorData, ListRootsResult, Root, TextContent
from pydantic import FileUrl
from mcp import MCPError, types
from mcp import MCPError
from mcp.client import ClientRequestContext
from mcp.server import Server, ServerRequestContext
from mcp.types import INTERNAL_ERROR, CallToolResult, ErrorData, ListRootsResult, Root, TextContent
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -5,14 +5,11 @@ ctx.session.create_message(), the client's sampling callback answers it, and the
round-trips what it received back to the test through its tool result.
"""
import mcp_types as types
import pydantic
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.client import ClientRequestContext
from mcp.server import Server, ServerRequestContext
from mcp.types import (
from mcp_types import (
AudioContent,
CallToolResult,
CreateMessageRequestParams,
@ -28,6 +25,10 @@ from mcp.types import (
ToolResultContent,
ToolUseContent,
)
from mcp import MCPError
from mcp.client import ClientRequestContext
from mcp.server import Server, ServerRequestContext
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -9,17 +9,18 @@ cancellation reason these tests snapshot.)
"""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp_types import REQUEST_TIMEOUT, CallToolResult, ErrorData, JSONRPCNotification, TextContent
from trio.testing import MockClock
from mcp import MCPError, types
from mcp import MCPError
from mcp.client import ClientRequestContext
from mcp.client._memory import InMemoryTransport
from mcp.client.client import Client
from mcp.server import Server, ServerRequestContext
from mcp.shared.message import SessionMessage
from mcp.types import REQUEST_TIMEOUT, CallToolResult, ErrorData, JSONRPCNotification, TextContent
from tests.interaction._helpers import RecordingTransport
from tests.interaction._requirements import requirement

View file

@ -1,12 +1,10 @@
"""Tool interactions against the low-level Server, driven through the public Client API."""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.server import Server, ServerRequestContext
from mcp.types import (
from mcp_types import (
INVALID_PARAMS,
AudioContent,
CallToolResult,
@ -21,6 +19,9 @@ from mcp.types import (
Tool,
ToolAnnotations,
)
from mcp import MCPError
from mcp.server import Server, ServerRequestContext
from tests.interaction._connect import Connect
from tests.interaction._requirements import requirement

View file

@ -11,17 +11,10 @@ malformed JSON-RPC requests that the typed client API cannot produce.
"""
import anyio
import mcp_types as types
import pytest
from inline_snapshot import snapshot
from mcp import MCPError, types
from mcp.client import ClientRequestContext, ClientSession
from mcp.client._memory import InMemoryTransport
from mcp.client.client import Client
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from mcp.types import (
from mcp_types import (
CONNECTION_CLOSED,
INVALID_PARAMS,
CallToolRequest,
@ -36,6 +29,14 @@ from mcp.types import (
ListRootsResult,
TextContent,
)
from mcp import MCPError
from mcp.client import ClientRequestContext, ClientSession
from mcp.client._memory import InMemoryTransport
from mcp.client.client import Client
from mcp.server import Server, ServerRequestContext
from mcp.shared.memory import create_client_server_memory_streams
from mcp.shared.message import SessionMessage
from tests.interaction._helpers import RecordingTransport, _RecordingReadStream
from tests.interaction._requirements import requirement