Align with spec #3002: optional clientInfo, serverInfo in result _meta (#3143)

This commit is contained in:
Max 2026-07-23 12:00:36 +01:00 • committed by GitHub
commit 837ef904f8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -27,6 +27,7 @@ from mcp_types import (
from mcp import MCPError
from mcp.server import Server, ServerRequestContext
from tests._stamp import Unstamp
from tests.interaction._connect import Connect
from tests.interaction._helpers import IncomingMessage
from tests.interaction._requirements import requirement
@ -36,7 +37,7 @@ pytestmark = pytest.mark.anyio
@requirement("resources:list:basic")
@requirement("resources:annotations")
async def test_list_resources_returns_registered_resources(connect: Connect) -> None:
async def test_list_resources_returns_registered_resources(connect: Connect, unstamped: Unstamp) -> None:
"""Listed resources reach the client with their URIs, names, and optional descriptive fields intact.
The fully-populated entry includes annotations, so the snapshot also proves they round-trip.
@ -71,7 +72,7 @@ async def test_list_resources_returns_registered_resources(connect: Connect) ->
async with connect(server) as client:
result = await client.list_resources()
assert result == snapshot(
assert unstamped(result) == snapshot(
ListResourcesResult(
resources=[
Resource(uri="memo://minimal", name="minimal"),
@ -93,7 +94,7 @@ async def test_list_resources_returns_registered_resources(connect: Connect) ->
@requirement("resources:read:text")
async def test_read_resource_text(connect: Connect) -> None:
async def test_read_resource_text(connect: Connect, unstamped: Unstamp) -> None:
"""Reading a text resource returns its contents with the URI, MIME type, and text supplied by the handler."""
async def read_resource(ctx: ServerRequestContext, params: types.ReadResourceRequestParams) -> ReadResourceResult:
@ -106,7 +107,7 @@ async def test_read_resource_text(connect: Connect) -> None:
async with connect(server) as client:
result = await client.read_resource("file:///greeting.txt")
assert result == snapshot(
assert unstamped(result) == snapshot(
ReadResourceResult(
contents=[TextResourceContents(uri="file:///greeting.txt", mime_type="text/plain", text="Hello, world!")]
)
@ -114,7 +115,7 @@ async def test_read_resource_text(connect: Connect) -> None:
@requirement("resources:read:blob")
async def test_read_resource_binary(connect: Connect) -> None:
async def test_read_resource_binary(connect: Connect, unstamped: Unstamp) -> None:
"""Reading a binary resource returns its contents base64-encoded in the blob field."""
async def read_resource(ctx: ServerRequestContext, params: types.ReadResourceRequestParams) -> ReadResourceResult:
@ -133,7 +134,7 @@ async def test_read_resource_binary(connect: Connect) -> None:
async with connect(server) as client:
result = await client.read_resource("file:///pixel.png")
assert result == snapshot(
assert unstamped(result) == snapshot(
ReadResourceResult(
contents=[BlobResourceContents(uri="file:///pixel.png", mime_type="image/png", blob="iVBORw==")]
)
@ -161,7 +162,7 @@ async def test_read_resource_unknown_uri_is_protocol_error(connect: Connect) ->
@requirement("resources:templates:list")
async def test_list_resource_templates_returns_registered_templates(connect: Connect) -> None:
async def test_list_resource_templates_returns_registered_templates(connect: Connect, unstamped: Unstamp) -> None:
"""Listed resource templates reach the client with their URI templates and descriptive fields intact."""
async def list_resource_templates(
@ -186,7 +187,7 @@ async def test_list_resource_templates_returns_registered_templates(connect: Con
async with connect(server) as client:
result = await client.list_resource_templates()
assert result == snapshot(
assert unstamped(result) == snapshot(
ListResourceTemplatesResult(
resource_templates=[
ResourceTemplate(uri_template="users://{user_id}", name="user"),