An MCP server for managing and monitoring Internet Information Services (IIS) web server, including app pools and worker processes
MCP Server IIS has 5 tools with basic implementations but significant gaps in definition quality. Tool names are reasonable (verb_noun pattern) but descriptions are minimal and lack LLM-critical context. Input schemas are present but underdeveloped for parameter guidance. Output schemas are not documented. No error handling guidance, no parameter constraints, and no security measures visible. The server returns raw API responses without shaping for agent consumption. Compared to production baselines (avg tool description 194 chars, p90=392), these descriptions average 65 chars, well below the effective range for LLM selection.
Echoes the message back to the client.
Gets the list of IIS web server app pools
Gets the memory usage of a process in bytes
Gets the list of IIS web server worker processes also known as w3wp
Restart the IIS web server app pool
Minimal parameter descriptions. GetProcessMemory accepts 'processId' but does not specify format (integer vs string conversion), valid range, or what happens if the process does not exist. LLMs cannot infer these constraints.
No output schemas documented. Tools return JSON strings (e.g., GetAppPools serializes app pools, GetProcessMemory returns long). LLMs have no advance knowledge of response structure, forcing them to parse unstructured output or guess at field names for chaining.
No error handling guidance. RecycleIISAppPool returns 'App pool {iisAppPoolName} not found' on failure, but LLM has no recovery path (e.g., 'call GetAppPools first to see available pools'). GetProcessMemory will throw if process ID is invalid with no graceful error message.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
GetAppPools and GetWorkerProcesses return all items without pagination or limit. If an IIS server has hundreds of app pools or worker processes, response will bloat context and degrade LLM reasoning. No documentation of typical list sizes or limits.
Tool descriptions lack context on WHEN to use each tool and what it returns. 'Gets the list of IIS web server app pools' does not explain whether this returns running pools only, all pools, or metadata like state and runtime version. No dependency hints (e.g., 'Call GetAppPools first to find pool names for RecycleIISAppPool').
RecycleIISAppPool is marked WRITE but has no confirmation step, dry-run option, or warning in the description that this is a destructive operation. An LLM could inadvertently restart critical app pools.
GetProcessMemory parameter 'processId' is typed as string but internally converted with Convert.ToInt32(). No documentation of this conversion, valid PID range, or what error message is returned if the string is non-numeric or PID does not exist.
Echo tool is a simple test utility that adds no value in a production server. Its presence signals incomplete implementation focus.