Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Fast RuboCop-compatible Ruby linter with MCP inspect and autocorrect tools.
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.
The maker has not listed install details in the registry. See the maker’s README below.
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 7, 2026
The registry name was verified with the GitHub account adrianov, 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 (0.8.17) reached the registry 10 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Rust on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, NexusWindows
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.
Windows computer use in the background: desktop apps driven without your mouse or keyboard.
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.
10x faster RuboCop drop-in — same CLI, .rubocop.yml, and offense output, without maintaining RuboCop gems. Linting and simple config need no Ruby; complex ERB still does. Point it at an existing project and use it like RuboCop.
One binary — runs the same way regardless of rbenv, rvm, system Ruby, or Docker. Uses tree-sitter; no Ruby runtime required for linting or simple ERB. Unsupported ERB falls back to ruby / bundle exec ruby.
Drop-in parity: reads your existing .rubocop.yml, emits RuboCop-like text/JSON, supports -a/-A autocorrect, and grows cop coverage over time.
Baseline (shown in --help / --version): rubocop 1.91.0 with rubocop-rails 2.37.0, rubocop-performance 1.27.0, rubocop-rspec 3.9.0, rubocop-rspec_rails 2.32.0, rubocop-factory_bot 2.28.0 — pinned in src/resources/baseline.json.
Parity runs have been verified over 600+ installed Ruby gem projects (RuboCop vs rrubocop on the same trees).
brew install adrianov/rrubocop/rrubocop
cargo install rrubocop
macOS (.tar.gz from GitHub Releases; binary + man):
# Apple Silicon — use the *-x86_64-apple-darwin.tar.gz asset on Intel Macs
curl -LO https://github.com/adrianov/rrubocop/releases/download/v0.8.17/rrubocop-0.8.17-aarch64-apple-darwin.tar.gz tar -xzf rrubocop-0.8.17-aarch64-apple-darwin.tar.gz sudo cp rrubocop-0.8.17-aarch64-apple-darwin/rrubocop /usr/local/bin/ sudo mkdir -p /usr/local/share/man/man1 sudo cp rrubocop-0.8.17-aarch64-apple-darwin/rrubocop.1 /usr/local/share/man/man1/
Ubuntu / Debian (.deb from GitHub Releases; amd64, Ubuntu 22.04+ / Debian bookworm+):
# example for v0.8.17 — use the asset name from the release page
curl -LO https://github.com/adrianov/rrubocop/releases/download/v0.8.17/rrubocop_0.8.17-1_amd64.deb sudo dpkg -i rrubocop_0.8.17-1_amd64.deb man rrubocop
rrubocop [OPTIONS] [PATH]...
inherit_from / inherit_gem / require/plugins, inherit_mode (merge/override), nested .rubocop.yml overrides, DisabledByDefault, NewCops / Enabled: pending, plus per-cop Enabled / Exclude / Include / options; public gem defaults/inherit_gem YAML are vendored by version (from Gemfile.lock, with same_as aliases when YAML is identical) and parsed in memory; private/unlisted gems fall back to bundle info --path; simple ERB in YAML expands natively (Ruby only for unsupported tags)-a (safe) / -A (all)progress (marks stream as files finish), text, json, github, quiet, files, … (TTY color like RuboCop; --color / --no-color)# rubocop:disable / enablecache.redb under $RRUBOCOP_CACHE_DIR or $XDG_CACHE_HOME/rrubocop / ~/.cache/rrubocop (same style as abcop); --cache false skips reads but still writesrrubocop --mcp is the best way to use rrubocop from an agent: the model gets offenses as soon as it writes, so it can fix and autocorrect in the same turn and ship effective code right away — not after a later CLI/CI pass. Official Rust rmcp SDK; same tools as RuboCop 1.85+: rubocop_inspection and rubocop_autocorrectionReference implementations: nitrocop (architecture & fixtures), upstream RuboCop.
Departments grow breadth-first from common RuboCop plugin sets (nitrocop / gem sources). Notable coverage:
| Department | Notes |
|---|---|
Layout/* | 90 layout cops (alignment, spacing, empty lines, indentation; all with autocorrect) |
Lint/*, Style/*, Naming/*, Security/* | 69 / 143 / 9 / 4 |
Metrics/* | AbcSize, BlockNesting, ClassLength, CollectionLiteralLength, ModuleLength, ParameterLists |
Rails/* | 63 rails cops |
Performance/* | 24 performance cops |
RSpec/* | 104 rspec cops |
RSpecRails/* | 2 (HttpStatus, InferredSpecType) |
FactoryBot/* | 4 (AssociationStyle, AttributeDefinedStatically, CreateList, FactoryClassName) |
Bundler/*, Gemspec/*, Rake/* | 4 / 4 / 5 |
GraphQL/* | 26 rubocop-graphql cops |
Use rrubocop --list-cops for the full registered set, and rrubocop --list-autocorrectable-cops for cops with -a/-A support (181 with autocorrect so far; Layout complete; Style/Lint/Rails/RSpec growing).
rrubocop # lint .
rrubocop app lib # paths rrubocop -f json . # JSON offenses rrubocop -a . # safe autocorrect rrubocop -A . # all autocorrect rrubocop --only Metrics/AbcSize lib rrubocop --rubocop-version 1.79.2 . # emulate a project's pinned RuboCop (matches CI's bundled gem) rrubocop --list-cops rrubocop -L # list target files rrubocop -F 10 # stop after 10 offenses (off by default; -F = 1)
-a/-A, N is non-autocorrectable offenses onlyrrubocop --mcp # MCP server on stdio (for AI clients)
Exit codes: 0 clean, 1 offenses at/above --fail-level, 2 error.
Preferred for LLM / agent workflows. Wire rrubocop as an MCP server so the model can call rubocop_inspection / rubocop_autocorrection while it edits: feedback arrives in the same turn, the agent corrects soon, and it writes clean code on the first pass instead of discovering offenses only in CI.
rrubocop --mcp runs a long-lived MCP server on stdio — same idea as RuboCop’s MCP, with no Ruby mcp gem. Tools:
| Tool | Purpose |
|---|---|
rubocop_inspection | Lint via path / paths (string or array; required for filesystem inspect) and/or inline source_code; returns LSP-shaped offense JSON |
rubocop_autocorrection | Same targets as inspection; safety: true = safe only; writes files when a filesystem path is set |
Always pass path or paths (absolute file or directory preferred; path may be a string or an array). The server walks up from the first target to find .rubocop.yml. Omitting targets for filesystem ops errors out (avoids scanning $HOME when MCP cwd is mis-set). Files without a recognized Ruby extension, filename, or shebang (e.g. YAML/JSON configs) are silently skipped — same as upstream MCP, whose TargetFinder runs in :only_recognized_file_types mode — so passing mixed paths yields no Lint/Syntax noise; summary.target_file_count reflects inspected files only. A long-lived global MCP started from $HOME otherwise inherits ~/.rubocop.yml (AllCops: Enabled: false is common) and misses project cops such as RSpec/ExampleLength.
mcp-name: io.github.adrianov/rrubocopMetadata lives in server.json (Cargo package on crates.io). Each v* tag publishes that listing to the MCP Registry.
Example client config (Cursor / VS Code / Windsurf):
{
"mcpServers": { "rrubocop": { "type": "stdio", "command": "rrubocop", "args": ["--mcp"], "cwd": "/path/to/your/project" } } }
Claude Code:
claude mcp add rrubocop -- rrubocop --mcp
Intended for MCP clients, not interactive use.
Content-addressed cache under $RRUBOCOP_CACHE_DIR (or $XDG_CACHE_HOME/rrubocop / ~/.cache/rrubocop). Keys cover contents, version, rule revision, --only/--except, --rubocop-version, config fingerprint, and path. Auto-pruned to 20 000 entries; --cache false skips reads but still writes. Autocorrect runs bypass the cache. Nothing is written inside the project.
Cold lint (cache off) on a large Rails codebase (~3.8k Ruby files), same host:
| Tool | Wall clock | Result | Notes |
|---|---|---|---|
bundle exec rubocop --cache false | 2m 37s (2:36.64) | 0 offenses | ~99% CPU (mostly single-core) |
rrubocop --cache false | 7.0s (7.005) | 0 offenses | ~1040% CPU (parallel) |
nitrocop --no-cache | 8.9s (8.906) | ~21k offenses | ~1000% CPU; not a fair parity run (see below) |
rrubocop is ≈ 22× faster wall clock than RuboCop (156.6s / 7.0s) on the same clean result. RuboCop user time was 155s; rrubocop used 71s of CPU across cores.
nitrocop caveat: out of the box it did not honor the same disabled cops / custom rules / gem configs as bundle exec rubocop (e.g. failed inherit_gem load, skipped/unimplemented cops), so it reported ~21k false positives vs RuboCop/rrubocop’s clean run. Matching that baseline needs extra setup (--migrate, plugin/config wiring). Treat the 8.9s figure as raw throughput only, not drop-in parity.
Cold lint (cache off) on rails/rails (main, RuboCop 1.79.2 via bundle exec), same host (4 cores), both clean (0 offenses). Two runs averaged:
| Tool | Wall clock | Notes |
|---|---|---|
bundle exec rubocop --cache false | 1m 7s (67.254) | ~99% CPU (mostly single-core); 3543 files |
rrubocop --cache false | 5.7s (5.668) | ~357% CPU (parallel); 3446 files |
≈ 12× faster wall clock (67.254s / 5.668s). RuboCop user time was 66.9s; rrubocop used 20.2s of CPU across cores.
Same host, cold --cache false, offense-set parity on Active Support and Active Record (fp=0, fn=0 on shared .rb files):
| Target | RuboCop | rrubocop | Speedup |
|---|---|---|---|
activesupport (rails main) | 11.566s (531 files) | 1.872s | ≈6.2× |
activerecord (rails main) | 29.611s (1162 files) | 2.780s | ≈10.7× |
activesupport (v8.1.3.1) | 10.729s (506 files) | 1.795s | ≈6.0× |
activerecord (v8.1.3.1) | 27.847s (1126 files) | 2.656s | ≈10.5× |
Cold lint on a fresh `rails new` app (Rails 8.1.3.1, default rubocop-rails-omakase via inherit_gem, RuboCop 1.90.0 via bundle exec), plus scaffold/model/mailer/job generators (41 identical target files). Offense-set parity fp=0, fn=0 (both clean). Two-run average:
| Tool | Wall clock |
|---|---|
bundle exec rubocop --cache false | 0.722s |
rrubocop --cache false | 0.593s |
With a local nitrocop build:
testdata/cross_test_nitrocop.py /path/to/fixture_dir
Compares (path, line, cop_name) offense sets.
GPL-3.0-or-later. See NOTICE for MIT attribution of nitrocop-derived design/logic.