PyMCPAutoGUI ð±ïžâšïžðŒïž - GUI Automation via MCP
ããŒã«ã«PyMCPAutoGUI ð±ïžâšïžðŒïž - GUI Automation via MCP ã«ã€ããŠ
PyMCPAutoGUI ã¯ãPyAutoGUI ãš PyGetWindow ãéã㊠AI ãšãŒãžã§ã³ãããã¹ã¯ãããã® GUI ãæäœã§ããããã«ãã MCP ãµãŒããŒã§ããå埩ç㪠GUI äœæ¥ã®èªååãç»é¢ã®ãã¹ããè¡ããããŠãŒã¶ãŒåãã§ãCursor ãªã©ã® MCP ã¯ã©ã€ã¢ã³ãã§å©çšã§ããŸãã
äž»ãªæ©èœ
- 01ããŠã¹ãšããŒããŒãã®æäœããŒã«
- 02ã¹ã¯ãªãŒã³ã·ã§ãããšç»é¢äžã®ç»åã®æ€çŽ¢
- 03ãŠã£ã³ããŠã®ã¢ã¯ãã£ãåãç§»åããµã€ãºå€æŽãã¯ããŒãº
- 04ã¢ã©ãŒãã確èªãå ¥åã®ãã€ã¢ãã°ããŒã«
掻çšã·ãŒã³
- 01å埩çãªãã¹ã¯ãããäœæ¥ã®èªåå
- 02ã¹ã¯ãªãŒã³ã·ã§ããã«ããç»é¢å 容ã®ç¢ºèªããšãŒãžã§ã³ãã«ä»»ãã
- 03Cursor å ããã®ãŠã£ã³ããŠæäœãšå ¥å
MCP 察å¿
æ¬ãããžã§ã¯ã㯠MCP ãµãŒããŒã§ãããããŠã¹ãããŒããŒããã¹ã¯ãªãŒã³ã·ã§ããããŠã£ã³ããŠããã€ã¢ãã°ã® GUI èªååããŒã«ã MCP ã¯ã©ã€ã¢ã³ãã«æäŸããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
PyMCPAutoGUI ð±ïžâšïžðŒïž - MCP ã«ãã GUI ãªãŒãã¡ãŒã·ã§ã³
AI ãšãŒãžã§ã³ãã®èœåãå€§å¹ ã«åŒ·åããŸãããïŒ âš PyMCPAutoGUI ã¯ãAI ãšãŒãžã§ã³ãïŒCursor ãªã©ãMCP äºæç°å¢ã®ãšãŒãžã§ã³ãïŒãšã³ã³ãã¥ãŒã¿ãŒã®ã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒGUIïŒãã€ãªããŸãããšãŒãžã§ã³ãã¯ç»é¢ãèŠãŠ ðïžãããŠã¹ ð±ïž ãšããŒããŒã âšïž ãæäœãããŠã£ã³ã㊠ðª ã人éã®ãŠãŒã¶ãŒãšåãããã«æ±ããããã«ãªããŸãïŒ
é¢å㪠GUI æäœãæäœæ¥ã§è¡ãã®ã¯ãããŠãäœæ¥ã AI ã«ä»»ããŸããã ðªãç¹°ãè¿ãã®æäœã®èªååãGUI ã®ãã¹ãã匷å㪠AI ã¢ã·ã¹ã¿ã³ã ð€ ã®æ§ç¯ã«æé©ã§ãã
ð€ PyMCPAutoGUI ãéžã¶çç±
- ð€ ãšãŒãžã§ã³ãã®èœåã匷åïŒ AI ãšãŒãžã§ã³ãããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãçŽæ¥æäœã§ããããã«ãªããŸãã
- â ç°¡åã«çµ±åïŒ Cursor ãšãã£ã¿ãŒãªã©ã® MCP äºæã¯ã©ã€ã¢ã³ãã§ã·ãŒã ã¬ã¹ã«åäœããŸãããã©ã°ã¢ã³ããã¬ã€ã§ãïŒ
- ð ç°¡åã«äœ¿ããŸãïŒ ç°¡åãªãµãŒããŒã³ãã³ãã§ããã«äœ¿ãå§ããããŸããæ¬åœã«ããšãŠã ç°¡åã§ãã
- ð±ïžâšïž å æ¬çãªæäœïŒ å®çžŸã®ãã PyAutoGUI ãš PyGetWindow ã«ãããå¹ åºã GUI ãªãŒãã¡ãŒã·ã§ã³æ©èœãå©çšã§ããŸãã
- ðŒïž ç»é¢èªèïŒ ã¹ã¯ãªãŒã³ã·ã§ããã®æ®åœ±ããç»é¢äžã®ç»åã®æ€çŽ¢ã«äœ¿ããããŒã«ãåããŠããŸãããšãŒãžã§ã³ããç»é¢ãèŠãããããã«ãªããŸãïŒ
- ðª ãŠã£ã³ããŠç®¡çïŒ ãŠã£ã³ããŠã®äœçœ®ããµã€ãºãç¶æ ïŒæå°åãæå€§åïŒãªã©ãæäœã§ããŸãããã¹ã¯ããããæŽçããŸãããïŒ
- ð¬ ãŠãŒã¶ãŒãšã®å¯Ÿè©±ïŒ ã¢ã©ãŒãã確èªãããã³ããã®åããã¯ã¹ã衚瀺ããŠããŠãŒã¶ãŒãšããåãã§ããŸãã
ð ïž å¯Ÿå¿ç°å¢
- ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒ WindowsãmacOSãLinuxïŒå OS ã§
pyautoguiã䜿çšããã«ã¯ãé©åãªäŸåé¢ä¿ãå¿ èŠã§ãïŒ - PythonïŒ 3.11 以é ð
- MCP ã¯ã©ã€ã¢ã³ãïŒ Cursor EditorããŸã㯠Model Context Protocol (MCP) ã«å¯Ÿå¿ããã¯ã©ã€ã¢ã³ã
ð ã¯ããã« - ãšãŠãç°¡åã§ãïŒ
1. ã€ã³ã¹ããŒã«ïŒæšå¥šïŒä»®æ³ç°å¢ã䜿çšããŠãã ããïŒïŒ
ä»®æ³ç°å¢ã䜿ããšããããžã§ã¯ãã®äŸåé¢ä¿ãæŽçã§ããŸãã
# Create and activate a virtual environment (example using venv)
python -m venv .venv
# Windows PowerShell
.venv\Scripts\Activate.ps1
# macOS / Linux bash
source .venv/bin/activate
# Install using pip (from PyPI or local source)
# Make sure your virtual environment is active!
pip install pymcpautogui # Or pip install . if installing from local source
ïŒæ³šïŒLinux ã§ã¹ã¯ãªãŒã³ã·ã§ãããæ®åœ±ããå Žåãªã©ãpyautogui ã« scrot ã®ãããªã·ã¹ãã äŸåé¢ä¿ãå¿
èŠã«ãªãããšããããŸããOS ããšã®ã€ã³ã¹ããŒã«èŠä»¶ã«ã€ããŠã¯ãpyautogui ã®ããã¥ã¡ã³ãã確èªããŠãã ãããïŒ
2. MCP ãµãŒããŒã®èµ·å
ã€ã³ã¹ããŒã«ãå®äºããããã¿ãŒããã«ãããµãŒããŒãå®è¡ããã ãã§ãã
# Make sure your virtual environment is activated!
python -m pymcpautogui.server
ãµãŒããŒãèµ·åããæ¥ç¶ãåŸ ã¡åããŸãïŒããã©ã«ãã®ããŒã㯠6789 ã§ãïŒã次ã®åºåã確èªããŠãã ããã
INFO: Started server process [XXXXX]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:6789 (Press CTRL+C to quit)
GUI ãªãŒãã¡ãŒã·ã§ã³ã®åãå¿ èŠãªéã¯ããã®ã¿ãŒããã«ãèµ·åãããŸãŸã«ããŠãã ããïŒ âš
âš Cursor Editor ãšã®ã·ãŒã ã¬ã¹ãªé£æº
PyMCPAutoGUI ã CursorïŒ@ èšå·ïŒã«æ¥ç¶ããŠãã³ãŒãã£ã³ã°ã®ã¯ãŒã¯ãããŒå ã§ GUI ãçŽæ¥èªååã§ããŸãã
-
MCP èšå®ãéãïŒ Cursor ã§ã³ãã³ããã¬ããïŒ
Ctrl+Shift+PãŸãã¯Cmd+Shift+PïŒãéãããMCP: Open mcp.json configuration fileããæ€çŽ¢ããŸãã -
PyMCPAutoGUI ã®èšå®ã远å ïŒ ãã®èšå®ã
mcp.jsonã«è¿œå ããããæ¢åã®èšå®ãšããŒãžããŸããå¿ èŠã«å¿ããŠãã¹ã調æŽããŠãã ããïŒç¹ã« Cursor ããããžã§ã¯ãã®ã«ãŒãããèµ·åããŠããªãå ŽåïŒã{ "mcpServers": { // ... other MCP server configs if any ... "PyMCPAutoGUI": { // Sets the working directory. ${workspaceFolder} is usually correct. "cwd": "${workspaceFolder}", // Command to run Python. 'python' works if the venv is active in the terminal // where Cursor was launched, or specify the full path. "command": "python", // Or ".venv/Scripts/python.exe" (Win) or ".venv/bin/python" (Mac/Linux) // Arguments to start the server module. "args": ["-m", "pymcpautogui.server"] } // ... other MCP server configs if any ... } }ïŒãã³ãïŒ
mcp.jsonããã§ã«ããå Žåã¯ãmcpServersãªããžã§ã¯ãå ã«"PyMCPAutoGUI": { ... }ã®éšåã远å ããã ãã§ããïŒ -
mcp.jsonãä¿åããŸãã Cursor ããµãŒããŒãæ€åºããŸãã -
èªååããŸãããïŒ Cursor ã®ãã£ããã§
@PyMCPAutoGUIã䜿çšããŸããäŸïŒ
@PyMCPAutoGUI move_to(x=100, y=200)@PyMCPAutoGUI write(text='Automating with AI! ð', interval=0.1)@PyMCPAutoGUI screenshot(filename='current_screen.png')@PyMCPAutoGUI activate_window(title='Notepad')
ð§° å©çšå¯èœãªããŒã«
PyMCPAutoGUI 㯠pyautogui ãš pygetwindow ã®ã»ãšãã©ã®é¢æ°ãå
¬éããŸããäŸïŒ
- ããŠã¹ ð±ïžïŒ
move_toãclickãmove_relãdrag_toãdrag_relãscrollãmouse_downãmouse_upãget_position - ããŒããŒã âšïžïŒ
writeãpressãkey_downãkey_upãhotkey - ã¹ã¯ãªãŒã³ã·ã§ãã ðŒïžïŒ
screenshotãlocate_on_screenãlocate_center_on_screen - ãŠã£ã³ã㊠ðªïŒ
get_all_titlesãget_windows_with_titleãget_active_windowãactivate_windowãminimize_windowãmaximize_windowãrestore_windowãmove_windowãresize_windowãclose_window - ãã€ã¢ãã° ð¬ïŒ
alertãconfirmãpromptãpassword - èšå® âïžïŒ
set_pauseãset_failsafe
å
šããŒã«ã®äžèЧãšè©³çްã«ã€ããŠã¯ãpymcpautogui/server.py ãã¡ã€ã«ã確èªããããMCP ã¯ã©ã€ã¢ã³ãã§ @PyMCPAutoGUI list_tools ã䜿çšããŠãã ããã
ð ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ã㯠MIT License ã®äžã§ã©ã€ã»ã³ã¹ãããŠããŸãã詳现㯠LICENSE ãã¡ã€ã«ãã芧ãã ãããèªååããæ¥œãã¿ãã ããïŒð
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã