Token导航 LogoToken导航TokenDH.com
Custom MCP Server To Paint In Python logo
AI代理stdio官方级别未说明来源级核验

Custom MCP Server To Paint In Python

MCP Server

一个通过MCP工具控制无API的GUI绘图应用的代理(LLM),能够自动打开绘图应用、绘制矩形并在矩形内添加文本。

工具数

3

提示词数

0

GitHub Stars

0

资源数

0
PythonmacOS工具AI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

sushant097

提供方

sushant097

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

EAG v2 — 作业4(代理 → MCP → 图形用户界面“绘图”)

制作一个 代理(大型语言模型) 控制一个GUI绘图应用 没有API 通过调用MCP工具。代理必须打开一个类似绘图的应用程序,绘制一个矩形,然后输入文本 里面 矩形——带有 无需手动调用绘图功能 在客户端代码中。

这个仓库包含一个 已准备好连接Mac 使用……的解决方案 Preview.app(预览应用) + 标记 使用其他工具,而不是MS Paint。

______________________________________________________________________

这个仓库里有什么

  • server.py – MCP(微型计算机原理/最小系统配置/多点控制单元,具体含义根据上下文确定) 服务器 展示图形用户界面(GUI)工具:

- open_paint() → 打开 预览 在空白画布上,调整窗口大小,显示标记工具栏 - draw_rectangle(x1, y1, x2, y2) → 通过 Preview 绘制一个矩形 工具 → 添加注释 → 矩形 - add_text_in_paint(text) → 插入一个 文本 框选并输入您的文本 - 所有坐标均为 窗口相对的 (原点 = 预览前端窗口的左上角)

  • talk2mcp.py – MCP(最小成本路径/多协议控制器等,具体含义需根据上下文确定) 客户端代理

- 通过标准输入输出启动服务器并列出可用工具

- 使用Gemini Flash 2.0(通过 google-genai) 带着一个 严格的系统提示 这迫使模型输出 每一步一行

- FUNCTION_CALL: |arg1|arg2|... - 或者 FINAL_ANSWER: DONE

- 解析这一行并调用MCP工具。 无手动GUI调用 在这里——代理驱动着一切。

  • requirements.txt – macOS 依赖项(无仅适用于 Windows 的库):
  mcp
  google-genai
  python-dotenv
  pyautogui
  pyobjc
  pillow

______________________________________________________________________

与(讲师使用的)Windows/MS Paint基线相比,发生了什么变化

  1. 操作系统切换(Windows → macOS)

- 替换 pywinauto / pywin32 (介词)与……一起;带着 pyautogui + AppleScript(苹果脚本) 控制 Preview.app(预览应用) (适用于 Apple Silicon)。 - 移除了仅适用于Windows的软件包;已更新 requirements.txt 因此,相应地。

  1. 相对于窗口的坐标

- 服务器 读取预览窗口的边界 并且将窗口相对(的坐标/位置)转换为 (x, y) 转换为绝对屏幕坐标。 - 这使得事物具有了抵御(或抵抗)……的能力 多显示器 设置和不同的分辨率。

  1. 客户端无需手动调用绘图功能

- talk2mcp.py 现在 转发代理的 FUNCTION_CALL: 连接到服务器的线路。 - 代理本身决定顺序: open_paintdraw_rectangleadd_text_in_paintFINAL_ANSWER

  1. 强大的工具激活

- 预览标记工具栏是通过程序切换的。 - 工具通过 菜单导航 (AppleScript),其在不同设置中的可靠性高于键盘快捷键。

______________________________________________________________________

它是如何工作的(流程)

+--------------------+       MCP (stdio)        +------------------+      mac GUI
|  talk2mcp.py       |    |    server.py     |   (Preview.app)
|  (Agent client)    |                          |   (MCP server)   |
+--------------------+                          +------------------+
        |  list_tools()                                  |
        |----------------------------------------------->|
        |                                                |
        |  prompt LLM (system prompt lists tools)        |
        |                                                |
        |  LLM: "FUNCTION_CALL: open_paint"              |
        |----------------------------------------------->|  open Preview + Markup toolbar
        |  LLM: "FUNCTION_CALL: draw_rectangle|x1|y1|x2|y2"
        |----------------------------------------------->|  drag to draw rectangle
        |  LLM: "FUNCTION_CALL: add_text_in_paint|Hello" |
        |----------------------------------------------->|  place text box + type
        |  LLM: "FINAL_ANSWER: DONE"                     |
        v
     complete

______________________________________________________________________

设置(macOS)

  1. 创建虚拟环境并安装
   python -m venv venv
   source venv/bin/activate
   pip install -r requirements.txt
  1. API密钥

创建一个 .env 项目根目录中的文件:

   GEMINI_API_KEY=your_google_api_key_here
  1. 权限(非常重要)

- 系统设置 → 隐私与安全

- 无障碍性 → 允许您的终端/iTerm/Python - 屏幕录制 → 允许同样的(行为/情况)

- 如果更改未生效,请重启您的终端。

______________________________________________________________________

打开两个终端(或标签页):

航站楼A – 服务器

source venv/bin/activate
python server.py

B航站楼 - 客户区

source venv/bin/activate
python talk2mcp.py

你应该看到代理发出类似这样的调用:

FUNCTION_CALL: open_paint
FUNCTION_CALL: draw_rectangle|400|250|1100|650
FUNCTION_CALL: add_text_in_paint|What is the capital of Nepal?
FINAL_ANSWER: DONE

在预览中,你会看到一个矩形框,里面是你输入的文本。

______________________________________________________________________

调整智能体的行为

  • talk2mcp.py

- 在矩形框内设置您想要书写的内容:

    user_text = "Hello from the Agent!"
    query = f'Task: Draw a rectangle and write the following text inside it: "{user_text}".'

- 这个(或“它”) 系统提示 已经采用了单行回复格式,并提到了三种工具。

  • 如果代理(或代表)移出画布范围:

- 调整您建议的矩形坐标(代理通常会在首次运行成功后选择合理的值)。 - 你也可以添加一个提示到 query例如,“使用窗口大致中心的坐标。”

______________________________________________________________________

坐标与多显示器笔记

  • 所有工具坐标均相对于窗口 in server.py

- (0,0) 是的 预览窗口的左上角。 - 如果你的矩形不可见,请尝试使用更小的值(例如。, x1=200, y1=150, x2=1000, y2=600)。

  • 服务器将窗口调整为已知的矩形尺寸(默认值: left=100, top=80, width=1400, height=900) 以使此过程可重复。你可以更改这些(内部设置) open_paint()

______________________________________________________________________

故障排除

  • 预览无响应/点击无效果

- 检查 无障碍性 + 屏幕录制 权限。 - 确保“预览”处于最前面(服务器调用时) activate_app("Preview"),但请尝试手动点击一次“预览”)。

  • “文本”工具未插入

- 菜单可以本地化。在 server.py菜单点击是:

    Tools → Annotate → Text

如果您的系统语言不同,请更改 "Text" 到您当地的菜单标签。

  • 双子座错误(认证/模型)

- 确认 .env 具有有效性 GEMINI_API_KEY。 - 需要互联网 google-genai.

  • 代理一直说着“完成”却不进行绘制

- 系统提示强制要求调用工具,但如果仍然发生(这种情况),请增加循环迭代次数 talk2mcp.py 或者在其中加入更明确的提示 query 就像“先调用open_paint,然后draw_rectangle,接着add_text_in_paint。”

______________________________________________________________________

快速常见问题解答

问:如果我以后换用Windows系统,还能继续使用MS Paint吗?

A: 是的。交换 server.py 翻译为中文是:“对于使用(某功能/技术)的Windows版本” pywinauto 并保持 talk2mcp.py 未更改(工具名称保持不变)。

问:代理可以自行选择坐标吗?

A: 是的;提示语会鼓励这样做。如果选择不佳,可以在提示语中添加坐标提示或提供一个“安全默认矩形”。

问:我如何验证代理确实调用了工具?

A: 两者都是 talk2mcp.py 并且 server.py 为每个工具调用打印日志——你会看到 FUNCTION_CALL: 控制台中的命令行和服务器的响应。

目录标签

目录标签

PythonmacOS工具AI代理GUI自动化本地部署LLM控制绘图工具MCP协议

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP