diff --git a/examples/servers/simple-prompt/README.md b/examples/servers/simple-prompt/README.md index 20acad5..3373052 100644 --- a/examples/servers/simple-prompt/README.md +++ b/examples/servers/simple-prompt/README.md @@ -8,10 +8,10 @@ Start the server using either stdio (default) or SSE transport: ```bash # Using stdio transport (default) -mcp-simple-prompt +uv mcp-simple-prompt # Using SSE transport on custom port -mcp-simple-prompt --transport sse --port 8000 +uv run mcp-simple-prompt --transport sse --port 8000 ``` The server exposes a prompt named "simple" that accepts two optional arguments: @@ -21,22 +21,35 @@ The server exposes a prompt named "simple" that accepts two optional arguments: ## Example -Using the MCP client, you can retrieve the prompt like this: +Using the MCP client, you can retrieve the prompt like this using the STDIO transport: ```python -from mcp.client import ClientSession +import asyncio +from mcp.client.session import ClientSession +from mcp.client.stdio import StdioServerParameters, stdio_client -async with ClientSession() as session: - await session.initialize() - # List available prompts - prompts = await session.list_prompts() - print(prompts) +async def main(): + async with stdio_client( + StdioServerParameters(command="uv", args=["run", "mcp-simple-prompt"]) + ) as (read, write): + async with ClientSession(read, write) as session: + await session.initialize() - # Get the prompt with arguments - prompt = await session.get_prompt("simple", { - "context": "User is a software developer", - "topic": "Python async programming" - }) - print(prompt) + # List available prompts + prompts = await session.list_prompts() + print(prompts) + + # Get the prompt with arguments + prompt = await session.get_prompt( + "simple", + { + "context": "User is a software developer", + "topic": "Python async programming", + }, + ) + print(prompt) + + +asyncio.run(main()) ``` diff --git a/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py b/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py index 17889d0..8b345fa 100644 --- a/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py +++ b/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py @@ -1,5 +1,5 @@ import sys -from server import main +from .server import main sys.exit(main()) diff --git a/examples/servers/simple-prompt/mcp_simple_prompt/server.py b/examples/servers/simple-prompt/mcp_simple_prompt/server.py index 55b58b5..f22bdc5 100644 --- a/examples/servers/simple-prompt/mcp_simple_prompt/server.py +++ b/examples/servers/simple-prompt/mcp_simple_prompt/server.py @@ -37,11 +37,7 @@ def create_messages( return messages -@click.group() -def cli(): - pass - - +@click.command() @click.option("--port", default=8000, help="Port to listen on for SSE") @click.option( "--transport", diff --git a/examples/servers/simple-resource/README.md b/examples/servers/simple-resource/README.md index 28569a7..df674e9 100644 --- a/examples/servers/simple-resource/README.md +++ b/examples/servers/simple-resource/README.md @@ -8,29 +8,41 @@ Start the server using either stdio (default) or SSE transport: ```bash # Using stdio transport (default) -mcp-simple-resource +uv run mcp-simple-resource # Using SSE transport on custom port -mcp-simple-resource --transport sse --port 8000 +uv run mcp-simple-resource --transport sse --port 8000 ``` The server exposes some basic text file resources that can be read by clients. ## Example -Using the MCP client, you can read the resources like this: +Using the MCP client, you can retrieve resources like this using the STDIO transport: ```python -from mcp.client import ClientSession +import asyncio +from mcp.types import AnyUrl +from mcp.client.session import ClientSession +from mcp.client.stdio import StdioServerParameters, stdio_client -async with ClientSession() as session: - await session.initialize() - # List available resources - resources = await session.list_resources() - print(resources) +async def main(): + async with stdio_client( + StdioServerParameters(command="uv", args=["run", "mcp-simple-resource"]) + ) as (read, write): + async with ClientSession(read, write) as session: + await session.initialize() + + # List available resources + resources = await session.list_resources() + print(resources) + + # Get a specific resource + resource = await session.read_resource(AnyUrl("file:///greeting.txt")) + print(resource) + + +asyncio.run(main()) - # Read a specific resource - resource = await session.read_resource(resources[0].uri) - print(resource) ``` diff --git a/examples/servers/simple-resource/mcp_simple_resource/server.py b/examples/servers/simple-resource/mcp_simple_resource/server.py index 520c887..a7395e4 100644 --- a/examples/servers/simple-resource/mcp_simple_resource/server.py +++ b/examples/servers/simple-resource/mcp_simple_resource/server.py @@ -10,12 +10,7 @@ SAMPLE_RESOURCES = { } -@click.group() -def cli(): - pass - - -@cli.command() +@click.command() @click.option("--port", default=8000, help="Port to listen on for SSE") @click.option( "--transport", diff --git a/examples/servers/simple-tool/README.md b/examples/servers/simple-tool/README.md index a444e07..06020b4 100644 --- a/examples/servers/simple-tool/README.md +++ b/examples/servers/simple-tool/README.md @@ -1,4 +1,3 @@ -# MCP Simple Tool A simple MCP server that exposes a website fetching tool. @@ -8,10 +7,10 @@ Start the server using either stdio (default) or SSE transport: ```bash # Using stdio transport (default) -mcp-simple-tool +uv run mcp-simple-tool # Using SSE transport on custom port -mcp-simple-tool --transport sse --port 8000 +uv run mcp-simple-tool --transport sse --port 8000 ``` The server exposes a tool named "fetch" that accepts one required argument: @@ -20,21 +19,30 @@ The server exposes a tool named "fetch" that accepts one required argument: ## Example -Using the MCP client, you can use the tool like this: +Using the MCP client, you can use the tool like this using the STDIO transport: ```python -from mcp.client import ClientSession +import asyncio +from mcp.client.session import ClientSession +from mcp.client.stdio import StdioServerParameters, stdio_client -async with ClientSession() as session: - await session.initialize() - # List available tools - tools = await session.list_tools() - print(tools) +async def main(): + async with stdio_client( + StdioServerParameters(command="uv", args=["run", "mcp-simple-tool"]) + ) as (read, write): + async with ClientSession(read, write) as session: + await session.initialize() + + # List available tools + tools = await session.list_tools() + print(tools) + + # Call the fetch tool + result = await session.call_tool("fetch", {"url": "https://example.com"}) + print(result) + + +asyncio.run(main()) - # Call the fetch tool - result = await session.call_tool("fetch", { - "url": "https://example.com" - }) - print(result) ``` diff --git a/examples/servers/simple-tool/mcp_simple_tool/server.py b/examples/servers/simple-tool/mcp_simple_tool/server.py index a0f5b7b..4343f77 100644 --- a/examples/servers/simple-tool/mcp_simple_tool/server.py +++ b/examples/servers/simple-tool/mcp_simple_tool/server.py @@ -17,12 +17,7 @@ async def fetch_website( return [types.TextContent(type="text", text=response.text)] -@click.group() -def cli(): - pass - - -@cli.command() +@click.command() @click.option("--port", default=8000, help="Port to listen on for SSE") @click.option( "--transport", diff --git a/uv.lock b/uv.lock index b3fb27d..38c6dc1 100644 --- a/uv.lock +++ b/uv.lock @@ -171,7 +171,7 @@ wheels = [ [[package]] name = "mcp" -version = "1.0.0.dev0" +version = "1.1.1.dev0" source = { editable = "." } dependencies = [ { name = "anyio" },