Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
ReSharper CLI inspection/cleanup via MCP. Unofficial: not affiliated with or endorsed by JetBrains.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
JB_SOLUTION_PATH, JB_SETTINGS_PATH, JB_CACHE_HOME, JB_EXTENSIONS, JB_EXTENSION_SOURCE, RESHARPER_MCP_TIMEOUT_SECS, RESHARPER_MCP_PREWARM, RESHARPER_MCP_CLEANUP_FILTER, RESHARPER_MCP_LOG_LEVEL, MAX_MCP_OUTPUT_TOKENSWhich app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"resharper-cli": {
"command": "dnx",
"args": [
"Zphil.ReSharperCli",
"--yes"
],
"env": {
"JB_SOLUTION_PATH": "your-value",
"JB_SETTINGS_PATH": "your-value",
"JB_CACHE_HOME": "your-value",
"JB_EXTENSIONS": "your-value",
"JB_EXTENSION_SOURCE": "your-value",
"RESHARPER_MCP_TIMEOUT_SECS": "your-value",
"RESHARPER_MCP_PREWARM": "your-value",
"RESHARPER_MCP_CLEANUP_FILTER": "your-value",
"RESHARPER_MCP_LOG_LEVEL": "your-value",
"MAX_MCP_OUTPUT_TOKENS": "your-value"
}
}
}
}Run this in your terminal
claude mcp add resharper-cli --env JB_SOLUTION_PATH=your-value --env JB_SETTINGS_PATH=your-value --env JB_CACHE_HOME=your-value --env JB_EXTENSIONS=your-value --env JB_EXTENSION_SOURCE=your-value --env RESHARPER_MCP_TIMEOUT_SECS=your-value --env RESHARPER_MCP_PREWARM=your-value --env RESHARPER_MCP_CLEANUP_FILTER=your-value --env RESHARPER_MCP_LOG_LEVEL=your-value --env MAX_MCP_OUTPUT_TOKENS=your-value -- dnx Zphil.ReSharperCli --yesFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"resharper-cli": {
"command": "dnx",
"args": [
"Zphil.ReSharperCli",
"--yes"
],
"env": {
"JB_SOLUTION_PATH": "your-value",
"JB_SETTINGS_PATH": "your-value",
"JB_CACHE_HOME": "your-value",
"JB_EXTENSIONS": "your-value",
"JB_EXTENSION_SOURCE": "your-value",
"RESHARPER_MCP_TIMEOUT_SECS": "your-value",
"RESHARPER_MCP_PREWARM": "your-value",
"RESHARPER_MCP_CLEANUP_FILTER": "your-value",
"RESHARPER_MCP_LOG_LEVEL": "your-value",
"MAX_MCP_OUTPUT_TOKENS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"resharper-cli": {
"type": "stdio",
"command": "dnx",
"args": [
"Zphil.ReSharperCli",
"--yes"
],
"env": {
"JB_SOLUTION_PATH": "your-value",
"JB_SETTINGS_PATH": "your-value",
"JB_CACHE_HOME": "your-value",
"JB_EXTENSIONS": "your-value",
"JB_EXTENSION_SOURCE": "your-value",
"RESHARPER_MCP_TIMEOUT_SECS": "your-value",
"RESHARPER_MCP_PREWARM": "your-value",
"RESHARPER_MCP_CLEANUP_FILTER": "your-value",
"RESHARPER_MCP_LOG_LEVEL": "your-value",
"MAX_MCP_OUTPUT_TOKENS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
JB_SOLUTION_PATH envJB_SETTINGS_PATH envJB_CACHE_HOME envJB_EXTENSIONS envJB_EXTENSION_SOURCE envRESHARPER_MCP_TIMEOUT_SECS envRESHARPER_MCP_PREWARM envRESHARPER_MCP_CLEANUP_FILTER envRESHARPER_MCP_LOG_LEVEL envMAX_MCP_OUTPUT_TOKENS envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account andypgray, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.8.0) reached the registry 6 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need .NET on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Reelsaw
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Drive a self-hosted Reelsaw: turn long videos into vertical clips, edit, re-render and export them.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
resharper-cli-mcp is an MCP server that runs JetBrains' ReSharper command-line tools for a coding agent. Its resharper_inspect tool runs jb inspectcode and returns the issues, and resharper_cleanup runs jb cleanupcode over the files the agent names. jb reads the solution's .DotSettings and .editorconfig as ReSharper does in the IDE, so the agent is held to the same severities and code style. The server is unofficial, not affiliated with or endorsed by JetBrains, and it runs a jb you install yourself.
jb directly?An agent can run jb from a shell. It then gets a report file that can list thousands of issues, a cleanup profile it must name on every call, and a cold cache in each new checkout. The server handles each of these:
jb cleanupcode runs Built-in: Full Cleanup unless it is given --profile, whatever the solution's settings say. The server passes the profile the solution names under SilentCleanupProfile, and reports which files cleanup changed.RESHARPER_MCP_PREWARM=off. A new worktree or clone is seeded from another checkout's warm cache.jb on one solution builds a cold cache of its own.An inspect analyses the whole solution, because resolving symbols needs the full solution model, so files narrows what is reported, not what is analysed. A cleanup loads only the projects its files belong to and every project those reference, through a solution filter the server writes, and on a warm cache it takes longer the more files it is given. RESHARPER_MCP_CLEANUP_FILTER=off makes it load the whole solution. The first run against a solution builds ReSharper's caches and typically takes minutes, then later runs against the same cache are several times faster.
Each run is capped at RESHARPER_MCP_TIMEOUT_SECS, defaulting to 10 minutes. If your client's own tool-call timeout is shorter than a cold run, raise that too.
The server needs the .NET 10 SDK and JetBrains' ReSharper Command Line Tools, which are free and need no ReSharper license. Both install as .NET global tools:
dotnet tool install -g JetBrains.ReSharper.GlobalTools
dotnet tool install -g Zphil.ReSharperCli
Register the command resharper-cli-mcp, which takes no arguments, with your MCP client. For Claude Code, add it to .mcp.json:
{
"mcpServers": { "resharper": { "command": "resharper-cli-mcp" } } }
The server uses the one .sln or .slnx in its working directory. When there are none or several, set JB_SOLUTION_PATH in the config's env block.
Other clients differ only in where the entry goes and the key around it:
| Client | Where the entry goes | Top-level key | |||
|---|---|---|---|---|---|
| Visual Studio 2022 17.14+ and 2026 | .mcp.json beside the solution | servers, with "type": "stdio" | |||
| VS Code | .vscode/mcp.json | servers, with "type": "stdio" | |||
| Cursor | .cursor/mcp.json, or ~/.cursor/mcp.json for every project | mcpServers | |||
| Rider AI Assistant | Settings \ | Tools \ | AI Assistant \ | MCP | mcpServers |
| Junie | .junie/mcp/mcp.json, or ~/.junie/mcp/mcp.json for every project | mcpServers | |||
| Cline | cline_mcp_settings.json, under Configure MCP Servers | mcpServers |
Inside Rider, the IDE's own analysis already gives its agents the inspection results, and resharper_inspect would run a second analysis of the solution alongside it. There the server's sole use is resharper_cleanup, because Rider's MCP tools can reformat a file but cannot run a cleanup profile.
For Codex CLI, run codex mcp add resharper -- resharper-cli-mcp. llms-install.md has the full entry for each client as a checklist, so you can point an agent at it to do the install.
VS Code, Visual Studio, Cursor and LM Studio can add the server in one click once both tools are installed:
This repository is also a Claude Code plugin marketplace with one plugin:
/plugin marketplace add andypgray/resharper-cli-mcp
/plugin install resharper-cli-mcp@resharper-cli-mcp
The plugin starts the server with dotnet dnx, pinned to one release, and claude plugin update resharper-cli-mcp@resharper-cli-mcp moves the pin to the latest. You still install the .NET 10 SDK and jb, and ReSharper's caches live in the plugin's data directory.
Download resharper-cli-mcp- .mcpb from the latest release, double-click it, and set Solution file to the .sln or .slnx to analyse. Claude Desktop starts the server outside your repository, so it has no working directory to find a solution in. The bundle carries only the server, so install the .NET 10 runtime and the ReSharper Command Line Tools first. Run cap moves the 10-minute limit on one run.
| Tool | Mutates files | What it does |
|---|---|---|
resharper_inspect | no | Runs jb inspectcode and returns the issues, grouped by file. |
resharper_cleanup | yes | Runs jb cleanupcode on the given files and reports which ones changed on disk. |
resharper_reset_cache | no (deletes caches) | Drops the solution's ReSharper cache so the next run starts cold, or reclaims the cache a deleted checkout left behind. |
resharper_inspect takes files globs, solution-relative or absolute, and a severity of Suggestion, Warning (the default) or Error. At severity=Suggestion a response reads:
Found 2 issue(s) across 1 file(s):
RedundantUsingDirective: Using directive is not required by the code and can be safely removed.FieldCanBeMadeReadOnly.Local: Field can be made readonly.
report=Markdown writes every issue with its own message to a file under the system temp directory. The response names the file, and the server deletes it after seven days. detail caps how detailed the response may be, down to a one-line Minimal, so detail=Minimal report=Markdown surveys a legacy solution in one call.
resharper_cleanup changes style, never behaviour: formatting, using directives, var style, modifier order, redundant qualifiers and parentheses, braces. Without a profile argument it uses the profile named under SilentCleanupProfile in the solution's settings, then Built-in: Full Cleanup. Where Full Cleanup would churn legacy code, name a narrower profile there. Every call then uses it, including calls from an agent that does not know it exists.
For a codebase with no style settings yet, start from ReSharper's Detect Code Style Settings, or in Rider Auto-Detect Code Style Rules. The derive_style_guide prompt walks an agent through the same job without an IDE.
Set these in the client config's env block. All are optional. The JB_ variables are passed on to jb, and the RESHARPER_MCP_ ones govern the server itself.
| Variable | Default | Purpose |
|---|---|---|
JB_SOLUTION_PATH | discovered | Solution to use when the working directory has none or several; the solutionPath tool argument overrides it for one call. |
JB_SETTINGS_PATH | none | A .DotSettings file outside the solution's own, mounted as a Custom layer above the solution's and every project's settings. |
JB_CACHE_HOME | ~/.jb-cache | ReSharper cache directory. |
JB_EXTENSIONS | none | Semicolon-separated ReSharper plugin IDs to load. |
JB_EXTENSION_SOURCE | jb's own | Custom NuGet source for those plugins. |
RESHARPER_MCP_TIMEOUT_SECS | 600 | Cap in seconds on one jb run, and on the wait for one already in flight, clamped to 60–86,400. |
RESHARPER_MCP_PREWARM | on | off disables the cache pre-warm when a client connects. |
RESHARPER_MCP_CLEANUP_FILTER | on | off makes every cleanup load the whole solution rather than a solution filter of the files' projects. |
RESHARPER_MCP_LOG_LEVEL | Warning | Level for the rolling file log: Verbose, Debug, Information, Warning, Error or Fatal. The Microsoft names Trace and Critical also work, and any value it does not recognise falls back to Warning. |
MAX_MCP_OUTPUT_TOKENS | 25,000 characters | Client output budget that responses are reduced to fit, at 2.5 characters per token. |
The solution comes from the solutionPath argument, then JB_SOLUTION_PATH, then the one .sln or .slnx in the working directory, with no walk up to a parent. The first two also accept a solution filter (.slnf), whose settings are read from the solution it names. Logs roll daily under %LOCALAPPDATA%\Zphil.ReSharperCli\logs on Windows, and the platform equivalent elsewhere.
Two guides go deeper, and the server serves both as MCP resources for an agent to read. The setup guide (resharper://guides/setup) covers discovery, the cache, run times and output limits. The configuration guide (resharper://guides/configuration) covers settings layers, cleanup profiles, and keeping a deliberate style from being reverted.
Only the beginning is shown; read the rest in the repo