MCP 客户端
使用 Lybic Python SDK 的 MCP 客户端指南。
MCP 是 Lybic 的模型上下文协议(MCP)及其关联 RESTful API 的客户端。
MCP 客户端使用
您可以使用 MCP 通过 lybic.Mcp 执行操作。
class MCP:
async def call_tool_async(self,
mcp_server_id: str,
tool_name: str = "computer-use",
tool_args: dict = None):
"""
在 mcp 服务器上调用工具
:param mcp_server_id:
:param tool_name:
:param tool_args:
:return tool_result:
"""call_tool_async 方法
mcp_server_id
您可以从网站或 SDK 获取 mcp_server_id。
-
网站:
- 打开 Lybic Web 应用程序的控制台。
- 在左侧找到
MCP 服务器。 - 您将看到 MCP 服务器 ID。
-
SDK:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: list_result = await client.mcp.list() for mcp_server in list_result.root: print(mcp_server.id) if __name__ == '__main__': asyncio.run(main())
tool_name
您要运行的 MCP 工具的名称。
tool_args
工具参数字典,例如:
args = {
"action": "click",
"coordinate": [{x}, {y}],
"text": ",".join(hold_keys) if hold_keys else None
}返回值
tool_result.content 包含工具执行的结果。
支持的操作和示例
MCP 支持各种操作。以下是每个操作的详细信息,包括参数和示例。
screenShot
截取屏幕截图。
-
参数:无
-
示例:
import asyncio import base64 from io import BytesIO from PIL import Image from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='server_id',tool_args={"action": "screenShot"}) img_b64 = result.content[0].data img_bytes = base64.b64decode(img_b64) i = Image.open(BytesIO(img_bytes)) i.show() print(result) if __name__ == '__main__': asyncio.run(main())
type
在键盘上输入文本字符串。
-
参数:
text(str):要输入的文本字符串(支持绝大多数 Unicode 字符)。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "type", "text": "This is an English text, 这是一个中文文本, 이것은 한국어 문자열이다, and هذه سلسلة من السلسلة العربية."}) print(result) if __name__ == '__main__': asyncio.run(main())
click
在指定坐标处单击鼠标左键。
-
参数:
coordinate(list[int, int]):要单击的[x, y]像素坐标。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "click", "coordinate": [100, 200]}) print(result) if __name__ == '__main__': asyncio.run(main())
rightClick
在指定坐标处单击鼠标右键。
-
参数:
coordinate(list[int, int]):要单击的[x, y]像素坐标。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "rightClick", "coordinate": [100, 200]}) print(result) if __name__ == '__main__': asyncio.run(main())
doubleClick
在指定坐标处双击鼠标左键。
-
参数:
coordinate(list[int, int]):要双击的[x, y]像素坐标。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "doubleClick", "coordinate": [100, 200]}) print(result) if __name__ == '__main__': asyncio.run(main())
middleClick
在指定坐标处单击鼠标中键。
-
参数:
coordinate(list[int, int]):要单击的[x, y]像素坐标。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "middleClick", "coordinate": [100, 200]}) print(result) if __name__ == '__main__': asyncio.run(main())
move
将光标移动到指定坐标。
-
参数:
coordinate(list[int, int]):要将光标移动到的[x, y]像素坐标。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "move", "coordinate": [100, 200]}) print(result) if __name__ == '__main__': asyncio.run(main())
leftClickDrag
从起始坐标单击并拖动光标到结束坐标。
-
参数:
startCoordinate(list[int, int]):开始拖动的[x, y]坐标。coordinate(list[int, int]):结束拖动的[x, y]坐标。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "leftClickDrag", "startCoordinate": [100, 200], "coordinate": [500, 600]}) print(result) if __name__ == '__main__': asyncio.run(main())
scroll
在指定坐标处滚动屏幕。
-
参数:
scrollDirection(str):滚动方向。可以是"up"、"down"、"left"或"right"。scrollAmount(int):滚动的"点击"次数。coordinate(list[int, int], 可选):滚动操作应发生的[x, y]坐标。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: # 向下滚动 5 次点击 result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "scroll", "scrollDirection": "down", "scrollAmount": 5}) print(result) if __name__ == '__main__': asyncio.run(main())
keyPress
按下一个键或组合键。支持 xdotool 键语法。
-
参数:
text(str):要按下的键或组合键(例如,"a"、"Return"、"alt+Tab"、"ctrl+s")。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: # 按 Ctrl+S 保存 result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "keyPress", "text": "ctrl+s"}) print(result) if __name__ == '__main__': asyncio.run(main())
cursorPosition
获取光标的当前 [x, y] 坐标。
-
参数:无
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "cursorPosition"}) print(f"光标位置: {result.content}") if __name__ == '__main__': asyncio.run(main())
wait
等待指定的持续时间。
-
参数:
duration(float):等待的持续时间(秒)。
-
示例:
import asyncio from lybic import LybicClient async def main(): async with LybicClient() as client: # 等待 2.5 秒 result = await client.mcp.call_tool_async(mcp_server_id='YOUR_MCP_SERVER_ID', tool_args={"action": "wait", "duration": 2.5}) print(f"光标位置: {result.content}") if __name__ == '__main__': asyncio.run(main())
MCP 服务器管理
列出所有 MCP 服务器
- 方法:
list() - 返回:
dto.ListMcpServerResponse
import asyncio
from lybic import LybicClient
async def main():
async with LybicClient() as client:
list_result = await client.mcp.list()
for mcp_server in list_result.root:
print(mcp_server.id)
if __name__ == '__main__':
asyncio.run(main())创建 MCP 服务器
- 方法:
create(data: dto.CreateMcpServerDto) - 参数:
name(str):MCP 服务器的名称。projectId(str, 可选):服务器所属的项目。
- 返回:
dto.McpServerResponseDto
import asyncio
from lybic import LybicClient, dto
async def main():
async with LybicClient() as client:
new_server = await client.mcp.create(dto.CreateMcpServerDto(name="my-mcp-server"))
# 或
# new_server = = await mcp.create(name="my-mcp-server")
print(new_server)
if __name__ == '__main__':
asyncio.run(main())获取默认 MCP 服务器
- 方法:
get_default() - 返回:
dto.McpServerResponseDto
import asyncio
from lybic import LybicClient
async def main():
async with LybicClient() as client:
default_server = await client.mcp.get_default()
print(default_server)
if __name__ == '__main__':
asyncio.run(main())删除 MCP 服务器
- 方法:
delete(mcp_server_id: str) - 参数:
mcp_server_id(str):要删除的 MCP 服务器 ID。
- 返回:
None
import asyncio
from lybic import LybicClient
async def main():
async with LybicClient() as client:
await client.mcp.delete(mcp_server_id="MCP-xxxx")
if __name__ == '__main__':
asyncio.run(main())将 MCP 服务器设置为沙箱
- 方法:
set_sandbox(mcp_server_id: str, sandbox_id: str) - 参数:
mcp_server_id(str):MCP 服务器 ID。sandbox_id(str):要连接 MCP 服务器的沙箱 ID。
- 返回:
None
import asyncio
from lybic import LybicClient
async def main():
async with LybicClient() as client:
await client.mcp.set_sandbox(mcp_server_id="MCP-xxxx", sandbox_id="SBX-xxxx")
if __name__ == '__main__':
asyncio.run(main())