MCP server that integrates Visual Studio debugger, build system, and C++ code intelligence tools. Provides debugging, breakpoint management, symbol navigation, and build control for Visual Studio solutions.
Strong foundation with 25 well-named tools, comprehensive descriptions (avg 180 chars), and explicit JSON schemas with type definitions. Tool annotations (readOnlyHint/destructiveHint) present. However, output schemas are undocumented, LLMs cannot predict response structure. Parameter descriptions are present but some lack format/constraint details (e.g., environmentVariablesJson accepts 'JSON object string' but no validation guidance). Error handling exists but lacks recovery guidance. Named-pipe transport limits remote accessibility.
Builds the currently loaded Visual Studio solution. Returns build output (success/failure, warnings, errors). Long-running; progress is streamed via onProgress callback.
Clears all breakpoints. Two-step guard: confirm=false (default) is a dry-run that reports the count without deleting; pass confirm=true to actually delete after reviewing the count.
Resumes execution of the debugged process (from break mode). Optional waitForBreak=true blocks until the next breakpoint is hit (with optional timeout in seconds). Returns the new debugger state.
Deletes the breakpoint at the specified file path and line number. Deletion is immediate (no confirmation dialog). Returns breakpoint_not_found error if no breakpoint exists at the given location.
Evaluates a C++ or C# expression in the current break context. Returns the result as a string (truncated to maxChars).
Locates a symbol's definitions and declarations in the solution. Uses VS's semantic index for accurate C++ overload/template resolution. Returns file paths, line numbers, and symbol kinds.
Output schemas undocumented. Tools return structured data but LLMs cannot predict response fields, types, or nesting. Forces agents to guess or fail on downstream tool chaining.
Parameter format constraints missing. 'environmentVariablesJson' accepts 'JSON object string' but no validation guidance on format, escaping, or error recovery if malformed JSON is passed.
Error handling lacks recovery guidance. Tools return errors (e.g., 'file_not_in_solution', 'breakpoint_not_found') but do not guide LLM on next steps or available alternatives.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
Retrieves the build output log as plain text. Returns the last N lines (default 200) or tail mode (most recent lines). Useful for diagnosing build failures.
Returns the call graph for a function: either callers (who calls this function) or callees (what this function calls). Requires file path and line number to identify the function.
Returns the current call stack (break mode only). Shows function names, file paths, and line numbers for each frame.
Returns the current debugger mode: - design: no debug session active - break: paused at a breakpoint; can read variables / call stack / step - running: executing; cannot inspect until next break Typically the first call in a debug workflow to determine which tools are available.
Returns the solution currently loaded in Visual Studio (path, directory, project list), a best-effort debug target, and the current debugger state. Fields are null/empty if no solution is loaded. Typically the first call in a debug workflow — confirms VS is operating on the expected project tree before set_breakpoint / start_debugging.
Returns the type hierarchy (inheritance / implementation relationships) for a class or interface. Shows base classes, derived classes, and interface implementations.
Returns detailed information about one or more variables (break mode only). Supports nested member expansion up to a specified depth.
Resolves a symbol at a specific source position and returns its definition location. Requires file path and line/column number.
Lists all current breakpoints with file, line, condition, and enabled status.
Lists all local variables in the current stack frame (break mode only). Returns variable names, types, and values (truncated to maxChars per variable).
Lists all running Visual Studio instances connected to the gateway. Returns PID, solution path, solution directory, and debugger state for each instance.
Enumerates projects in the loaded Visual Studio solution (recursing Solution Folders) and returns each project's Name, UniqueName, FullName (.csproj/.vcxproj path), Kind (project-type GUID), whether it is the startup project, and a best-effort OutputTarget (built executable path). Use this before start_debugging to locate the project owning the executable you want to launch and read back its output path. Optional 'query' is a case-insensitive substring filter on Name/UniqueName/FullName; omit to list every project.
Binds this MCP session to a specific VS instance. All subsequent tool calls route to it. Use list_vs_instances first to find available PIDs.
Sets a breakpoint at the specified file path and line number. The file path must be absolute and part of the currently loaded solution (returns file_not_in_solution otherwise — call get_session_info / search_project first to discover valid paths).
Launches an executable under the Visual Studio debugger. Takes an absolute exe path (startProgram, required) plus optional arguments, environment variables (as a JSON object string like {"KEY":"VALUE"}), working directory, and debugEngine selector. Does NOT touch project configuration, launchSettings.json, or vcxproj files — params are used for this single launch only and nothing is persisted. C++ targets default to the native debug engine; pass debugEngine="managed" for .NET/CLR debugging, or a raw debug-engine GUID string for any other engine. The executable must already be built (call build_solution first if unsure).
Steps into the next function call (break mode only). Returns the new debugger state and current location.
Steps out of the current function (break mode only). Returns the new debugger state and current location.
Steps over the next statement (break mode only). Returns the new debugger state and current location.
Stops the current debug session and terminates the debugged process.
Named-pipe transport limits remote accessibility. Agents cannot invoke this server from hosted/cloud environments; only local VS instances are reachable.
Stepping tools (step_into, step_over, step_out) lack detail on return values. Descriptions say 'Returns new debugger state and current location' but output schema is not documented.