Tooling
rahman-resources-mcp is a Model Context Protocol server that exposes the entire Rahman kitab — every template, feature, recipe, and Claude Skill — to MCP-aware clients (Claude Code, Cursor, Cline). Once wired, your agent can discover and compose kitab artifacts without you copy-pasting slugs.
rr_list_templates and answers from live data.npx rahman-resources init … command to run.rahman-resources/lib/manifest.json (the CLI's manifest) — never drifts.Pick your client. Claude Code / Cursor / Cline use the same stdio command. ChatGPT needs a bridge — see notes.
Add to ~/.claude/mcp.json (global) or .claude/mcp.json (per-project):
{
"mcpServers": {
"rahman-resources": {
"command": "npx",
"args": ["-y", "rahman-resources-mcp"]
}
}
}Then /mcp inside Claude Code — see rahman-resources with 8 tools.
The sister CLI prints the JSON snippet for you:
npx rahman-resources mcp| Tool | Args | Purpose |
|---|---|---|
| rr_list_templates | { tag?: string } | List full-app website templates (Personal Brand OS, Agency Studio, Kreator Studio, Konsultan OS, Wirausaha OS, Riset Kit, …) |
| rr_list_features | { tag?: string } | List backend / integration features (auth, midtrans, resend, vector-search, ai-router, …) |
| rr_list_recipes | — | List UI patterns to copy manually (block-editor, command-palette, asymmetric-masonry, …) |
| rr_list_skills | { scope?: 'anthropics' | 'rahman' | 'all' } | List Claude Skills inventory (anthropics + rahman skills shipped via the kitab) |
| rr_search | { query: string } | Fuzzy search across all kinds. Returns ranked hits with kind + slug. |
| rr_get | { slug: string } | Full entry by slug (template, feature, recipe, or skill). |
| rr_compose_init_command | { appName, template?, features?, skills? } | Emit the `npx rahman-resources init` command for a selection. Use this when scaffolding a fresh project. |
| rr_compose_add_commands | { features?, skills?, template? } | Emit `add` / `add-skill` commands for an existing rr.json project. Use this when extending an installed kitab. |
| rr_list_workflows | — | List the CRUD workflow kinds the kitab documents (templates, features, recipes, skills). Returns slugs the agent can pass to rr_get_workflow. |
| rr_get_workflow | { kind: 'templates'|'features'|'recipes'|'skills' } | Get the full Create / Read / Update / Delete workflow doc for one kind. Includes the npm publish step. Use when the user asks how to add/edit/remove a kitab item. |
MCP resources are read-only documents the agent can fetch by URI. Each kitab entry is one resource; clients can pin them as context.
| URI | Purpose |
|---|---|
| rr://manifest | Full kitab manifest — every layout, feature, recipe, skill, in one JSON tree. |
| rr://templates/{slug} | One template entry (e.g. `rr://templates/kreator-studio-os`). |
| rr://features/{slug} | One feature entry. |
| rr://recipes/{slug} | One recipe entry. |
| rr://skills/{slug} | One Claude Skill entry. |
| rr://workflow/{kind} | CRUD workflow markdown. `kind` ∈ templates|features|recipes|skills. Includes Create/Read/Update/Delete + the npm publish step. |
The MCP also ships workflow docs — markdown that teaches an agent how to Create / Read / Update / Delete each kitab item kind, including the npm publish step. Wire them via rr_get_workflow (or read the resources directly).
| Resource | Covers |
|---|---|
| rr://workflow/templates | Add / edit / remove a website-template. Wires lib/content/layouts.ts + app/preview/<slug>/ + components/templates/<base>/ + manifest regen + CLI publish. |
| rr://workflow/features | Add / edit / remove a feature. Wires convex/features/<slug>/ + frontend/slices/<slug>/ + 3 registry generators + CLI publish. |
| rr://workflow/recipes | Add / edit / remove a UI-only recipe. Lower-friction — no slice / convex deps required. |
| rr://workflow/skills | Add / edit / remove a Claude Skill. Wires claude-skills.ts + sync-skills.mjs + ~/.agents/skills/<slug>/SKILL.md + CLI publish. |
Source of truth: the markdown lives at packages/cli/lib/workflows/<kind>.md and ships in the CLI tarball — same single-source-of-truth pattern as the manifest.
A typical session in Claude Code looks like:
You: "Scaffold a consultancy site with Midtrans + Resend.
Use the kitab."
Agent → calls rr_list_templates({ tag: "consultant" })
→ finds "konsultan-os"
→ calls rr_get({ slug: "konsultan-os" })
→ reads agentRecipe + dependencies
→ calls rr_compose_init_command({
appName: "my-consultancy",
template: "konsultan-os",
features: ["midtrans", "resend"],
skills: ["use-audit-bp", "use-si-coder"]
})
→ returns:
npx rahman-resources init my-consultancy \
--template konsultan-os \
--features midtrans,resend \
--skills use-audit-bp,use-si-coder
Agent runs the command via Bash tool. Project scaffolded.The MCP reads the manifest from the sibling rahman-resources npm package (same monorepo, separate publish). When working in the monorepo, the loader falls back to the local CLI package at packages/cli/lib/.
Regenerate the manifest after editing any lib/content/*.ts:
cd packages/cli
node scripts/gen-manifest.mjsVersions read at build time from the monorepo's package.json — this badge always matches the current repo state.
mcp.json.-y flag in args auto-confirms; without it, MCP startup hangs.npx -y rahman-resources-mcp@latest to force a fresh fetch.