Rebuild the docs around tested examples; shrink README.v2.md to a pitch (#2978)
This commit is contained in:
parent
4caa41f6d5
commit
411a6d3980
5 changed files with 9510 additions and 2639 deletions
0
docs_src/session_groups/__init__.py
Normal file
0
docs_src/session_groups/__init__.py
Normal file
15
docs_src/session_groups/tutorial001.py
Normal file
15
docs_src/session_groups/tutorial001.py
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
from mcp.server import MCPServer
|
||||
|
||||
mcp = MCPServer("Library")
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def search(query: str) -> str:
|
||||
"""Search the library catalog."""
|
||||
return f"3 books match {query!r}."
|
||||
|
||||
|
||||
@mcp.resource("library://hours")
|
||||
def hours() -> str:
|
||||
"""When the library is open."""
|
||||
return "Mon-Fri 09:00-17:00"
|
||||
9
docs_src/session_groups/tutorial002.py
Normal file
9
docs_src/session_groups/tutorial002.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
from mcp.server import MCPServer
|
||||
|
||||
mcp = MCPServer("Web")
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def search(query: str) -> str:
|
||||
"""Search the web."""
|
||||
return f"12 pages match {query!r}."
|
||||
19
docs_src/session_groups/tutorial003.py
Normal file
19
docs_src/session_groups/tutorial003.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import asyncio
|
||||
|
||||
from mcp import ClientSessionGroup, StdioServerParameters
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
library = StdioServerParameters(command="uv", args=["run", "mcp", "run", "library_server.py"])
|
||||
web = StdioServerParameters(command="uv", args=["run", "mcp", "run", "web_server.py"])
|
||||
|
||||
async with ClientSessionGroup() as group:
|
||||
await group.connect_to_server(library)
|
||||
await group.connect_to_server(web)
|
||||
|
||||
result = await group.call_tool("search", {"query": "model context protocol"})
|
||||
print(result.structured_content)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
26
docs_src/session_groups/tutorial004.py
Normal file
26
docs_src/session_groups/tutorial004.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import asyncio
|
||||
|
||||
from mcp_types import Implementation
|
||||
|
||||
from mcp import ClientSessionGroup, StdioServerParameters
|
||||
|
||||
|
||||
def by_server(name: str, server_info: Implementation) -> str:
|
||||
return f"{server_info.name}.{name}"
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
library = StdioServerParameters(command="uv", args=["run", "mcp", "run", "library_server.py"])
|
||||
web = StdioServerParameters(command="uv", args=["run", "mcp", "run", "web_server.py"])
|
||||
|
||||
async with ClientSessionGroup(component_name_hook=by_server) as group:
|
||||
await group.connect_to_server(library)
|
||||
await group.connect_to_server(web)
|
||||
|
||||
print(sorted(group.tools))
|
||||
result = await group.call_tool("Web.search", {"query": "model context protocol"})
|
||||
print(result.structured_content)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Loading…
Reference in a new issue