swarm-mcp
The swarm-mcp server provides workspace inspection, reconciliation, and safe-write scaffolding for a spec/review discipline system. All outputs surface facts and diagnostics — never a pass/fail verdict (noVerdictIssued: true), keeping authority with human reviewers.
Workspace Status & Checks
swarm_get_status: Retrieve the derived board showing specs, tasks, and review statuses.swarm_check_workspace: Run the checks contract over every artifact in the workspace, returning diagnostics.swarm_check_file: Run checks against a single file (spec, task, review, or change-plan) by path.swarm_get_checks: Retrieve the checks contract (version, check IDs, names, severities).
Inspect Artifacts
swarm_get_task: Get a parsed task packet — scope, affected areas, claimed changes, frontmatter.swarm_get_spec: Get a parsed spec — frontmatter, requirements, verify commands, sections.swarm_get_review: Get a parsed review packet — status, coverage rows, verify blocks.
Reconcile & Validate
swarm_scan_task: Reconcile a task in progress against its spec and current worktree diff — surfaces coverage gaps, out-of-scope changes, self-report mismatches.swarm_reconcile_review: Compare a finished review packet against the task, spec, and git diff — surfaces coverage gaps, empty-evidence Pass rows, scope drift, and self-report mismatches.swarm_validate_review_packet: Check a review packet's structure, status fields, and evidence requirements.
Safe-Write Scaffolding (no verdicts, no board modifications)
swarm_scaffold_spec: Create a new specification.swarm_split_task: Split a task by copying scope from an existing one.swarm_scaffold_finding: Promote and scaffold a finding.
Resources & Prompts: Templated URIs expose workspace, status, checks, and individual artifacts; prompts provide contextual stances (implementer, reviewer, evidence rule, finding candidate) to guide agent behavior.
Provides tools for reconciling facts, checking workspace state, scanning tasks, managing reviews, and loading parsed artifacts via the Swarm CLI.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@swarm-mcpwhat evidence is missing?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
suspec-mcp
An MCP stdio server that puts Suspec's spec/review discipline inside an agent's reach — so an agent mid-task can ask Suspec "what's my scope?", "what evidence is missing?", "what should the reviewer not miss?" — and be told facts and a human-attention list, never a Pass/Fail it could launder into a green checkmark.
Why it exists (the non-bypassable value)
Two things here are not available by handing an agent a shell:
The no-verdict envelope is a guarantee, not a convenience. Every reconcile/read result carries
noVerdictIssued: trueand a derived, structured human-attention list — coverage gaps, out-of-scope changes, empty-evidence Pass rows, self-report mismatches, each as{category, severity, message, ref}. suspec-mcp surfaces facts; a human or an independent reviewer owns the Pass / Fail / Unverified / Blocked result. An empty or weak Evidence cell reads Unverified regardless of a clean reconcile. An agent cannot make this server declare its own work done — that is the product's point.It serves clients that have no shell. Claude Desktop, Cursor, and other non-terminal clients cannot run
suspec … --jsonthemselves. For them the MCP resources (the board, the checks contract, parsed specs/tasks/reviews/findings) and prompts (the implementer/reviewer stances) are the only way to bring Suspec's context into the conversation — application-driven context + procedural nudges, not a CLI wrap.
For a terminal agent the tools tier is largely a typed, sliced convenience over the same --json; the
durable value above is what a raw shell does not give you.
Related MCP server: hivelaw
What it does — and what it never does
It spawns suspec <cmd> --json with a FIXED argv (never a shell string, never a client-injected flag) and
reshapes the output into MCP tools, resources, and prompts. It does not import suspec-cli's internals,
run a model loop, write a board, write a review result, or issue a verdict.
Reconcile-only, verdict-free — including the safe-write tier. The safe-write tools (
scaffold_spec/split_task/scaffold_finding) are verdict-free prepare ops: they scaffold a fresh artifact via the CLI'snew spec/new task --from/promote, and write no board, no review result, and overwrite nothing (no--write/--force/--agentflag ever leaves the adapter).Root-confined. It only reads/scaffolds inside a configured workspace root; every client-supplied input is validated before any subprocess runs. File paths are realpath-confined (no
.., no absolute escapes, no symlink escapes); ids/slugs/stems must be a single safe segment; a git base must be a flag-free ref; the verb and flag are allow-list-checked at the one subprocess edge.A typed contract that bends only where it should. The CLI
--jsonshapes are mirrored as a drift tripwire (a renamed/dropped field the adapter reads fails a test, not silently-wrong output), but a pass-through-only enum (a CLI advisory code the adapter merely relays) isz.string()— a benign additive CLI enum value is not a suspec-mcp break. The fixtures are generated from the real binary (pnpm fixtures), and a test re-runs the generator so a stale fixture fails wherever a suspec-cli checkout is present (found viaSUSPEC_BINor a sibling checkout; absent one, the suite skips with a loud warning rather than silently disarming).Many libraries, not a framework. It couples to suspec-cli only through the public
--jsoninterface, so suspec-cli keeps its minimal footprint and each piece stays useful on its own.
Run it
The server is one command — suspec-mcp --workspace <path> — wired into each client's MCP config. The
JSON shape below is shared by Claude Desktop, Claude Code, and Cursor (Claude Code stores it in
~/.claude.json under mcpServers, or .mcp.json in a project); Codex uses TOML; opencode uses
its own JSON block.
// Claude Desktop / Claude Code / Cursor
{
"mcpServers": {
"suspec": {
"command": "suspec-mcp",
"args": ["--workspace", "/path/to/your/suspec-workspace"],
},
},
}# Codex — ~/.codex/config.toml
[mcp_servers.suspec]
command = "suspec-mcp"
args = ["--workspace", "/path/to/your/suspec-workspace"]// opencode — opencode.jsonc
{
"mcp": {
"suspec": {
"type": "local",
"command": ["suspec-mcp", "--workspace", "/path/to/your/suspec-workspace"],
},
},
}Config: --workspace <path> / SUSPEC_WORKSPACE (the workspace root); --suspec-bin <path> / SUSPEC_BIN
(the suspec binary, default suspec on PATH). Requires the suspec CLI
installed. One workspace per instance: a server binds to exactly one --workspace at launch and
cannot switch or serve several roots; working across workspaces means one configured server entry per
workspace (or a restart with a different path). The board tool names the root it serves so an agent can
tell which workspace it is talking to. The server binary is named suspec-mcp — an older corpus-mcp name predates the rename and
resolves to nothing; a config still pointing at it silently starts no server.
The suspec-mcp command above resolves to this package's bin. To install from source until a published
build is available:
git clone https://github.com/jcosta33/suspec-mcp && cd suspec-mcp
pnpm install && npm link # exposes `suspec-mcp` on PATH (runs the TypeScript source via type-stripping)Node: on Node ≥ 22.6 the launcher runs from source whenever src/index.ts is present (a source
checkout — even after pnpm build), stripping types at runtime. On older Node it falls back to the
bundled dist/ when one exists (run pnpm build once), and errors only when neither path can work. A
published/files-pruned install with no src/ always runs dist/, which needs Node ≥ 18.18.
Surface
Read tools (8). Each declares an
outputSchemaand takes aresponse_format: concise|detailed— concise returns the relevant slice (~⅓ the tokens), the verbatim payload on demand.suspec_get_status— the derived workspace board (specs, tasks, review status, triage lists).suspec_list— enumerate specs/tasks for an agent that has no id.suspec_check_workspace— the checks contract over every spec + change plan.suspec_check_file— the one check path for one file (a spec, change-plan, or review packet).suspec_get_task— a parsed task packet (scope, areas, claimed changes, embedded spec slice).suspec_get_spec— a parsed spec (frontmatter, requirements,## Executionrun-record).suspec_get_review— a parsed review packet (status, coverage rows, verify blocks, identity).suspec_get_checks— the checks contract (version + the core checks).
Reconcile tool (1).
suspec_reconcile— reconcile atask(or aspec, for the task-less 1:1 review-to-spec case) against its spec and the worktree diff. ONE engine whether or not a review packet exists yet (the report carrieshasReviewPacket; there is no separate scan tool). The implementer-vs-reviewer stance split lives in the prompts, not in two tools.Safe-write tools (3) — verdict-free prepare ops.
suspec_scaffold_spec(new spec),suspec_split_task(new task --from, scope copied not invented),suspec_scaffold_finding(promote). Each scaffolds one fresh artifact, writes no board/result, and issues no verdict.Resources (7). Fixed:
suspec://workspace,suspec://status,suspec://checks. Templated:suspec://tasks/{id},suspec://specs/{id},suspec://reviews/{id},suspec://findings/{id}.Prompts (5).
suspec_task_briefing,suspec_before_done(the implementer — may not approve its own work),suspec_review_assistant(an independent reviewer — falsify, don't trust),suspec_evidence_rule,suspec_finding_candidate(backed bysuspec_scaffold_finding). The before-done / review-assistant asymmetry is deliberate: no prompt grants verdict authority.
Develop
pnpm install
pnpm gate # typecheck + lint + coverage (thresholds enforced) + build
pnpm fixtures # regenerate the contract fixtures from the real `suspec` binaryMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jcosta33/suspec-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server