About MsBuildGraphMcp
MsBuildGraphMcp is an MCP server published by FlorinVica in the Data category: mCP server for MSBuild project graph analysis — exposes dependency graphs, shared imports, TFM compatibility, configuration diffs, and build issue detection to LLM-powered coding assistants.
Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/FlorinVica/msbuild-graph-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (10)
analyze_impact"What breaks if I remove project X?" — direct + transitive dependents
Parameters not published.
analyze_project_propertiesInspect evaluated properties with source tracking (which file, which line)
Parameters not published.
analyze_solutionParse .sln/.slnx/.slnf — projects, TFMs, output types, configurations
Parameters not published.
check_package_versionsNuGet package version consistency, CPM detection, VersionOverride tracking
Parameters not published.
compare_configurationsDiff Debug vs Release (or any two configs) — properties, packages, references
Parameters not published.
detect_build_issuesFind circular deps, TFM mismatches, orphan projects, platform mismatches
Parameters not published.
find_shared_importsDiscover Directory.Build.props/.targets and other shared imports
Parameters not published.
get_build_orderLightweight build order (topological sort) with critical path length
Parameters not published.
get_project_graphBuild the full dependency DAG with topological sort and graph metrics
Parameters not published.
list_projectsFast project listing without MSBuild evaluation — instant response
Parameters not published.
Ask AI
Ask AI about MsBuildGraphMcp
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
MSBuild Project Graph MCP Server
Pre-build static analysis of MSBuild solutions for LLM-powered coding assistants. Analyze project dependencies, detect build issues, inspect shared imports, and compare configurations — all through natural language, before building.
No existing MCP server provides pre-build project graph analysis. This fills that gap.
What It Does
Ask your AI assistant natural questions about your .NET/C++ solution:
- "Show me the dependency graph for this solution" → Full DAG with topological sort
- "Are there any TFM mismatches?" → Finds net6.0 projects referencing net8.0 libraries
- "What does Directory.Build.props affect?" → Shows all projects importing each shared file
- "Compare Debug vs Release" → Property and package reference differences
- "Where does LangVersion come from?" → Traces to Directory.Build.props line 3
Tools
| Tool | Description |
|---|---|
analyze_solution |
Parse .sln/.slnx/.slnf — projects, TFMs, output types, configurations |
get_project_graph |
Build the full dependency DAG with topological sort and graph metrics |
find_shared_imports |
Discover Directory.Build.props/.targets and other shared imports |
detect_build_issues |
Find circular deps, TFM mismatches, orphan projects, platform mismatches |
analyze_project_properties |
Inspect evaluated properties with source tracking (which file, which line) |
compare_configurations |
Diff Debug vs Release (or any two configs) — properties, packages, references |
analyze_impact |
"What breaks if I remove project X?" — direct + transitive dependents |
check_package_versions |
NuGet package version consistency, CPM detection, VersionOverride tracking |
get_build_order |
Lightweight build order (topological sort) with critical path length |
list_projects |
Fast project listing without MSBuild evaluation — instant response |
Supported Clients
✅ Works with
| Client | Config file | Details |
|---|---|---|
| VS Code + GitHub Copilot | .vscode/mcp.json |
Copilot agent mode calls MCP tools directly |
| VS Code + Continue.dev | .vscode/mcp.json |
Works with Claude, GPT, or any LLM backend |
| Cursor | .cursor/mcp.json |
Built-in AI calls MCP tools natively |
| Windsurf | Settings UI | Native MCP support via stdio transport |
| Claude Desktop | claude_desktop_config.json |
Full tool + prompt support |
| Claude Code (terminal) | CLI: claude mcp add |
Inline with terminal workflow |
| Visual Studio 2026 + Copilot | .mcp.json in solution dir |
Native MCP support in VS 2026 Preview |
❌ Not supported
| Client | Reason |
|---|---|
| Visual Studio 2022 | Copilot in VS 2022 does not support MCP protocol |
| ChatGPT | OpenAI uses a different protocol (function calling, not MCP) |
| Gemini | Google uses a different protocol (not MCP) |
Quick Start
Install
dotnet tool install -g MsBuildGraphMcp
Configure
Claude Desktop — add to %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"msbuild-graph": {
"command": "msbuild-graph-mcp"
}
}
}
Claude Code:
claude mcp add msbuild-graph -- msbuild-graph-mcp
VS Code — add to .vscode/mcp.json:
{
"servers": {
"msbuild-graph": {
"type": "stdio",
"command": "msbuild-graph-mcp"
}
}
}
Cursor — add to .cursor/mcp.json:
{
"mcpServers": {
"msbuild-graph": {
"command": "msbuild-graph-mcp"
}
}
}
Requirements
- .NET SDK 8.0+ (or Visual Studio 2022+)
- Windows (MSBuildLocator discovers VS/.NET SDK installations)
Example Output
get_project_graph
{
"metrics": {
"nodeCount": 4,
"edgeCount": 3,
"uniqueProjectCount": 4,
"maxDepth": 2,
"constructionTimeMs": 297
},
"projects": [
{
"name": "WebApp",
"targetFrameworks": ["net8.0"],
"outputType": "Exe",
"isRoot": true,
"references": ["DataLib\\DataLib.csproj", "CoreLib\\CoreLib.csproj"]
}
],
"topologicalOrder": [
"CoreLib\\CoreLib.csproj",
"DataLib\\DataLib.csproj",
"WebApp\\WebApp.csproj"
]
}
detect_build_issues
{
"totalIssues": 2,
"frameworkMismatches": [{
"project": "OldApp.csproj",
"projectTfm": "net6.0",
"dependency": "NewLib.csproj",
"dependencyTfm": "net8.0",
"reason": "net6.0 cannot consume net8.0"
}],
"orphanProjects": [{
"name": "UnusedLib",
"reason": "Library with no referencing projects"
}]
}
Features
- Pre-build analysis — no build required, evaluates MSBuild project files directly
- .sln / .slnx / .slnf — supports all solution formats including the new .slnx (VS 17.10+)
- Multi-targeting aware — correctly handles TargetFrameworks (plural) with outer/inner build deduplication
- TFM compatibility — NuGet.Frameworks-based checking (net8.0-windows vs net8.0, netstandard2.0 vs net48, etc.)
- Property source tracking — shows which file and line number defined each MSBuild property
- Configuration diffing — compares any two configurations (Debug/Release, custom configs)
- Circular dependency detection — catches both MSB4251 and CircularDependencyException
- Shared import discovery — identifies Directory.Build.props, Directory.Build.targets, Directory.Packages.props
- CPM detection — recognizes Central Package Management (ManagePackageVersionsCentrally)
Security
All tools are read-only — no builds are triggered, no files are modified.
| Measure | Description |
|---|---|
IsBuildEnabled = false |
Prevents MSBuild target execution during evaluation |
MSBUILDENABLEALLPROPERTYFUNCTIONS guard |
Server refuses to start if this dangerous env var is set |
| Path validation | UNC paths rejected, extension whitelist, existence check |
| Fresh ProjectCollection per call | No state leakage between tool invocations |
| try/finally cleanup | Projects always unloaded, even on exception |
Important: MSBuild property functions execute during evaluation (by design). Functions like
$([System.IO.File]::ReadAllText(...))run when a project is loaded. Only analyze projects you trust.
Architecture
┌──────────────────┐ stdio (JSON-RPC) ┌─────────────────────┐
│ Claude / Copilot │◄──────────────────────►│ msbuild-graph-mcp │
│ VS Code / Cursor │ │ │
└──────────────────┘ │ MSBuildLocator │
│ ► ProjectGraph │
│ ► ProjectCollection │
│ ► SolutionPersist │
└─────────────────────┘
Key architectural decisions:
- MSBuildLocator JIT trap pattern — RegisterInstance() in Main(), MSBuild types only in [NoInlining] method
- EvaluationContext.Shared via ProjectInstanceFactoryFunc — 2-5x speedup for large solutions
- Parallelism capped at 8 — prevents memory exhaustion on high-core machines
- Microsoft.Build 17.13.9 with ExcludeAssets="runtime" — avoids 17.14.8 dependency publishing bug
Testing
333 tests across 35 test files, sourced from 5 rounds of internet research covering 20+ sources:
dotnet test tests/MsBuildGraphMcp.Tests/
# Passed! - Failed: 0, Passed: 333, Skipped: 0, Total: 333, Duration: 12s
Test categories: validation, core tools, TFM compatibility, security (OWASP/CVE), solution formats, production resilience, concurrency, path edge cases, JSON serialization, real-world scenarios.
8 production bugs found and fixed during testing.
Complementary Tools
This server provides pre-build analysis. For post-build analysis (requires a completed build), see:
- BinlogInsights.Mcp — 26 MCP tools + 13 CLI commands for MSBuild binary log analysis (build times, errors, performance, analyzers)
- baronfel/mcp-binlog-tool — MSBuild binary log analysis (build times, errors, targets)
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT - FlorinVica
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.