49b9bb6724
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) Waiting to run
32 lines
768 B
Python
32 lines
768 B
Python
from mcp_types import Tool
|
|
|
|
from mcp import Client
|
|
from mcp.server import MCPServer
|
|
|
|
mcp = MCPServer("Bookshop")
|
|
|
|
|
|
@mcp.tool()
|
|
def search_books(query: str) -> str:
|
|
"""Search the catalog by title or author."""
|
|
return f"Found 3 books matching {query!r}."
|
|
|
|
|
|
@mcp.tool()
|
|
def reserve_book(title: str) -> str:
|
|
"""Put a book on hold."""
|
|
return f"Reserved {title!r}."
|
|
|
|
|
|
async def main() -> None:
|
|
async with Client(mcp) as client:
|
|
tools: list[Tool] = []
|
|
cursor: str | None = None
|
|
while True:
|
|
page = await client.list_tools(cursor=cursor)
|
|
tools.extend(page.tools)
|
|
if page.next_cursor is None:
|
|
break
|
|
cursor = page.next_cursor
|
|
print([tool.name for tool in tools])
|