This is a VSCode extension, not an MCP server. No MCP tool definitions found in source code. Tools are VSCode command contributions in package.json, not MCP-compliant tools with input/output schemas.
No input schemas visible for any tool. JSON Schema definitions with parameter types, descriptions, and constraints are completely absent. Tools cannot be invoked by MCP clients without explicit schema definitions.
Descriptions are trivial (5-20 characters) and do not explain what each tool does, when to call it, or what it returns. 'Add Server Configuration' and 'Start Server' fail to guide LLM selection or clarify prerequisites.
Tool naming does not follow verb_noun convention. Names like 'mcp-server-runner.addServer' include the namespace prefix. Action verbs (add, edit, delete, start, stop, view) are present but buried in a namespace identifier rather than at the tool name level.
No output schemas documented. Clients cannot know what fields addServer, editServer, startServer, or viewLogs return. This blocks LLMs from chaining operations or extracting returned IDs.
No error handling guidance. If addServer fails (port already in use, invalid command), there are no error messages telling the LLM what to do next or how to recover.
deleteServer is a destructive operation but has no confirmation/dry-run pattern visible. Agents should not be able to irreversibly delete server configurations without explicit confirmation.
mcp-server-runner.deleteServer
Recommendations
Convert this project from a VSCode extension into a proper MCP server. Expose the ServerManager class as an MCP server with Tools support (not VSCode commands). Use the MCP TypeScript SDK (e.g. @modelcontextprotocol/sdk) to register tools.
For addServer: Add full input schema with parameters: name (string, required, 20-100 chars), command (string, required, shell command), port (number, required, 1-65535), autoStart (boolean, optional, default false). Include a description explaining that this registers a new MCP server configuration for local execution.
For editServer: Add input schema with serverId (string, required) and optional parameters for name, command, port, autoStart (only changed fields need to be provided). Document that the server must be stopped before editing.
For deleteServer: Add input schema with serverId (string, required). Document that this operation is irreversible and should require explicit confirmation. Consider adding a confirmDelete boolean parameter to act as a safety gate.
For startServer: Add input schema with serverId (string, required). Document that this spawns a new process and returns startTime (ISO 8601 string) and processId (number).
For stopServer: Add input schema with serverId (string, required). Document that this gracefully terminates the process and returns stopTime (ISO 8601 string).
For viewLogs: Add input schema with serverId (string, required), limit (number, optional, 1-1000, default 100), tail (boolean, optional, whether to stream new logs). Return logs as an array of objects with {timestamp (ISO 8601), level (string: DEBUG|INFO|WARN|ERROR), message (string)}.
Score history
Overall score trend
↓ 10 points across a rubric change (v1 → v2)
0/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
F
0
2026-07-28+
v2
2026-03-09
F
10
-
v1
Add output schemas for all tools. Document what each returns: addServer returns {serverId, name, port, status}; startServer returns {serverId, status, processId}; etc.
Expand descriptions to 50-150 characters. Example: 'Register a new MCP server configuration by command, port, and auto-start preference. Use this before startServer.' Explain the 'why' for each tool.
Add parameter descriptions to all input schemas. Example: 'The unique identifier of the MCP server (UUID format)' for serverId; 'Shell command to start the server, including all arguments (e.g., python -m mcp_server --port 8000)' for command.
Implement error handling that returns structured error objects with {code (string), message (string), recoverySteps (array of strings)}. Example: if port is in use, return {code: 'PORT_IN_USE', message: 'Port 8000 already in use', recoverySteps: ['Choose a different port', 'Kill existing process on port 8000']}.
Add tool annotations (readOnlyHint, destructiveHint) to indicate which tools are read-only (viewLogs) and which are destructive (deleteServer).
Document parameter dependencies. Example: 'If autoStart is true, the server will automatically start when the extension activates. Otherwise, use startServer.'
Return pagination/limit guidance for viewLogs. If logs exceed the limit, return {logs: [...], totalLogs: number, nextToken: string} to enable pagination.
Add validation for the 'command' parameter to detect shell injection risks. Sanitize or reject inputs with suspicious characters.