A side-by-side look at the Graft and Rotifer MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Graft for coding agents work as a local process; choose Rotifer MCP Server for coding agents as a local process. You can also run both side by side in one mcpServers block.
GRAFT_ROOT_PATH.safe_read, graft_edit, file_outline.search_genes, get_gene_detail, get_arena_rankings.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Coding Agents | Coding Agents |
| Quality signal | 65/100 · Great | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | No auth required |
| Pricing | Free | Free |
| Required env vars | GRAFT_ROOT_PATH | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 17 | 1 |
| Directory activity | 1 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 34 | 31 |
| Full listing | View Graft | View Rotifer MCP Server |
safe_readPolicy-enforced file read. Returns full content for small files, structural outline with jump table for large files, or refusal with reason code for banned files. Detects re-reads and returns cached outlines or structural diffs.graft_editPerform one governed exact string replacement in a repo file. Requires path, old_string, and new_string. Refuses missing or ambiguous old_string matches and policy-denied paths.file_outlineStructural skeleton of a file — function signatures, class shapes, exports. Includes a jump table mapping each symbol to its line range for targeted read_range follow-ups.read_rangeRead a bounded range of lines from a file. Maximum 250 lines. Use jump table entries from file_outline or safe_read to target specific symbols.changed_sinceCheck if a file changed since it was last read. Returns structural diff (added/removed/changed symbols) or 'unchanged'. Peek mode by default; pass consume: true to update the observation cache.graft_diffStructural diff between two git refs. Shows added, removed, and changed symbols per file — not line hunks. Defaults to working tree vs HEAD.run_captureExecute a shell command and return the last N lines of output (default 60). Responses include an explicit policy boundary. Persisted logs can be disabled and obvious secrets are redacted before writing to .graft/logs/capture.log.state_saveSave session working state (max 8 KB). Use for session bookmarks: current task, files modified, next planned actions.state_loadLoad previously saved session state. Returns null if no state has been saved.doctorRuntime health check. Shows project root, parser status, active thresholds, session depth, message count, and burden summary.activity_viewInspect recent bounded local artifact history for the active workspace, anchored to the current commit when possible.causal_statusInspect the active causal workspace and persisted local-history posture.search_genesSearch the Rotifer Gene ecosystem. Returns a list of Genes matching the query, filterable by domain and fidelity.get_gene_detailGet detailed information about a specific Gene by its ID or content_hash, including phenotype, fitness, and metadata. At least one of gene_id or content_hash must be provided.get_arena_rankingsGet Arena rankings for a domain. Each row carries a tier — `verified` (measured in a sandbox, with enough independent callers to stand), `under_evaluation` (measured, not yet corroborated), `not_evaluated` (disqualified, or a number that was estimated rather than measured) — and `rank` is null wherever the tier grants no rank. Prefer `verified` when picking a Gene for a capability; an estimated or disqualified number is not a measurement of anything. Also returns F(g) before and after the fidelity discount, safety, success_rate, latency, resource_efficiency, sample size and unique callers.compare_genesCompare two or more Genes by their F(g) fitness metrics. Returns side-by-side fitness breakdown.get_gene_statsGet download statistics for a Gene, broken down by time period (total, last 7 days, 30 days, 90 days).get_leaderboardGet the creator reputation leaderboard. Shows top creators ranked by reputation score, including their published gene count, total downloads, and arena wins.get_developer_profileGet a creator's public profile and reputation data by username.list_local_genesList Genes installed in the local project workspace. Scans the genes/ directory for phenotype.json files and returns metadata, compile status, and cloud origin for each Gene.list_local_agentsList Agents registered in the local project workspace. Returns each Agent's name, state, genome composition, strategy, and reputation. Agents are local constructs that compose multiple Genes into pipelines.install_geneInstall a Gene from the Rotifer Cloud Registry into the local project. Downloads phenotype, metadata, and the compiled WASM artifact (verified against declared size and sha256) when the gene has one. Requires a valid gene_id from search_genes or get_gene_detail.rollback_geneUndo the last overwrite of a locally installed Gene, restoring the copy that install_gene replaced. Call without gene_name to list what can currently be rolled back. A rollback consumes its snapshot: it undoes one step, not a history.arena_submitMeasure a local Gene in the sandbox and submit the measured result to the Arena. Requires authentication (rotifer login) and a Gene that exists locally — use list_local_genes to see them, install_gene to fetch one. The fitness scores are produced by running the Gene, not supplied by the caller: passing fitness_value, safety_score, success_rate, latency_score or resource_efficiency is refused. Runs `rotifer arena submit <gene> --cloud`.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"flyingrobots-graft": {
"command": "npx",
"args": [
"-y",
"@flyingrobots/graft"
],
"env": {
"GRAFT_ROOT_PATH": "YOUR_GRAFT_ROOT_PATH_HERE"
}
}
}
}
{
"mcpServers": {
"mcp-server-157": {
"command": "npx",
"args": [
"@rotifer/mcp-server"
]
}
}
}