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
67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
"""cd to the `examples/snippets` directory and run:
|
|
uv run display-utilities-client
|
|
"""
|
|
|
|
import asyncio
|
|
import os
|
|
|
|
from mcp import ClientSession, StdioServerParameters
|
|
from mcp.client.stdio import stdio_client
|
|
from mcp.shared.metadata_utils import get_display_name
|
|
|
|
# Create server parameters for stdio connection
|
|
server_params = StdioServerParameters(
|
|
command="uv", # Using uv to run the server
|
|
args=["run", "server", "mcpserver_quickstart", "stdio"],
|
|
env={"UV_INDEX": os.environ.get("UV_INDEX", "")},
|
|
)
|
|
|
|
|
|
async def display_tools(session: ClientSession):
|
|
"""Display available tools with human-readable names"""
|
|
tools_response = await session.list_tools()
|
|
|
|
for tool in tools_response.tools:
|
|
# get_display_name() returns the title if available, otherwise the name
|
|
display_name = get_display_name(tool)
|
|
print(f"Tool: {display_name}")
|
|
if tool.description:
|
|
print(f" {tool.description}")
|
|
|
|
|
|
async def display_resources(session: ClientSession):
|
|
"""Display available resources with human-readable names"""
|
|
resources_response = await session.list_resources()
|
|
|
|
for resource in resources_response.resources:
|
|
display_name = get_display_name(resource)
|
|
print(f"Resource: {display_name} ({resource.uri})")
|
|
|
|
templates_response = await session.list_resource_templates()
|
|
for template in templates_response.resource_templates:
|
|
display_name = get_display_name(template)
|
|
print(f"Resource Template: {display_name}")
|
|
|
|
|
|
async def run():
|
|
"""Run the display utilities example."""
|
|
async with stdio_client(server_params) as (read, write):
|
|
async with ClientSession(read, write) as session:
|
|
# Initialize the connection
|
|
await session.initialize()
|
|
|
|
print("=== Available Tools ===")
|
|
await display_tools(session)
|
|
|
|
print("\n=== Available Resources ===")
|
|
await display_resources(session)
|
|
|
|
|
|
def main():
|
|
"""Entry point for the display utilities client."""
|
|
asyncio.run(run())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|