Content
# Tool List
MCP Server for Claude Code: collects routine setup actions (project skeleton, skills,
landing page build environment, guard hook, images, icons) into a single entry point.
Connected server → all tools are available from any chat with regular tool calls.
Tech stack: TypeScript + `@modelcontextprotocol/sdk`, transport **stdio** (local server,
sends nothing anywhere except OpenRouter when generating images).
## Installation in One Phrase
Open **Claude Code** and send it this message:
```
Install MCP Server according to the instructions: https://github.com/AndreyTsibin/mcp-super-app-public/blob/main/INSTALL.md
```
The agent will do the rest: check the environment, clone the repository, build and connect the server.
No need to understand the code.
Full step-by-step instructions (including what to do if something goes wrong) are in [INSTALL.md](INSTALL.md).
## Requirements
- **Node.js ≥ 20**.
- **OpenRouter Key** — only for `generate_image`. Other tools work without a key.
Each user has their own key: <https://openrouter.ai/keys>.
- For `install_guard`, `jq` is required (`brew install jq`) — otherwise, the guard script fails open (skips everything).
## Tools
| Tool | Description |
|---|---|
| `bootstrap_project` | Expands a new project skeleton with one call: `.gitignore`, `.editorconfig`, `.claude/` (settings, hook, `CLAUDE.md`, `HANDOFF`), `docs/` by profile **S/M/L** and Auto-memory. Idempotent — does not overwrite existing. |
| `install_skill` | Installs a skill in the project: bundled → copy to `.claude/skills/<id>/`; proxied → run official CLI. Artifacts are automatically added to `.gitignore`. |
| `scaffold_landing` | Expands an Astro project for site generation: library of 21 sections with variants, token contract + theme, pages `/kit` (polygon) and `/themes` (theme selection), `docs/` standards (flow, niche profiles, section catalog, images, critique rubric), templates `send.php` + `lead-form.js`, previewer and machine validator `.claude/check-landing.mjs` (contract, SEO, contrast, broken links, images). Model «one project = one site», landing or multi-page. |
| `install_guard` | Installs a PreToolUse hook for protection against destructive commands (`rm`, `find -delete`, `git reset --hard`, etc.) — globally (`target=user`) or in the project. Safe merge into `settings.json`. |
| `generate_image` | Generates an image via OpenRouter, returns **image in chat** + saves file to project (`./generated` by default) + returns `usage.cost`. Default model — Seedream 4.5 (`bytedance-seed/seedream-4.5`, $0.04 per frame at any size); Nano Banana 2/Pro and GPT Image 2 — via `model`. `reference_images` (paths/URLs) — image-to-image / consistency series. **Prompt is required via `image` skill:** no skill in project or empty `prompt_source` — tool refuses and does not spend money. |
| `optimize_images` | Prepares images for production (sharp): resizes to `max_width` (no upscaling), converts to webp/jpeg/avif, EXIF rotation, optional srcset variants (`widths`). Replaces original with optimized file by default. Returns final sizes (for `width`/`height` in `<img>`). |
| `search_icons` | Searches for an icon by English word/concept in two sets: **lucide** (~2000 generic UI icons — wrench, shield, clock…) and **simple-icons** (~3400 brand logos — GitHub, HP, Telegram…). Returns exact `name`/`set` for `get_icon`. |
| `get_icon` | Returns raw SVG icon by exact `name`/`set`. `size` — px (square), `color` — CSS color (lucide is `currentColor`; simple-icons default — official brand hex). |
## OpenRouter Key
Required only if you generate images.
```bash
cp .env.example .env
# enter your key: OPENROUTER_API_KEY=sk-or-v1-...
```
`.env` is ignored by git (see `.gitignore`). The key is loaded from `.env` in the package root —
the server loads it automatically on start, no need to pass it through config.
## Manual Connection to Claude Code
If the automatic method from [INSTALL.md](INSTALL.md) does not work.
**1. CLI** (globally, for all projects — `-s user`):
```bash
claude mcp add mcp-super-app -s user -- /absolute/path/to/mcp-super-app/launch.sh
```
**2. `.mcp.json` file** (in project root — for this project, or in `~/.claude.json` — globally):
```json
{
"mcpServers": {
"mcp-super-app": {
"command": "/absolute/path/to/mcp-super-app/launch.sh"
}
}
}
```
Connection via `launch.sh` (not directly `node dist/index.js`) provides auto-update:
the script performs `git pull` and rebuilds on each start, and silently falls back to
the already built `dist/` if there is no network or build error.
To run without update, call `node dist/index.js` directly.
Restart Claude Code after connection.
## Development
```bash
npm install
npm run build # compile TS → dist/
npm run dev # tsx watch — run from src/ without build
npm run typecheck # tsc --noEmit
npx @modelcontextprotocol/inspector node dist/index.js # manual tool check
```
Server entry point — `dist/index.js` (stdio).
## Structure
```
src/
├── index.ts # entry point: tool registration + stdio transport, .env loading
├── lib/ # common infra: openrouter, scaffold, project-slug, errors, settings-merge, …
└── tools/ # one module per tool
assets/ # static templates: skills/, bootstrap/, landing/, guard/
docs/ # specs and standards (architecture, API)
```