Skip to content
Merged
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
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,7 @@ The Context object provides the following capabilities:
- `ctx.session` - Access to the underlying session for advanced communication (see [Session Properties and Methods](#session-properties-and-methods))
- `ctx.request_context` - Access to request-specific data and lifespan resources (see [Request Context Properties](#request-context-properties))
- `await ctx.debug(message)` - Send debug log message
- `await ctx.info(message)` - Send info log message
- `await ctx.info(message)` - Send info log message
- `await ctx.warning(message)` - Send warning log message
- `await ctx.error(message)` - Send error log message
- `await ctx.log(level, message, logger_name=None)` - Send log with custom level
Expand Down Expand Up @@ -1110,13 +1110,13 @@ The session object accessible via `ctx.session` provides advanced control over c
async def notify_data_update(resource_uri: str, ctx: Context) -> str:
"""Update data and notify clients of the change."""
# Perform data update logic here

# Notify clients that this specific resource changed
await ctx.session.send_resource_updated(AnyUrl(resource_uri))

# If this affects the overall resource list, notify about that too
await ctx.session.send_resource_list_changed()

return f"Updated {resource_uri} and notified clients"
```

Expand Down Expand Up @@ -1145,11 +1145,11 @@ def query_with_config(query: str, ctx: Context) -> str:
"""Execute a query using shared database and configuration."""
# Access typed lifespan context
app_ctx: AppContext = ctx.request_context.lifespan_context

# Use shared resources
connection = app_ctx.db
settings = app_ctx.config

# Execute query with configuration
result = connection.execute(query, timeout=settings.query_timeout)
return str(result)
Expand Down Expand Up @@ -1644,7 +1644,7 @@ from contextlib import asynccontextmanager
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down Expand Up @@ -1758,7 +1758,7 @@ uv run examples/snippets/servers/lowlevel/basic.py
import asyncio

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down Expand Up @@ -1837,7 +1837,7 @@ import asyncio
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down Expand Up @@ -1939,7 +1939,7 @@ import asyncio
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

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

import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server

# Initialize the server
Expand Down
22 changes: 11 additions & 11 deletions README.v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,7 @@ The Context object provides the following capabilities:
- `ctx.session` - Access to the underlying session for advanced communication (see [Session Properties and Methods](#session-properties-and-methods))
- `ctx.request_context` - Access to request-specific data and lifespan resources (see [Request Context Properties](#request-context-properties))
- `await ctx.debug(message)` - Send debug log message
- `await ctx.info(message)` - Send info log message
- `await ctx.info(message)` - Send info log message
- `await ctx.warning(message)` - Send warning log message
- `await ctx.error(message)` - Send error log message
- `await ctx.log(level, message, logger_name=None)` - Send log with custom level
Expand Down Expand Up @@ -1111,13 +1111,13 @@ The session object accessible via `ctx.session` provides advanced control over c
async def notify_data_update(resource_uri: str, ctx: Context) -> str:
"""Update data and notify clients of the change."""
# Perform data update logic here

# Notify clients that this specific resource changed
await ctx.session.send_resource_updated(AnyUrl(resource_uri))

# If this affects the overall resource list, notify about that too
await ctx.session.send_resource_list_changed()

return f"Updated {resource_uri} and notified clients"
```

Expand Down Expand Up @@ -1146,11 +1146,11 @@ def query_with_config(query: str, ctx: Context) -> str:
"""Execute a query using shared database and configuration."""
# Access typed lifespan context
app_ctx: AppContext = ctx.request_context.lifespan_context

# Use shared resources
connection = app_ctx.db
settings = app_ctx.config

# Execute query with configuration
result = connection.execute(query, timeout=settings.query_timeout)
return str(result)
Expand Down Expand Up @@ -1645,7 +1645,7 @@ from contextlib import asynccontextmanager
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down Expand Up @@ -1759,7 +1759,7 @@ uv run examples/snippets/servers/lowlevel/basic.py
import asyncio

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down Expand Up @@ -1838,7 +1838,7 @@ import asyncio
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down Expand Up @@ -1940,7 +1940,7 @@ import asyncio
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

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

import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server

# Initialize the server
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import anyio
import click
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server
from starlette.requests import Request

Expand Down
2 changes: 1 addition & 1 deletion examples/servers/simple-prompt/mcp_simple_prompt/server.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import anyio
import click
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server
from starlette.requests import Request

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import anyio
import click
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server
from mcp.server.lowlevel.helper_types import ReadResourceContents
from starlette.requests import Request
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

import anyio
import click
import mcp.types as types
import uvicorn
from mcp import types
from mcp.server.lowlevel import Server
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
from starlette.applications import Starlette
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import anyio
import click
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
from starlette.applications import Starlette
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
from typing import Any

import click
import mcp.types as types
import uvicorn
from mcp import types
from mcp.server.experimental.task_context import ServerTaskContext
from mcp.server.lowlevel import Server
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
Expand Down
2 changes: 1 addition & 1 deletion examples/servers/simple-task/mcp_simple_task/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@

import anyio
import click
import mcp.types as types
import uvicorn
from mcp import types
from mcp.server.experimental.task_context import ServerTaskContext
from mcp.server.lowlevel import Server
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
Expand Down
2 changes: 1 addition & 1 deletion examples/servers/simple-tool/mcp_simple_tool/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import anyio
import click
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server
from mcp.shared._httpx_utils import create_mcp_http_client
from starlette.requests import Request
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import anyio
import click
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
from starlette.applications import Starlette
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down
2 changes: 1 addition & 1 deletion examples/snippets/servers/lowlevel/basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import asyncio

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down
2 changes: 1 addition & 1 deletion examples/snippets/servers/lowlevel/lifespan.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down
2 changes: 1 addition & 1 deletion examples/snippets/servers/lowlevel/structured_output.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import Any

import mcp.server.stdio
import mcp.types as types
from mcp import types
from mcp.server.lowlevel import NotificationOptions, Server
from mcp.server.models import InitializationOptions

Expand Down
2 changes: 1 addition & 1 deletion examples/snippets/servers/pagination_example.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Example of implementing pagination with MCP server decorators."""

import mcp.types as types
from mcp import types
from mcp.server.lowlevel import Server

# Initialize the server
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/client/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import anyio
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream

import mcp.types as types
from mcp import types
from mcp.client.session import ClientSession
from mcp.client.sse import sse_client
from mcp.client.stdio import StdioServerParameters, stdio_client
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/client/experimental/task_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

from pydantic import TypeAdapter

import mcp.types as types
from mcp import types
from mcp.shared._context import RequestContext
from mcp.shared.session import RequestResponder

Expand Down
2 changes: 1 addition & 1 deletion src/mcp/client/experimental/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from collections.abc import AsyncIterator
from typing import TYPE_CHECKING, Any, TypeVar

import mcp.types as types
from mcp import types
from mcp.shared.experimental.tasks.polling import poll_until_terminal
from mcp.types._types import RequestParamsMeta

Expand Down
2 changes: 1 addition & 1 deletion src/mcp/client/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
from pydantic import TypeAdapter

import mcp.types as types
from mcp import types
from mcp.client.experimental import ExperimentalClientFeatures
from mcp.client.experimental.task_handlers import ExperimentalTaskHandlers
from mcp.shared._context import RequestContext
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/client/sse.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from httpx_sse import aconnect_sse
from httpx_sse._exceptions import SSEError

import mcp.types as types
from mcp import types
from mcp.shared._httpx_utils import McpHttpClientFactory, create_mcp_http_client
from mcp.shared.message import SessionMessage

Expand Down
2 changes: 1 addition & 1 deletion src/mcp/client/stdio.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from anyio.streams.text import TextReceiveStream
from pydantic import BaseModel, Field

import mcp.types as types
from mcp import types
from mcp.os.posix.utilities import terminate_posix_process_tree
from mcp.os.win32.utilities import (
FallbackProcess,
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/server/experimental/session_features.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from collections.abc import AsyncIterator
from typing import TYPE_CHECKING, Any, TypeVar

import mcp.types as types
from mcp import types
from mcp.server.validation import validate_sampling_tools, validate_tool_use_result_messages
from mcp.shared.experimental.tasks.capabilities import (
require_task_augmented_elicitation,
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/server/lowlevel/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ async def main():
from starlette.routing import Mount, Route
from typing_extensions import TypeVar

import mcp.types as types
from mcp import types
from mcp.server.auth.middleware.auth_context import AuthContextMiddleware
from mcp.server.auth.middleware.bearer_auth import BearerAuthBackend, RequireAuthMiddleware
from mcp.server.auth.provider import OAuthAuthorizationServerProvider, TokenVerifier
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/server/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ async def handle_list_prompts(ctx: RequestContext) -> list[types.Prompt]:
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
from pydantic import AnyUrl, TypeAdapter

import mcp.types as types
from mcp import types
from mcp.server.experimental.session_features import ExperimentalServerSessionFeatures
from mcp.server.models import InitializationOptions
from mcp.server.validation import validate_sampling_tools, validate_tool_use_result_messages
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/server/sse.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ async def handle_sse(request):
from starlette.responses import Response
from starlette.types import Receive, Scope, Send

import mcp.types as types
from mcp import types
from mcp.server.transport_security import (
TransportSecurityMiddleware,
TransportSecuritySettings,
Expand Down
Loading