Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions README.v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -412,10 +412,10 @@ For full control over tool responses including the `_meta` field (for passing da

from typing import Annotated

from mcp_types import CallToolResult, TextContent
from pydantic import BaseModel

from mcp.server.mcpserver import MCPServer
from mcp.types import CallToolResult, TextContent

mcp = MCPServer("CallToolResult Example")

Expand Down Expand Up @@ -732,9 +732,10 @@ uv run completion-client
import asyncio
import os

from mcp_types import PromptReference, ResourceTemplateReference

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from mcp.types import PromptReference, ResourceTemplateReference

# Create server parameters for stdio connection
server_params = StdioServerParameters(
Expand Down Expand Up @@ -821,11 +822,11 @@ like OAuth flows, credential collection, or payment processing.

import uuid

from mcp_types import ElicitRequestURLParams
from pydantic import BaseModel, Field

from mcp.server.mcpserver import Context, MCPServer
from mcp.shared.exceptions import UrlElicitationRequiredError
from mcp.types import ElicitRequestURLParams

mcp = MCPServer(name="Elicitation Example")

Expand Down Expand Up @@ -929,8 +930,9 @@ Tools can interact with LLMs through sampling (generating text):

<!-- snippet-source examples/snippets/servers/sampling.py -->
```python
from mcp_types import SamplingMessage, TextContent

from mcp.server.mcpserver import Context, MCPServer
from mcp.types import SamplingMessage, TextContent

mcp = MCPServer(name="Sampling Example")

Expand Down Expand Up @@ -1639,8 +1641,9 @@ from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import TypedDict

import mcp_types as types

import mcp.server.stdio
from mcp import types
from mcp.server import Server, ServerRequestContext


Expand Down Expand Up @@ -1751,8 +1754,9 @@ uv run examples/snippets/servers/lowlevel/basic.py

import asyncio

import mcp_types as types

import mcp.server.stdio
from mcp import types
from mcp.server import Server, ServerRequestContext


Expand Down Expand Up @@ -1828,8 +1832,9 @@ uv run examples/snippets/servers/lowlevel/structured_output.py
import asyncio
import json

import mcp_types as types

import mcp.server.stdio
from mcp import types
from mcp.server import Server, ServerRequestContext


Expand Down Expand Up @@ -1920,8 +1925,9 @@ uv run examples/snippets/servers/lowlevel/direct_call_tool_result.py

import asyncio

import mcp_types as types

import mcp.server.stdio
from mcp import types
from mcp.server import Server, ServerRequestContext


Expand Down Expand Up @@ -1991,7 +1997,8 @@ For servers that need to handle large datasets, the low-level server provides pa
```python
"""Example of implementing pagination with the low-level MCP server."""

from mcp import types
import mcp_types as types

from mcp.server import Server, ServerRequestContext

# Sample data to paginate
Expand Down Expand Up @@ -2037,9 +2044,10 @@ _Full example: [examples/snippets/servers/pagination_example.py](https://github.

import asyncio

from mcp_types import PaginatedRequestParams, Resource

from mcp.client.session import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client
from mcp.types import PaginatedRequestParams, Resource


async def list_all_resources() -> None:
Expand Down Expand Up @@ -2099,7 +2107,9 @@ uv run client
import asyncio
import os

from mcp import ClientSession, StdioServerParameters, types
import mcp_types as types

from mcp import ClientSession, StdioServerParameters
from mcp.client.context import ClientRequestContext
from mcp.client.stdio import stdio_client

Expand Down
10 changes: 5 additions & 5 deletions docs/experimental/tasks-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Call a tool as a task and poll for the result:

```python
from mcp.client.session import ClientSession
from mcp.types import CallToolResult
from mcp_types import CallToolResult

async with ClientSession(read, write) as session:
await session.initialize()
Expand Down Expand Up @@ -96,7 +96,7 @@ The elicitation callback (set during session creation) handles the actual user i
To handle elicitation requests from the server, provide a callback when creating the session:

```python
from mcp.types import ElicitRequestParams, ElicitResult
from mcp_types import ElicitRequestParams, ElicitResult

async def handle_elicitation(context, params: ElicitRequestParams) -> ElicitResult:
# Display the message to the user
Expand Down Expand Up @@ -125,7 +125,7 @@ async with ClientSession(
Similarly, handle sampling requests with a callback:

```python
from mcp.types import CreateMessageRequestParams, CreateMessageResult, TextContent
from mcp_types import CreateMessageRequestParams, CreateMessageResult, TextContent

async def handle_sampling(context, params: CreateMessageRequestParams) -> CreateMessageResult:
# In a real implementation, call your LLM here
Expand Down Expand Up @@ -207,7 +207,7 @@ Register task handlers to declare what task-augmented requests your client accep

```python
from mcp.client.experimental.task_handlers import ExperimentalTaskHandlers
from mcp.types import (
from mcp_types import (
CreateTaskResult, GetTaskResult, GetTaskPayloadResult,
TaskMetadata, ElicitRequestParams,
)
Expand Down Expand Up @@ -283,7 +283,7 @@ A client that handles all task scenarios:
import anyio
from mcp.client.session import ClientSession
from mcp.client.stdio import stdio_client
from mcp.types import CallToolResult, ElicitRequestParams, ElicitResult
from mcp_types import CallToolResult, ElicitRequestParams, ElicitResult


async def elicitation_callback(context, params: ElicitRequestParams) -> ElicitResult:
Expand Down
14 changes: 7 additions & 7 deletions docs/experimental/tasks-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The simplest way to add task support:
```python
from mcp.server import Server
from mcp.server.experimental.task_context import ServerTaskContext
from mcp.types import CallToolResult, CreateTaskResult, TextContent, Tool, ToolExecution, TASK_REQUIRED
from mcp_types import CallToolResult, CreateTaskResult, TextContent, Tool, ToolExecution, TASK_REQUIRED

server = Server("my-server")
server.experimental.enable_tasks() # Registers all task handlers automatically
Expand Down Expand Up @@ -58,7 +58,7 @@ That's it. `enable_tasks()` automatically:
Tools declare task support via the `execution.taskSupport` field:

```python
from mcp.types import Tool, ToolExecution, TASK_REQUIRED, TASK_OPTIONAL, TASK_FORBIDDEN
from mcp_types import Tool, ToolExecution, TASK_REQUIRED, TASK_OPTIONAL, TASK_FORBIDDEN

Tool(
name="my_tool",
Expand Down Expand Up @@ -199,7 +199,7 @@ async def work(task: ServerTaskContext) -> CallToolResult:
Tasks can request LLM completions from the client:

```python
from mcp.types import SamplingMessage, TextContent
from mcp_types import SamplingMessage, TextContent

async def work(task: ServerTaskContext) -> CallToolResult:
await task.update_status("Generating response...")
Expand Down Expand Up @@ -256,7 +256,7 @@ For production, implement `TaskStore` with persistent storage:

```python
from mcp.shared.experimental.tasks.store import TaskStore
from mcp.types import Task, TaskMetadata, Result
from mcp_types import Task, TaskMetadata, Result

class RedisTaskStore(TaskStore):
def __init__(self, redis_client):
Expand Down Expand Up @@ -299,7 +299,7 @@ A server with multiple task-supporting tools:
```python
from mcp.server import Server
from mcp.server.experimental.task_context import ServerTaskContext
from mcp.types import (
from mcp_types import (
CallToolResult, CreateTaskResult, TextContent, Tool, ToolExecution,
SamplingMessage, TASK_REQUIRED,
)
Expand Down Expand Up @@ -412,7 +412,7 @@ import uvicorn

from mcp.server import Server
from mcp.server.experimental.task_context import ServerTaskContext
from mcp.types import (
from mcp_types import (
CallToolResult, CreateTaskResult, TextContent, Tool, ToolExecution, TASK_REQUIRED,
)

Expand Down Expand Up @@ -468,7 +468,7 @@ Test task functionality with the SDK's testing utilities:
import pytest
import anyio
from mcp.client.session import ClientSession
from mcp.types import CallToolResult
from mcp_types import CallToolResult


@pytest.mark.anyio
Expand Down
6 changes: 3 additions & 3 deletions docs/experimental/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Server Client
When augmenting a request with task execution, include `TaskMetadata`:

```python
from mcp.types import TaskMetadata
from mcp_types import TaskMetadata

task = TaskMetadata(ttl=60000) # TTL in milliseconds
```
Expand Down Expand Up @@ -143,7 +143,7 @@ The SDK manages these automatically when you enable task support.
```python
from mcp.server import Server
from mcp.server.experimental.task_context import ServerTaskContext
from mcp.types import CallToolResult, TextContent, TASK_REQUIRED
from mcp_types import CallToolResult, TextContent, TASK_REQUIRED

server = Server("my-server")
server.experimental.enable_tasks() # One-line setup
Expand All @@ -165,7 +165,7 @@ async def handle_tool(name: str, arguments: dict):

```python
from mcp.client.session import ClientSession
from mcp.types import CallToolResult
from mcp_types import CallToolResult

async with ClientSession(read, write) as session:
await session.initialize()
Expand Down
Loading