MSPaint自动化工具

通过MCP服务器和客户端实现LLM自动调用MS Paint工具进行绘图和文本输入。

  • by dhanushpittala11
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dhanushpittala11/mcp-server-mspaint--agenticai

使用说明

MCP_服务器_客户端_MSPaint_AgenticAI

提示是这个项目的关键。提示的设计方式是,LLM可以通过MCP客户端自动调用绘图工具,而无需使用任何手动命令。

目录

演示

演示_MCP-绘画-感知-记忆-决策-行动:

演示_MCP-油漆-规划-调整:

https://github.com/user-attachments/assets/90147385-7243-4343-ab11-de200c30e77c

动机

任何应用程序都需要拥有API访问权限,以便为该特定应用程序构建MCP服务器。MS Paint应用程序没有任何API。我来了 破解MS Paint应用程序,即没有API的应用程序,将其连接到MCP CLient。在我需要在LLM的帮助下通过向其提问来自动执行涂料应用任务的情况下。我该怎么做?这就是MCP发挥作用的地方。我编写了一个MCP服务器,当LLM请求时,它可以通过MCP客户端调用必要的工具。我定义a 系统提示和用户查询,在这些提示和MCP客户端的帮助下,我使代理自动打开油漆应用程序,而无需手动使用任何油漆命令,使代理在油漆窗口上绘制一个矩形,并在矩形内输入用户查询的答案。

它做什么

我编写了一个MCP服务器,当LLM请求时,它可以通过MCP客户端调用必要的工具。我定义a 系统提示和用户查询,在这些提示和MCP客户端的帮助下,我使代理自动打开油漆应用程序,而无需手动使用任何油漆命令,使代理在油漆窗口上绘制一个矩形,并在矩形内输入用户查询的答案。

这项任务还有进一步的改进,我将其分为两部分。因此,总共有三个部分: 第1节: 在系统提示中,我提到了在执行用户查询时要调用的工具和需要遵循的指令。Agent成功打开绘图应用程序,绘制一个矩形并在其中键入文本。

第2节: 现在,我设计了我的系统提示,使其符合 文件这确保了

  • 该模型进行逐步推理
  • Prompt强制执行可预测的输出格式,将推理步骤与工具使用、计算步骤分开
  • 提示在多回合设置中工作,指示模型进行自我验证,鼓励模型识别所使用的推理类型
  • 在不确定的情况下和工具发生故障时,提示指定了必要的操作 然后重复在部分1中执行的任务。
  • MCP服务器: MCP油漆规划推理/示例2-3.py
  • 客户和代理人: MCP油漆计划推理/谈话2mcp-3.py

第3节: 在这里,我为4个认知层创建了4个不同的模块:感知、记忆、决策、行动。然后在talk2mcp2.py文件中,我通过集成这些文件来配置整个代理。然后我重复第2节。在这里,我使用pydantic进行所有输入和输出,并用pydantic相关的更改修改系统提示。

入门指南

我们将开始安装和设置过程。克隆存储库并使用Vs Code或Cursor IDE打开文件夹。

将此存储库克隆到本地文件夹中:

git clone https://github.com/dhanushpittala11/MCP-Server-MSPaint--AgenticAI.git

创建一个.env文件来存储Gemini API密钥。

创建requirements.txt文件

使用以下方式设置和激活虚拟环境:

python -m venv .venv 
source .venv/bin/activate 

使用以下命令安装所有必需的库和包:

pip install -r requirements.txt

用法

使用以下命令运行第1节的脚本:

  ```bash
  python talk2mcp-2.py
  ```

使用以下命令运行第2节的脚本:

  ```bash
  python talk2mcp-3.py
  ```

使用以下命令运行第3节的脚本:

  ```bash
  python talk2mcp2.py
  ```

目录树

Bug/功能请求

如果你发现一个bug(网站无法处理查询和/或给出不希望的结果),请打开一个问题 这里

如果你想请求一个新功能,可以随时通过打开一个问题来实现 这里.

使用Techstack

层 技术/库 目的
LLM Google Generative AI (Gemini 2.0 Flash) 自然语言推理与函数规划
服务器框架 FastMCP (mcp.server.fastmcp) LLM代理系统的多模式命令协议(MCP)工具接口
MCP传输 StdioServerParameters, ClientSession, stdio_client 通过子流程与MCP工具进行沟通(example2-4.py)
UI自动化 pywinauto 控制绘制GUI(打开、单击、键入、拖动鼠标等)
系统API win32gui, win32con, win32api, GetSystemMetrics 处理绘制窗口位置、交互、屏幕分辨率
数学计算 math 指数、因式、三角运算
异步处理 asyncio, await, run_in_executor 并发和工具执行编排
环境管理 dotenv 从安全加载API密钥 .env
公用事业 os, sys, time, traceback, functools, concurrent.futures 其他操作、错误跟踪、重试

已实施的工具

工具名称 功能
open_paint() 启动Paint并在辅助屏幕上将其最大化
draw_rectangle() 使用鼠标事件绘制矩形
add_text_in_paint() 通过GUI自动化在Paint中键入文本
add, subtract等等。 数学工具:加法、减法、阶乘等。
strings_to_chars_to_int() 将字符串转换为ASCII值
int_list_to_exponential_sum() 列表的指数之和
fibonacci_numbers() 生成斐波那契数列
create_thumbnail() 使用PIL创建图像缩略图

建筑

               ┌─────────────────────────────┐
               │      Google Gemini API      │
               └────────────▲────────────────┘
                            │
         ┌──────────────────┴──────────────────┐
         │                                     │
┌────────────────────┐             ┌────────────────────┐
│   talk2mcp-3.py     │            │    talk2mcp2.py    │
│ Agent and Client    │            │ Agent and Client   │
└─────────▲─────── ───┘            └─────────▲──────────┘
          │                                    │
┌─────────┴────────────┐           ┌───────────┴────────────┐
│   example2-3.py       │          │     example2-4.py       │
│  Tool Server (FastMCP)│          │   Tool Server (FastMCP) │
└─────────┬─────────────┘          └──────────┬──────────────┘
          │                                    │
       Paint GUI ←―――― Draw + Type in Paint ―――→ Math/ASCII/Image Tools

许可证

                GNU GENERAL PUBLIC LICENSE
                   Version 3, 29 June 2007

版权所有(C)2007自由软件基金会,股份有限公司。 https://fsf.org/ 每个人都可以复制和分发逐字副本 此许可证文档的,但不允许更改。

                        Preamble

GNU通用公共许可证是一个自由的、copyleft许可证,适用于 软件和其他类型的作品。

团队

达努什·皮塔拉- @Linkedin - dhanushpittala05@gmail.com

鸣谢

人工智能学院(TSAI)-Rohan Shravan的EAGv1