19 lines
867 B
Python
19 lines
867 B
Python
from mcp import ClientSession,StdioServerParameters
|
||||
|
|
from mcp.client.stdio import stdio_client
|
|||
|
|
|
|||
|
|
class SimpleClient:
|
|||
|
|
def __init__(self,command:str,args:list[str],env:dict=None):
|
|||
|
|
# 指定要启动的工具和参数
|
|||
|
|
self.params = StdioServerParameters(command=command,args=args,env=env)
|
|||
|
|
|
|||
|
|
async def run_once(self,tool_name:str,tool_args:dict):
|
|||
|
|
# 语法糖: async with 自动帮我们 打开连接 -> 运行 -> 关闭连接
|
|||
|
|
async with stdio_client(self.params) as (read,write):
|
|||
|
|
# 建立父子进程管道(stdin/stdout)
|
|||
|
|
async with ClientSession(read,write) as session:
|
|||
|
|
# 用JSON-RPC与工具对话
|
|||
|
|
await session.initialize()
|
|||
|
|
|
|||
|
|
# 直接调用工具
|
|||
|
|
result = await session.call_tool(tool_name,tool_args)
|
|||
|
|
return result.content[0].text
|