Skip to main content
Glama
winadm-mcp

winadm-mcp

by technothatch

winadm-mcp

An MCP server that gives AI agents safe, read-mostly access to Windows administration: services, processes, the event log and system info.

$ uvx winadm-mcp --allow-write
# or: winadm-mcp

Point Claude Desktop / Claude Code / any MCP client at it and your agent can answer "why is my printer not working" (Spooler stopped?), "what ate my RAM" or "what broke since boot" — without you alt-tabbing through services.msc, Task Manager and Event Viewer.

Tools

Tool

Access

What it does

list_windows_services

read

all services with status + start type; filter by status/name

service_action_tool

write

start / stop / restart a service

list_windows_processes

read

PID, working set MB, CPU seconds

kill_process_tool

write

force-kill by PID

read_eventlog

read

newest events from any log (default System, error/warning/critical)

windows_system_info

read

OS, hostname, last boot, memory totals

Read-only by default. Write tools refuse to act unless the server is started with --allow-write. Service names and PIDs are validated before they touch PowerShell.

Related MCP server: Win MCP Server

Install / run

uvx winadm-mcp                      # read-only (recommended first)
uvx winadm-mcp --allow-write        # enable write tools

or pip install winadm-mcp and run winadm-mcp.

Claude Desktop config example:

{
  "mcpServers": {
    "winadm": {
      "command": "uvx",
      "args": ["winadm-mcp"]
    }
  }
}

Honest technical notes

  • Every tool is a small PowerShell one-liner invoked with -EncodedCommand (UTF-16LE base64, no temp files, no shell string interpolation of user input — names/PIDs are regex-validated first).

  • Windows-only by nature; on other OSes tools return a clear error instead of lying.

  • Tested on Linux CI with fully mocked PowerShell (deterministic, no admin rights needed) and smoke-tested on windows-latest.

Development

pip install -e ".[dev]"
pytest

License

MIT

Available Tools

6 tools
kill_process_toolA

Force-kill a process by PID. Requires --allow-write.

NameRequiredDescriptionDefault
pidYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden: "Force-kill" correctly signals a destructive, irreversible mutation and "--allow-write" discloses the permission gate, which is genuinely useful. However it omits failure behavior, whether protected/system processes can be targeted, and any confirmation or rate-limit constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the action front-loaded and the permission prerequisite attached immediately after. Nothing can be trimmed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be described, and the tool is simple (one required param). Still, for a destructive operation backed by no annotations, the description should say what happens on a bad PID or denied permission — that is the notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate: "by PID" clarifies that the single pid parameter is a process identifier, adding meaning beyond the bare string field. It still leaves format details unspecified — whether a string PID, an image name, or a numeric literal is accepted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Force-kill a process") plus the selector ("by PID"), which is unambiguous against siblings like list_windows_processes and service_action_tool. It does not explicitly name a sibling as the alternative, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one hard prerequisite ("Requires --allow-write") but no guidance on when termination is appropriate versus alternatives such as service_action_tool for stopping services, and no warning about the irreversible nature of force-killing. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_windows_processesA

List processes with PID, working set (MB) and CPU seconds.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden: "List" implies a read-only, non-destructive operation, and the named return fields hint at what the call reports. It says nothing about whether all processes or only the caller's are visible, whether admin rights are needed, or how CPU seconds are measured (cumulative vs. delta).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the resource and the return fields are both stated up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema documenting return values, the description only needs to identify the resource, which it does. The remaining gap is scope visibility (all processes vs. accessible ones), which could matter for a Windows process lister but is minor for correctly invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters (schema coverage 100% and empty properties), so there is no parameter semantics to explain. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List processes") and even names the returned fields (PID, working set MB, CPU seconds), so an agent immediately knows what the tool produces. It does not, however, explicitly differentiate itself from sibling tools such as kill_process_tool or list_windows_services.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites or elevation requirements, and no reference to alternatives in the sibling set. The usage is only inferable from the tool name itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_windows_servicesA

List Windows services with status and start type. Optionally filter by status (Running/Stopped/etc.) or substring of the service name.

NameRequiredDescriptionDefault
nameNo
statusNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden; 'List' plus the stated return fields safely imply a non-mutating read. It says nothing about permissions required, result volume/pagination, or whether both filters combine as AND.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the capability stated first and the optional filtering behavior second.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be described, and this is a simple two-parameter read tool. Only the default-empty-string semantics of the filters are left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (bare titles with empty-string defaults), so the description must compensate. It does add real meaning: 'name' is a substring match, not exact, and 'status' takes values like Running/Stopped — but it omits what empty-string defaults do and whether status is case-sensitive or an enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List Windows services') and adds the returned dimensions (status, start type), which clearly separates it from list_windows_processes. It stops short of naming or contrasting any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'Optionally' signals that both filters are skippable, and the presence of service_action_tool implies this is the read-only discovery step. But no when-to-use/when-not-to-use guidance or explicit routing to a sibling is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_eventlogB

Read recent events from a Windows event log (default: System, levels error/warning/critical, newest first).

NameRequiredDescriptionDefault
levelNoerror,warning,critical
log_nameNoSystem
max_eventsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses two real behaviors: the default severity filter (error/warning/critical, i.e. informational events are excluded unless requested) and newest-first ordering. It omits permissions needed, whether the read is live or a snapshot, pagination, and what happens with very large logs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the key context in a compact parenthetical; nothing is wasteful. It is lean to the point of under-specification, but structure and sizing are appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, with no annotations and 0% schema coverage, an agent still lacks enough to call it confidently — no valid log_name list, no level syntax, no note on max_events behavior or required privileges.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it only partially does. It mentions the level and log_name defaults (which largely restate the schema 'default' fields) but never explains that level is a comma-separated list, what valid log_name values look like, or what max_events does — that third parameter is undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read recent events from a Windows event log") and adds scope detail (default log, default severity levels, newest-first ordering). It is clearly distinguishable from the sibling tools (services, processes, system info), though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the reader infers this is the troubleshooting/diagnostics tool for log inspection, but there is no explicit "use when..." statement, no mention of prerequisites (admin rights), and no routing to or away from any sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

service_action_toolA

Start, stop or restart a Windows service. Requires --allow-write.

NameRequiredDescriptionDefault
nameYes
actionYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the write-permission requirement, implying a mutating operation, but says nothing about the disruptive impact of stopping a service, whether state is recoverable, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero filler: the operation comes first and the prerequisite second. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the tool has only two required parameters. The remaining gap is the absence of any warning about mutation side effects for an annotation-free write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so both parameters are undocumented in the schema. The description implicitly enumerates valid 'action' values (start/stop/restart), which is genuinely useful, but leaves 'name' ambiguous — service name versus display name — and offers no format hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb set (start, stop, restart) and resource (Windows service), which clearly separates it from the read-only sibling list_windows_services. It stops short of explicitly naming that sibling as the alternative, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Requires --allow-write' states a prerequisite for use, which is useful gating context. However, there is no guidance on when to choose this over kill_process_tool or list_windows_services, nor on what conditions should steer an agent away from restarting a service.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

windows_system_infoB

OS name/version, hostname, last boot time and memory totals.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden and does not state that this is a read-only, side-effect-free probe, nor anything about latency, permissions, or freshness of the values. It only names returned fields, which the output schema already covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded fragment with zero padding; every listed item is a real returned field. It is arguably too terse rather than too long, so it loses a point for under-specification rather than verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and a full output schema, the description only needs to say what domain the tool reports on, and it does. The main omission is any statement of read-only safety and freshness, which matters when annotations are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there is nothing the description could add about argument meaning. It correctly avoids inventing filter options that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates the specific resource contents (OS name/version, hostname, boot time, memory totals), which makes the tool's function unambiguous despite lacking an explicit verb. It is not a tautology of the name, but it never contrasts itself with siblings like read_eventlog or list_windows_processes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the go-to tool for host identity and capacity facts. There is no explicit when-to-use statement, no exclusions, and no mention of alternatives for overlapping questions such as event-log-derived boot times.

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.

  1. 6 tool updatesv0.1.0
    • First observedkill_process_tool
    • First observedlist_windows_processes
    • First observedlist_windows_services
    • First observedread_eventlog
    • First observedservice_action_tool
    • First observedwindows_system_info

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource and action: list vs. act on services, list vs. kill processes, read event logs, and fetch system info. There is no meaningful overlap between any pair, and the write tools are explicitly separated from their read counterparts.

Naming Consistency3/5

The set mixes several conventions: list_windows_services and list_windows_processes use a clear list_windows_ prefix, while service_action_tool and kill_process_tool use a vague _tool suffix, and read_eventlog/windows_system_info follow yet other patterns. Names are readable but not predictable as a family.

Tool Count5/5

Six tools is well-scoped for a Windows administration server focused on services, processes, event logs, and system info. Each tool clearly earns its place without redundancy.

Completeness4/5

The surface covers the essential read and write operations for services, processes, event logs, and system info. Minor gaps remain, such as service configuration/creation, process start, or event log clearing, but core admin workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables AI agents to securely manage and execute commands on remote Windows servers via WinRM, including PowerShell execution, system information retrieval, and service management.
    6
    18 PyPI
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform extensive Windows system administration, file operations, process management, network configuration, registry editing, GUI automation, and more through a comprehensive set of MCP tools.
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to run PowerShell commands and manage Windows services without intrusive console windows, while also supporting remote execution via SSH and WinRM.
    20
    304 npm
    1
    MIT