import asyncio
from typing import Any
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
import mcp.types as types
async def main() -> None:
params = StdioServerParameters(
command="python3",
args=["-m", "mcp_terminal.server"],
)
async with stdio_client(params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
tool_names = [t.name for t in tools.tools]
print({"tools": tool_names})
if "run_command" not in tool_names:
raise RuntimeError("Tool 'run_command' не найден на сервере terminal-mcp")
result = await session.call_tool(
"run_command",
arguments={"command": "echo hello from terminal-mcp", "shell": "bash"},
)
# Вывести как текстовый или структурированный ответ
if result.content:
block: Any = result.content[0]
if isinstance(block, types.TextContent):
print({"result_text": block.text})
else:
print({"result_block": str(block)})
if result.structuredContent is not None:
print({"structured": result.structuredContent})
if __name__ == "__main__":
asyncio.run(main())