pad-actions
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pad-actionsopen Docker Desktop, then wait 30 seconds, and check if it's running"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚠️ 实验性 / 不成熟(EXPERIMENTAL / PRE-ALPHA)
这是个人「边做边学」的作品,尚未成熟、未上生产。它只在我的 Windows 机器上真机验证过一次(打开 Dify 的场景), Windows 专属,代码简单、缺少测试与文档,接口随时可能变动,也不保证安全。 请不要在重要/生产环境使用;如要用于他人机器或无人值守,风险自负。
pad-actions — 通用 Windows 动作 MCP
一个通用的、不局限于单一演示的 MCP 服务器:把"打开应用 / 打开 URL / 截图 / 查询服务状态 / 等待"定义成可复用工具。首个落地场景 = 从人的视角演示打开 Dify。
工具(通用动作)
工具 | 参数 | 作用 |
|
| 启动应用(如 |
|
| 用默认浏览器打开 URL |
|
| 全屏 PNG 截图,返回保存路径 |
| — | 虚拟桌面尺寸 |
|
| 检查进程是否在运行(可用于轮询 Docker 引擎就绪) |
|
| 等待若干毫秒 |
所有工具返回结构化结果;不移动/点击鼠标,符合"鼠标不必要"。
Related MCP server: nuphus-mcp
开发与运行
cd pad-actions
uv sync
uv run pad-actions # stdio(默认)
# uv run pad-actions sse | streamable-http (可选传输)环境:Python 3.11+;依赖 mcp>=2(v2 API,FastMCP 已更名为 MCPServer)、mss、psutil。
客户端接入示例(Claude Desktop config)
uv sync 之后,脚本入口在这里(uv sync 时会提示,或用 uv run which pad-actions 确认实际路径):
{
"mcpServers": {
"pad-actions": {
"command": "D:\\11\\Ayxi\\ai infra\\pad-actions\\.venv\\Scripts\\pad-actions.exe"
}
}
}已真机验证的成果(2026-09-08)
open_app("Docker Desktop")→ 解析到D:\Docker\Docker\Docker Desktop.exe并启动;轮询 ~15s 后 Docker 引擎就绪(v29.7.2,
npipe://./pipe/dockerDesktopLinuxEngine);因 Dify 容器全部
restart: always,引擎一启容器自动恢复(nginx/api/web/db 等 15 个全部 Up);open_url("http://localhost")→ HTTP 200,页面标题 "Sign in - Dify"(DB 已有管理员,故登录页而非 /install);screenshot()保存为../dify/dify-open.png作为演示截图。
一次
open_app→ 引擎自愈 → 容器自启 → 打开页面,完整串通了"从人的视角打开 Dify"这个动作闭环。
Available Tools
6 toolsapp_runningA
检查进程是否在运行。
Args: name: 进程名(如 "Docker Desktop"、 "docker"、 "com.docker.backend")。
Returns: running: 是否在运行;pids: 匹配到的进程 ID(可能多个)。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses the return values (running and pids) and notes that multiple pids may match, but it does not explicitly state that the operation is read-only, nor does it explain matching semantics (exact vs partial, case sensitivity) or error behavior. This is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by clearly separated Args and Returns sections. Every sentence serves a purpose, and the docstring structure makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter check tool with no output schema, the description provides the essential elements: purpose, parameter meaning, and return contract. The only minor omissions are matching semantics and explicit read-only affirmation, which are low-risk for a status check. Overall it is complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only a string property 'name' with no description (0% coverage). The description compensates by defining name as the process name and offering three illustrative examples ('Docker Desktop', 'docker', 'com.docker.backend'), which gives the agent concrete grounding. It stops short of specifying matching rules, but for a single parameter this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '检查进程是否在运行' (check whether a process is running), with concrete examples of process names. This clearly distinguishes it from sibling tools like open_app, open_url, screenshot, get_screen_size, and wait, which are all actions rather than a status check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context: it is a read-only status check for a process. Although it does not explicitly name alternatives or exclusion conditions, the sibling set contains no other process-checking tool, so the intended usage is unambiguous. The examples further clarify what qualifies as a process name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screen_sizeA
返回虚拟桌面尺寸(物理像素)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly discloses the output type (virtual desktop size) and unit (physical pixels), and implies a read-only operation with no side effects. It does not explicitly mention side effects or return format, but for a simple getter this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficiently worded sentence delivers all essential information without any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, side-effect-free getter with no output schema, the description is complete. It states exactly what is returned and in what unit, leaving no gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description adds no parameter-specific information because there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('返回') and resource ('虚拟桌面尺寸') with the unit ('物理像素'). It is clearly distinct from siblings like screenshot or app_running, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. However, the tool's purpose is self-evident, and none of the sibling tools overlap with it, so usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_appA
启动一个已安装的应用。
Args: name: 应用显示名(如 "Docker Desktop")或 exe 名(如 "notepad")。 会按注册表 DisplayName 或 PATH 查找。 path: 应用 exe 的完整路径(优先于 name 使用)。
Returns: 是否成功启动,以及使用的路径/对象。
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses lookup behavior (registry DisplayName or PATH) and return contents, which is helpful, but it does not mention side effects like starting a new GUI process, error behavior when the app is not found, or whether it blocks until the app exits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose, an Args block with clear parameter semantics, and a Returns note. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter launcher with no output schema, the description covers the core invocation semantics and return value. It could be more complete by noting failure conditions or how to handle already-running apps, but nothing critical needed to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must fully explain the parameters. It does: name accepts a display name or exe name, lookup uses registry/PATH, and path is the full exe path with priority over name. This adds meaning the schema completely lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 启动一个已安装的应用 (launch an installed app). This clearly differentiates it from siblings like open_url, screenshot, and app_running, which target different objects or operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to launch an app with name or path, but it never states when to prefer open_app over alternatives, or when not to use it. There is no explicit routing such as 'for URLs use open_url' or 'to check if already running use app_running'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_urlA
用浏览器打开一个 URL。
Args: url: 完整地址(如 http://localhost)。 browser: default | chrome | edge | firefox。
Returns: 是否成功发起打开。
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| browser | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It only says it opens a URL and returns a success flag, but it does not mention that this launches an external browser, whether the call blocks, what happens on invalid input, or any side effects. This is minimal for an action-oriented tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with a front-loaded purpose line followed by Args and Returns sections. Every sentence earns its place, and there is no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, purpose, arguments, and return value are covered. However, usage guidance and side-effect context are missing, and with no output schema or annotations, the description is only minimally viable rather than fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description compensates reasonably: url is defined as '完整地址' with an example (http://localhost), and browser is given explicit allowed values (default | chrome | edge | firefox). It does not explain the meaning of 'default' or error behavior, but it adds meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states '用浏览器打开一个 URL' (open a URL with a browser), which is a specific verb and resource. This clearly distinguishes it from sibling tools like open_app (app opening) and screenshot (screen capture), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to open a URL in a browser) but gives no explicit guidance about when to use this tool versus alternatives such as open_app. No exclusions or conditions are mentioned, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotA
截取全屏 PNG。
Args: path: 保存路径;省略则存到临时目录。
Returns: 保存的文件路径。
| Name | Required | Description | Default |
|---|---|---|---|
| path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the tool captures the entire screen, saves to a specified path or a temporary directory when omitted, and returns the saved file path. Missing minor details like permission requirements or overwite behavior, but core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one purpose sentence plus short Args and Returns lines. Every sentence earns its place and the main behavior is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers purpose, parameter behavior, and return value. It does not specify naming, overwite, or multi-monitor behavior, but these are minor for the basic use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the path parameter. It does: path is the save destination, and omitting it stores the file in a temp directory. This adds meaningful semantic value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: capture a full-screen PNG screenshot. This clearly distinguishes it from siblings like open_app, open_url, and get_screen_size, which do different things.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clear: use this when a full-screen PNG capture is needed. It gives context about the optional path and temporary fallback, and there are no competing screenshot tools among the siblings, so explicit exclusions are not necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waitA
等待 ms 毫秒(用于给服务启动/界面刷新留时间)。
| Name | Required | Description | Default |
|---|---|---|---|
| ms | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the disclosure burden. It reveals the purpose but does not explicitly state that the call blocks, what happens after the delay, or that it has no side effects. For a simple wait operation this is a minor gap, but still a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with the operation front-loaded and the purpose in a parenthetical. Every word adds value; no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and no output schema, the description covers what it does, the parameter unit, and why to use it. It is nearly complete, but an explicit statement of return/behavior would push it to fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage with only an integer ms property, and the description compensates by explicitly linking ms to milliseconds. It does not give valid ranges or limits, but for a single-parameter wait tool, this is enough for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool waits for a specified number of milliseconds and gives a concrete purpose (allowing time for service startup/interface refresh). It is unambiguous and distinct from the sibling tools, which are all about opening, running, or inspecting apps and screens.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '用于给服务启动/界面刷新留时间' tells the agent the intended use case. It does not explicitly mention when not to use it or alternative tools, but no sibling provides a sleep/wait operation, so the missing exclusion guidance is not a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
app_running - First observed
get_screen_size - First observed
open_app - First observed
open_url - First observed
screenshot - First observed
wait
TDQS
Scored across 6 tools
Each tool targets a distinct action: launching an app, opening a URL, capturing the screen, getting screen dimensions, checking a process, and waiting. There is no meaningful overlap or ambiguity among them.
The naming is generally readable and mostly uses snake_case, but conventions vary: open_app/open_url/get_screen_size follow verb_noun, while app_running and screenshot break that pattern, and wait is just a bare verb. This is a minor inconsistency rather than chaos.
Six tools is a reasonable, well-scoped set for a small desktop action utility. Every tool serves a practical purpose and the count feels neither bloated nor thin.
The set covers the core lifecycle of opening apps/URLs, checking whether they started, waiting, and capturing screen state. Minor gaps exist such as no close_app or window interaction, but agents can still complete common workflows without major dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
All public upAPI operations as MCP tools: web scraping, search, screenshots, PDF, OCR and more.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Web and URL utilities over MCP: shorten URLs, screenshot pages, read page metadata, encode URLs.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables automation of native Windows desktop applications through screen capture, mouse/keyboard control, and waiting for UI changes, exposing them as MCP tools.1-
- AlicenseNot gradedqualityBmaintenanceProvides desktop automation capabilities (e.g., click, browser snapshot) as MCP tools for DSH agents, enabling computer use via natural language.1084MIT
- AlicenseNot gradedqualityAmaintenanceEnables Windows UI Automation through MCP, allowing agents to inspect, search, navigate, and interact with desktop UI elements via the UIAutomation framework. Supports actions such as focus, invoke, set-value, toggle, and event waiting, with CLI and VS Code extension variants.2MIT
- AlicenseNot gradedqualityDmaintenanceProvides desktop automation tools for Windows, enabling mouse and keyboard control, screenshots, clipboard management, and application interaction via the MCP protocol.87MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vvn6d4zg82-byte/pad-actions'
If you have feedback or need assistance with the MCP directory API, please join our Discord server