MCP 工具

YAMA 内置 MCP 服务端,让本地大模型通过自然语言调用你的主控能力。

📌 版本要求: 主控(服务端)1.3.9 及以上开始支持 MCP 工具; 本页列出的 53 个工具需主控升级到 1.4.2(下一个版本)及以上。 其中结构化错误回报、文件搜索修复、远程交谈窗口等能力还需要同时把客户端升级到 1.4.2 —— 老客户端仍可用,但失败会退化为超时,搜索深目录可能出错。
🆕 1.4.2 新增(自 1.4.1 起): 连接管理(列表 / 断开)、主机管理 14 个工具(进程 / 窗口 / 网络状态 / 软件 / 浏览记录 / 收藏夹 / Win32 与驱动服务 / 计划任务 / HOSTS,以及冻解进程 / 控窗 / 控服务 / 跑任务)、 远程交谈 4 个工具、键盘记录、文件搜索 search_file、服务端状态 get_server_status、 离线主机与批量查询(list_all_hosts、ids 最多 50 台)、备注与关注等级写入、 审计日志分页 / 过滤、结构化错误码(-32009 / -32010)。 工具从 27 个扩展到 53 个,调用超时后也不会再在主控弹出对话框。

什么是 MCP

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 提出的开放协议,用于在大模型与外部工具、 数据源之间建立标准化连接。YAMA 主控内置了一个 MCP 服务端,把远程管理能力(查主机、看进程、截屏、读日志、执行命令、操控桌面、管理主机等) 封装成一组标准工具。把这些工具挂到本地大模型(如 Claude Desktop)之后,模型就能理解你的自然语言指令, 自动挑选并调用对应工具,完成原本需要手动点来点去的操作。

如何使用

  1. 1. 在 YAMA 中启用 MCP。 打开主控 →「扩展 → MCP设置」,勾选「启用 MCP」,确认端口(默认 6544)、 绑定地址(默认 127.0.0.1)与 Token(首次打开会自动预填一个随机值)。 需要写能力时,再按下方「权限与开关」勾选对应开关。保存后需重启 YAMA 生效。 Token 也可通过环境变量 YAMA_MCP_TOKEN 覆盖(优先级更高)。
  2. 2. 接入本地大模型。 把 MCP 服务端地址(http://127.0.0.1:6544/mcp)与 Token(Bearer 鉴权) 填到你的 MCP 客户端配置里(Claude Desktop、Cline 等)。
  3. 3. 用自然语言完成操作。 之后直接和模型对话,例如「帮我看看有哪些机器在线」——模型会调用 list_online_hosts 并把结果组织成可读的回答。
🔒 安全提示: MCP 服务默认只监听本机 127.0.0.1,请求需携带 Bearer Token 鉴权;请勿将端口直接暴露到公网。 主机管理中的浏览记录、收藏夹、HOSTS 与键盘记录都属于隐私数据,只应在你拥有或获明确授权的设备上开启。

支持的工具

共 53 个工具,分 11 组。其中 15 个只读工具默认可用, 其余按组受「MCP 设置」里的开关控制(见下方「权限与开关」)。 工具只在对应开关打开时才会出现在 tools/list 里;开关关着时模型根本看不到它们,或调用被直接以 -32006 拒绝。

工具说明示例(自然语言)
主机库与审计 6 个 默认可用
只读,默认可用,无需任何开关。
list_online_hosts
列出在线主机
返回所有在线主机的实时信息(计算机名、IP、操作系统、版本、备注、分组、活动窗口、延迟、是否走 TLS),支持按分组 / 系统 / 客户端类型过滤与分页。
  • “现在有哪些机器在线?”
  • “把延迟最高的几台列出来。”
search_hosts
搜索主机
按计算机名 / 备注、IP、分组、操作系统组合过滤主机;传 online=false 可查「连过但当前离线」的历史主机。
  • “找一下 IP 含 10.0.0 的机器。”
  • “「广州」分组里有哪些 Windows 主机?”
list_all_hosts
全部主机(含离线)
在线主机 + 主机库里的历史离线主机。离线项只有最后登录时间与安装时间,没有实时字段;另带 authStatus 授权状态。
  • “我一共有多少台设备?”
  • “上周连过、今天没上线的机器有哪些?”
get_host_detail
主机详情
返回主机的详细信息(ID、计算机名、IP、操作系统、备注、分组、活动窗口、屏幕分辨率、客户端类型等)。传 ids 可一次查最多 50 台。
  • “这台机器的屏幕分辨率是多少?”
  • “看看这几台的客户端类型和版本。”
get_audit_log
服务端审计日志
返回服务端主界面的消息 / 审计日志(上线 / 下线、操作结果、告警、策略拒绝等,保留最近 1000 条),支持按类型与关键字过滤、分页。
  • “最近有哪些机器上线 / 下线了?”
  • “有没有被策略拒掉的 MCP 调用?”
get_server_status
服务端状态
返回主控自身状态:版本与构建时间、运行时长、MCP 监听地址与端口、各功能开关、在线 / 离线主机数、在飞会话数、被封禁 IP 数。不返回 Token。
  • “现在开了哪些 MCP 能力?”
  • “服务端跑了多久?”
单机观测 9 个 默认可用
只读,默认可用;多数工具仅支持 Windows 主机。
list_processes
进程列表
返回指定主机的进程列表(PID、映像名称、架构、程序完整路径),支持分页;传 ids 可一次查最多 50 台。
  • “列出这台机的所有进程。”
  • “找出名字含 svchost 的进程。”
list_windows
窗口列表
返回指定主机的顶层窗口列表(句柄、窗口标题、状态、所属进程 PID),支持分页;传 ids 可批量查询。
  • “这台机现在开着哪些窗口?”
  • “把标题含「会议」的窗口列出来。”
get_activity_history
历史活动
返回指定主机的历史活动记录(前台窗口驻留时长,每行一条「[时间] [标题] 时长」)。
  • “这台机今天都在干什么?”
  • “过去一小时前台窗口换了哪些?”
get_screenshot
屏幕截图
截取指定主机的一帧屏幕,返回 base64 JPEG;max_width 可控制输出宽度(64–1920,默认按延迟自适应)。
  • “截个图看看这台机现在的画面。”
  • “给我一张 1920 宽的截图。”
list_files
列出文件
列举指定主机的目录:不传 path 返回驱动器列表,传 path 返回该目录一层内的文件 / 子目录(单次最多 500 条,含大小与修改时间)。
  • “这台机有哪些盘?”
  • “看看 C:\Windows\Temp 里有什么。”
search_file
文件搜索
在指定目录下按文件名递归搜索(仅 Windows 主机;不区分大小写,不含通配符按子串、含 * ? 按通配符)。结果边搜边收;到时限返回部分结果(finished=false),单次上限 5000 条 / 4 MB;可再按大小、修改时间在结果侧过滤,name_only 可精简输出。
  • “在 D:\Projects 下找所有 .log 文件。”
  • “C:\Users 下有没有名字含 report 的文件?”
list_registry
注册表查询
查询指定 Windows 主机的注册表:不传 path 返回 5 个根键,传 path(如 HKEY_LOCAL_MACHINE\Software)返回该键一层内的子键与值(名称 / 类型 / 数据)。
  • “看看 HKEY_LOCAL_MACHINE\Software 下有哪些键。”
  • “查一下这台机的开机自启动项。”
list_services
服务列表
返回指定 Windows 主机的服务列表(显示名、服务名、可执行文件路径、运行状态、启动类型)。客户端需以管理员权限运行,否则返回 -32010。
  • “这台机有哪些服务?”
  • “有没有已停止的 MySQL 服务?”
get_client_log
客户端日志
返回指定主机 YAMA 客户端的内存运行日志(最近最多 1000 条,含时间戳 / 源文件 / 行号)。
  • “这台机的客户端日志有什么报错?”
  • “看看它最近在干什么。”
主机库写入 2 个
需关闭只读模式。「主机库」指主控本地的设备记录,这两条不会向客户端下发任何命令。
host_set_remark
设置备注
给在线或离线主机设置备注(GBK 最长 63 字节),传空字符串表示清除。
  • “把这台机备注成「财务部测试机」。”
  • “清掉这台机的备注。”
host_set_watch_level
设置关注等级
设置主机在主控在线列表中的关注等级:0 无、1 蓝字、2 红字、3 红底。只影响本机显示。
  • “把这几台生产机标成红字。”
  • “取消这台机的关注标记。”
命令执行 1 个
需关闭只读模式;命令受白名单约束(按词边界匹配,dir 放行、dirx 拒绝),默认仅允许只读命令前缀。
exec_command
执行命令
在指定 Windows 主机上执行一条命令,返回 stdout 与退出码。每次调用都是一次性进程,不保留工作目录与环境变量。
  • “在这台机跑一下 ipconfig。”
  • “看看 C 盘还剩多少空间。”
持久终端 3 个
需勾选「启用持久终端」并关闭只读模式;终端内为完整 shell、不受白名单约束。
terminal_open
打开持久终端
在指定 Windows 主机上打开一个持久 shell 会话,返回 session_id 与终端模式;cwd / 环境变量跨命令保持。
  • “给我开一个这台机的终端。”
terminal_exec
终端执行命令
在已打开的持久会话中执行一条命令,返回 stdout 与退出码。命令不能含 & 或 |(会破坏输出哨兵捕获),请拆成多条调用。
  • “先 cd 到 C:\Windows,再 dir 一下。”
  • “设个环境变量,下一条再读回来。”
terminal_close
关闭持久终端
关闭并释放指定持久会话(幂等:会话已不存在也返回成功)。
  • “用完终端了,关掉它。”
远程控制(AI 操控桌面) 5 个
需勾选「启用远程控制」并关闭只读模式。仅 Windows、单显示器主机;闲置 300 秒或客户端断开自动回收会话。
remote_open
打开远程控制会话
在指定 Windows 主机上建立远程控制会话(隐藏屏幕子连接),返回 session_id 与物理屏幕分辨率(screen_w / screen_h)。
  • “我要操作这台机的桌面。”
  • “帮我远程操作这台机器。”
remote_mouse
鼠标操作
向远程控制会话注入鼠标事件:move / down / up / click / right_click / middle_click / drag / scroll。坐标 x / y 为归一化 0..1 浮点。
  • “点击屏幕正中间的按钮。”
  • “把窗口从左上角拖到右下角。”
remote_keyboard
键盘输入
向远程控制会话注入键盘事件:key_down / key_up / key_press / type。type 仅支持 ASCII;非 ASCII 文本请用 remote_clipboard 写入后再注入 Ctrl+V。
  • “在聊天框里输入文字(先剪贴板再 Ctrl+V)。”
  • “按下回车。”
remote_clipboard
写入剪贴板
把文本写入远程主机剪贴板(UTF-8 → GBK,emoji 等非 GBK 字符会丢失)。只写剪贴板,粘贴需再注入 Ctrl+V。
  • “把这段文字放进远程剪贴板。”
remote_close
关闭远程控制会话
关闭并释放指定远程控制会话(幂等:会话已不存在也返回成功)。
  • “操作完了,关闭远程控制。”
文件传输 2 个
需勾选「启用文件传输」。下载方向无需关闭只读;上传会写远端磁盘,需同时关闭只读。两者都走 V2 传输协议。
download_file
下载文件
把远程主机上的文件或目录拉回主控(逐文件 SHA-256 校验),支持 overwrite 与 .. 穿越防护;目录递归下载。
  • “把 C:\Users\admin\Desktop\report.docx 下载下来。”
upload_file
上传文件
把主控本地的文件或目录推送到远程主机(目录递归上传,远端目录自动创建),支持 overwrite 预检与跳过已存在文件。
  • “把本地补丁包传到远程主机 C:\temp 下。”
设备管理 4 个
需勾选「启用管理操作」并关闭只读模式。
kill_process
结束进程
终止指定 Windows 主机上的一个或多个进程(TerminateProcess 强制结束,不保存状态,可能造成数据丢失),返回杀完后仍在运行的 PID。
  • “结束 PID 1234 的进程。”
  • “把映像名含 notepad 的进程都结束掉。”
operate_window
窗口操作
对指定 Windows 主机的窗口执行 close / show / hide / minimize / maximize / restore。hwnd 取 list_windows 返回的 hwnd,ok 仅表示已下发。
  • “把标题含「弹窗」的窗口关掉。”
  • “最小化这台机的所有窗口。”
control_service
服务控制
控制指定 Windows 主机的服务:start / stop / set_auto / set_manual。ok 仅表示已下发,成功与否需再查 list_services 核对。
  • “重启这台机的 MySQL 服务。”
  • “把某个服务设为手动启动。”
power_action
电源操作
对指定 Windows 主机执行 logout / shutdown / reboot。不可撤销,主机将立即下线,需客户端管理员权限。
  • “把这台机重启一下。”
  • “帮我关掉这台机。”
连接管理与主机管理 16 个
需勾选「启用主机管理」。写操作另需关闭只读模式;断开连接另需「管理操作」;冻结 / 解冻进程与停止 / 重启服务另需「危险主机操作」。
list_network_connections
连接列表
列出指定 Windows 主机的 TCP / UDP 连接(相当于「连接管理」对话框),返回四元组、所属进程与 TCP 状态;killable=true 表示可被断开。
  • “这台机现在有哪些对外连接?”
  • “有没有连到 445 端口的会话?”
kill_network_connection
断开连接
强制断开一条 IPv4 TCP 连接(需完整四元组)。目标不存在返回 -32009;断开后会重新拉取连接表复核,仍在则 ok=false、reason=still_present(常见原因是客户端未提权)。
  • “把这条到 203.0.113.9:3389 的连接断掉。”
host_list_processes
进程(主机管理)
主机管理「进程」标签页的视角:PID、架构、窗口标题、路径、优先级、线程数、用户、工作集与文件大小。
  • “按内存占用看看这台机有哪些大进程。”
  • “列出所有 x64 进程。”
host_list_windows
窗口(主机管理)
主机管理「窗口」标签页:只包含当前可见的顶层窗口,hwnd 可用于 host_control_window。
  • “这台机现在有哪些可见窗口?”
host_list_network_state
网络状态(主机管理)
主机管理「网络状态」标签页:以进程视角列出 IPv4 连接与 UDP 端点,与「连接列表」的数据来源不同。
  • “按进程看看这台机的网络连接。”
host_list_software
已安装软件
主机管理「软件」标签页:来自注册表 Uninstall 项,返回软件名、版本与发布者。只读,不提供卸载。
  • “这台机装了哪些杀毒软件?”
  • “列出所有已安装的 .NET 运行时。”
host_list_browser_history
IE 浏览记录
主机管理「浏览记录」标签页。属于隐私数据,仅在显式开启主机管理后可见。
  • “这台机的浏览记录里有没有内网地址?”
host_list_favorites
IE 收藏夹
主机管理「收藏夹」标签页。属于隐私数据,仅在显式开启主机管理后可见。
  • “这台机收藏了哪些运维后台?”
host_list_win32_services
Win32 服务
主机管理「服务」标签页之一:显示名、描述、状态、启动类型、登录身份、服务名与可执行路径。服务名可用于 host_control_service。
  • “列出这台机的 Win32 服务。”
host_list_driver_services
驱动服务
主机管理「服务」标签页之一,字段同 Win32 服务。
  • “看看这台机有哪些第三方驱动服务。”
host_list_scheduled_tasks
计划任务
主机管理「计划任务」标签页:任务名、完整路径、所在文件夹、可执行文件、状态与上次 / 下次运行时间。
  • “这台机有哪些计划任务?”
  • “有没有状态是 Disabled 的任务?”
host_get_hosts_file
HOSTS 文件
主机管理「HOSTS」标签页:按行返回 hosts 文件内容,自动识别 UTF-8 / GBK。只读,不提供写入。
  • “这台机的 hosts 文件里有什么?”
host_control_process
冻结 / 解冻进程
对应主机管理「进程」右键的冻结 / 解冻。动作无回执,工具会重新拉取进程列表确认目标仍在。可能导致目标进程超时或崩溃。
  • “把这台机上的备份进程冻结住。”
host_control_window
窗口操作(主机管理)
对窗口执行可恢复操作:restore / hide / maximize / minimize,动作后重新枚举可见窗口复核。不提供关闭窗口。
  • “把这台机的某个窗口隐藏起来。”
host_control_service
服务控制(主机管理)
控制服务:start / stop / pause / continue / restart。每次控制后客户端回一份刷新列表,工具据此复核并如实返回 ok。不提供删除服务。
  • “把这台机的打印服务停掉。”
  • “重启某个服务。”
host_control_task
运行 / 停止计划任务
运行或停止计划任务。客户端无回执,工具只复核任务仍存在并报告当前状态。不提供创建 / 删除任务。
  • “立即运行这台机的某个计划任务。”
键盘记录 1 个
需勾选「启用键盘记录」;与只读开关无关。会在客户端采集击键,请在授权范围内使用。
get_keylog
键盘记录
读取指定 Windows 主机的键盘记录(客户端既有键盘记录功能的输出,按行返回)。采集 duration_ms 窗口内的内容,到时间或到字节上限即停止断开;缓冲区里已有的历史记录会先推上来。
  • “看一下这台机最近的键盘记录。”
  • “采集 10 秒内的击键。”
远程交谈 4 个
需勾选「启用远程交谈」;与只读开关无关。会在客户端直接弹出聊天窗口(无确认框),同一主机同时只允许一个会话,空闲 10 分钟自动失效。
chat_open
发起交谈
在指定 Windows 主机上弹出「远程交谈」窗口,建立一次多轮文字对话,返回 session_id。建立后应先用 chat_send 打招呼再 chat_wait 等回复。
  • “跟这台机的使用者聊两句,确认一下他在不在。”
chat_send
发送消息
向会话对端发送一条文本(按客户端本地代码页显示)。发送成功只代表已写入子连接,不代表对方已读。
  • “告诉对方我要重启这台机器,请他先保存工作。”
chat_wait
等待回复
等待对端消息:有消息立即返回,否则阻塞到 timeout_ms 或会话关闭;返回 timed_out / closed / dropped 等状态。
  • “等对方回一句「好的」。”
chat_close
结束交谈
结束会话并关闭客户端上的聊天窗口。关闭后旧的 session_id 不能再用,可立即重新发起。
  • “聊完了,关掉窗口。”

每个工具对应一次 MCP tools/call 请求;以上示例是模型可能收到的自然语言提问,模型会自行把它们翻译成对应工具的调用。

权限与开关

为避免大模型误操作,所有写能力默认全部关闭,需在「扩展 → MCP设置」里逐个开启, 保存后重启 YAMA 生效。十项设置如下:

开关配置键默认说明
只读模式McpReadonly开关闭后才出现 exec_command,并放行持久终端 / 远程控制 / 上传文件 / 设备管理 / 主机管理写操作 / 主机库写入。
命令白名单McpCmdWhitelist内置只读前缀只作用于 exec_command,每行一条命令前缀,按词边界匹配(dir 放行、dirx 拒绝)。持久终端不受白名单约束。
启用持久终端McpTerminal关需同时关闭只读,提供 terminal_open / terminal_exec / terminal_close。终端内为完整 shell、无白名单,请谨慎使用。
启用远程控制McpRemoteControl关需同时关闭只读,提供 remote_open / remote_close / remote_keyboard / remote_mouse / remote_clipboard,即「AI 操控桌面」。
启用文件传输McpFileTransfer关提供 download_file(只读方向,不要求关闭只读)与 upload_file(写远端磁盘,需关闭只读)。
启用管理操作McpManage关需同时关闭只读,提供 kill_process / operate_window / control_service / power_action,以及连接管理里的 kill_network_connection。
启用主机管理McpMachine关提供「连接管理与主机管理」组的 16 个工具。读取浏览记录 / 收藏夹 / HOSTS 等隐私数据前请确认授权。
启用危险主机操作McpMachineDangerous关依附于「启用主机管理」,放开冻结 / 解冻进程与停止 / 重启服务;未开主机管理时会被自动清除。
启用远程交谈McpChat关与只读开关无关,提供 chat_open / chat_send / chat_wait / chat_close。会在客户端直接弹出聊天窗口,对方可见。
启用键盘记录McpKeylog关与只读开关无关,提供 get_keylog。会采集客户端击键,请在授权范围内使用。

工具统一的等待超时可在配置文件 [settings] 里用 McpToolTimeoutMs 调整(默认 20000 毫秒,范围 1000–600000,无界面控件,改完需重启); 各工具自带的 timeout_ms 参数优先。

远程控制有额外的安全约束:单设备单会话;闲置 300 秒自动回收;全程审计(get_audit_log 可查); 与人类 Web 观看互斥(有人在看这台机的画面时,AI 无法建立远程控制,反之亦然)。仅支持 Windows、单显示器主机。 被策略拒绝的调用(只读模式或开关关闭)会在审计日志里单独记一条 CALL_DENIED。

已知局限

  • 失败会明确报错,不再一律超时: 主控会把客户端回报的失败转成结构化错误码 —— -32009 目标不存在(路径 / 注册表键查不到)、 -32010 权限不足(非提权客户端的服务枚举、受保护目录与注册表键)、-32006 被策略拒绝、 -32005 主机不支持该能力。-32009 / -32010 需要客户端同时升级到 1.4.2,老客户端仍会退化为超时(-32001)。
  • MCP 调用不会在主控弹窗: 工具超时或失败后,客户端迟到的响应包会被服务端吸收掉,不会在主控上弹出文件管理器 / 服务 / 注册表 / 进程 / 终端窗口。 代价是:工具刚超时后的 5 分钟内,若你手动点开同一功能,那一次可能被吞掉——再点一次即可。
  • list_services 不含受保护服务: 客户端以全权限打开每个服务(OpenService(SERVICE_ALL_ACCESS)),对 ACL 拒绝全权限的服务会跳过, 因此 Windows Defender(WinDefend / WdNisSvc / Sense / SecurityHealthService / wscsvc)及部分系统核心服务 (BFE / DcomLaunch / RpcSs / mpssvc / MSDTC 等)不会出现在结果中。
  • get_activity_history / get_client_log 需较新客户端: 较老的客户端构建未实现活动历史上报与日志链路,调用会返回超时(-32001);请升级客户端。
  • list_registry 需较新客户端: 注册表查询依赖客户端以只读权限(KEY_READ)枚举并确定性回传子键 / 值两包, 较老的客户端可能跳过无权限的键、或在子键 / 值不全时超时(-32001)。 另:REG_BINARY 值按协议定宽字段输出十六进制,尾部可能含零填充。
  • search_file 受客户端递归限制: 客户端始终递归子目录,上限 32 层 / 10000 条,并跳过隐藏 + 系统目录与符号链接;到时限返回的是部分结果(finished=false)。 1.4.2 之前的客户端在深目录、整盘搜索时可能栈溢出并挂住搜索线程,请只搜具体目录并优先升级客户端。
  • 远程控制仅 Windows、单显示器: Linux / macOS 主机暂不支持;多显示器主机会被拒绝(-32005,归一化坐标在虚拟桌面下会偏移)。 需要定位界面元素时,请配合 get_screenshot 截图观察。
  • remote_keyboard / remote_clipboard 编码限制: type 仅支持 ASCII 文本;剪贴板写入为 GBK/ANSI 编码,emoji 等非 GBK 字符会丢失。 含中文等非 ASCII 文本请走 remote_clipboard + Ctrl+V。
  • terminal_exec 不支持 & / |: 持久终端的单条命令不能包含 & 或 |(会破坏输出哨兵捕获),请拆成多条调用; 重定向 > < 与转义 ^ 可用。终端命令超时后该会话会被销毁,需重新 terminal_open。
  • 部分写操作只有「已下发」语义: operate_window / control_service 的 ok 只表示命令已下发; 主机管理族的写工具会在动作后重新拉取列表复核并如实返回 ok,但计划任务运行等操作客户端没有回执,不能保证一定执行成功。