Skip to main content
Glama
upascal

mcp-deploy-mcp

by upascal
README.md
# MCP Deploy Assistant (`mcp-deploy-mcp`)

A remote MCP server that helps Claude design, scaffold, and validate MCP servers compatible with the [mcp-deploy](https://github.com/upascal/mcp-deploy) platform — and is itself deployed by it.

## Tools

| Tool | Purpose |
|---|---|
| `get_help` | Platform overview + topic guides (worker format, manifest, tool design, testing/release, auth, gotchas) |
| `scaffold_mcp` | Generate a complete, working repo for a new MCP (13 files, pre-validated) |
| `get_manifest_schema` | JSON Schema + naming rules + reserved keys for `mcp-deploy.json`; optional live upstream drift check |
| `validate_manifest` | Validate a drafted manifest, with optional `wrangler.jsonc` cross-check |
| `check_repo_compatibility` | Verify a GitHub repo's release carries deployable assets and a valid manifest |
| `get_example` | Minimal scaffolded repo + the production paper-search manifest |

## How it stays fresh

All servable knowledge lives in [`content/`](content/). It's bundled into the worker at build time as a fallback, but at runtime the worker fetches the latest `content/` from this repo's `main` branch (cached ~6h in the Durable Object's SQLite). **Editing `content/` and pushing to `main` updates every deployed instance — no release or redeploy needed.** Code changes (validation rules, new tools) ship via tagged releases like any mcp-deploy MCP.

Tool responses tag where content came from: `live`, `cached`, or `bundled@<version>`.

## Development

```bash
npm install
npm run dev        # wrangler dev — http://localhost:8787 (health at /, MCP at /mcp)
npm test           # vitest (network-dependent tests skip gracefully when rate-limited)
npm run typecheck
npm run build      # produces dist/worker.mjs
```

## Releasing

```bash
# bump "version" in mcp-deploy.json, package.json, and src/content.ts (VERSION), then:
git tag v0.1.0
git push origin main v0.1.0
```

CI attaches `worker.mjs` + `mcp-deploy.json` to the GitHub Release — the two assets the platform deploys from.

## Secrets

None required. Optional `GITHUB_TOKEN` raises GitHub API rate limits for `check_repo_compatibility` (Workers share egress IPs, so the unauthenticated 60/hr pool is sometimes exhausted).