chore: import upstream snapshot with attribution
Deploy Docs / deploy-docs (push) Failing after 1s
Conformance Tests / client-conformance (push) Failing after 3s
Conformance Tests / server-conformance (push) Failing after 1s
GitHub Actions Security Analysis / zizmor (push) Failing after 1s
CI / checks (push) Failing after 59m20s
CI / all-green (push) Has been cancelled
Deploy Docs / deploy-docs (push) Failing after 1s
Conformance Tests / client-conformance (push) Failing after 3s
Conformance Tests / server-conformance (push) Failing after 1s
GitHub Actions Security Analysis / zizmor (push) Failing after 1s
CI / checks (push) Failing after 59m20s
CI / all-green (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""Example showing direct CallToolResult return for advanced control."""
|
||||
|
||||
from typing import Annotated
|
||||
|
||||
from mcp_types import CallToolResult, TextContent
|
||||
from pydantic import BaseModel
|
||||
|
||||
from mcp.server.mcpserver import MCPServer
|
||||
|
||||
mcp = MCPServer("CallToolResult Example")
|
||||
|
||||
|
||||
class ValidationModel(BaseModel):
|
||||
"""Model for validating structured output."""
|
||||
|
||||
status: str
|
||||
data: dict[str, int]
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def advanced_tool() -> CallToolResult:
|
||||
"""Return CallToolResult directly for full control including _meta field."""
|
||||
return CallToolResult(
|
||||
content=[TextContent(type="text", text="Response visible to the model")],
|
||||
_meta={"hidden": "data for client applications only"},
|
||||
)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def validated_tool() -> Annotated[CallToolResult, ValidationModel]:
|
||||
"""Return CallToolResult with structured output validation."""
|
||||
return CallToolResult(
|
||||
content=[TextContent(type="text", text="Validated response")],
|
||||
structured_content={"status": "success", "data": {"result": 42}},
|
||||
_meta={"internal": "metadata"},
|
||||
)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def empty_result_tool() -> CallToolResult:
|
||||
"""For empty results, return CallToolResult with empty content."""
|
||||
return CallToolResult(content=[])
|
||||
Reference in New Issue
Block a user