Generates production-ready TypeScript backend blocks like rate limiting, validation, and logging directly into your codebase.
Also known as codewithnuh/blockend, blockend-cli
- Stars
- 9
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Nov 13, 2026
- License
- MIT
What is Blockend MCP?
Blockend generates production-ready TypeScript backend blocks like rate limiting, validation, and logging directly into your codebase.
Summary generated from the project's README
About Blockend MCP server
Adding production-ready backend infrastructure to TypeScript projects is what Blockend enables for developers using Express, Fastify, Next.js App Router, or Hono. Instead of relying on external runtimes, this tool copies source files directly into your repository, giving you full ownership to modify or remove the code as needed. It works through a CLI and an MCP server that integrates with clients like Cursor, Claude Code, and VS Code.
Users can manage their backend architecture by initializing a configuration file and adding specific modules such as rate-limiters, request validators, or token services. The system handles framework-specific adapters and dependency checks automatically. Because the code is written into your local directory, you can use standard tools to manage it, while the CLI provides commands to detect project settings, preview changes with diffs, and update installed blocks to newer versions.
Written from the project's README. Every use case is checked against a quote from it.
How to install Blockend MCP
Formats verified 10 Nov 2026Install Blockend MCP in Claude Code
$ claude mcp add blockend -- npx -y blockend-cliInstall Blockend MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"blockend": {
"command": "npx",
"args": [
"-y",
"blockend-cli"
]
}
}
}Install Blockend MCP in VS Code
.vscode/mcp.json
{
"servers": {
"blockend": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"blockend-cli"
]
}
}
}Install Blockend MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"blockend": {
"command": "npx",
"args": [
"-y",
"blockend-cli"
]
}
}
}Install Blockend MCP in Codex
~/.codex/config.toml
[mcp_servers.blockend] command = "npx" args = ["-y", "blockend-cli"]
Install Blockend MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"blockend": {
"command": "npx",
"args": [
"-y",
"blockend-cli"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablecodewithnuh/blockend is public and reachablegithub.com/codewithnuh/blockend ↗Pass
- Package names this repository as its sourceblockend-cli names codewithnuh/blockend as sourcenpmjs.com/package/blockend-cli ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for blockend-clinpmjs.com/package/blockend-cli/v/2.3.0#provenance ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-13github.com/codewithnuh/blockend ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from blockend-cliPass
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubBlockend
Blockend copies backend source files into your project. You choose a block, and the CLI writes its code into your repository. The code is yours: read it, change it, commit it, or remove it.
The CLI supports Express, Fastify, Next.js App Router, and Hono. The add command requires TypeScript.
Quick start
npx blockend-cli init
npx blockend-cli add request-validator
init creates blockend.json with your framework, blocks directory, package manager, and import style. add writes the selected block.
import express from "express";
import { z } from "zod";
import { expressValidator } from "@/blocks/request-validator/adapters/express";
const app = express();
app.use(express.json());
const validate = expressValidator({
body: z.object({
name: z.string().min(1),
email: z.string().email()
})
});
app.post("/users", validate, (req, res) => {
const { body } = validate.validated(req);
res.status(201).json({ user: body });
});
app.listen(3000);
If your blockend.json uses a different alias, import from that path instead. With no alias, use the relative path under paths.blocks.
Blocks
| Block | What it does |
|---|---|
rate-limiter |
Fixed-window limits with memory and Redis stores. |
error-handler |
Classifies errors, hides internal details, and returns one response shape. |
logger |
Pino logger with request IDs and async context. |
request-validator |
Validates body, query, and params with Zod. |
response-formatter |
Success, error, and pagination envelopes. |
env-config |
Validates environment variables with Zod at startup. |
health-check |
Dependency checks with per-check timeouts and a JSON health report. |
graceful-shutdown |
Drains requests and closes resources in priority order. |
idempotency |
Deduplicates retries with an atomic store lock. |
password-hash |
Argon2id hashing with a server-side pepper and rehash detection. |
token-service |
JWT access tokens and rotating refresh tokens. |
How it works
initdetects your project and writesblockend.json.addfilters the registry by framework, asks for a variant, and checks dependencies.- The CLI copies source files into your blocks directory and rewrites imports.
- The block is recorded in
blockend.jsonsoupdatecan compare versions.
There is no Blockend runtime dependency. Installed blocks use normal packages such as zod, pino, or jose.
CLI
| Command | Description |
|---|---|
blockend init |
Create blockend.json. |
blockend add <block> |
Write a block into the project. |
blockend add |
Choose a block interactively. |
blockend add --multi |
Choose several blocks. |
blockend list |
List blocks for your framework. |
blockend detect |
Report framework, language, package manager, and project settings. |
blockend diff <block> |
Preview files without writing. |
blockend doctor |
Check config and project health. |
blockend update |
Compare installed blocks with registry versions. |
blockend update --apply |
Apply selected updates. |
blockend mcp |
Start the MCP server. |
blockend mcp init |
Write MCP client config. |
See the CLI reference for options.
MCP
Blockend includes an MCP server for Claude Code, Cursor, VS Code, Codex CLI, and Windsurf.
npx blockend-cli mcp init --client cursor
The server exposes block listing, project detection, diff preview, install, update, and doctor tools. Installs run with --yes, so preview with the diff tool before writing.
Local development
Prerequisites:
- Node.js 20 or newer
- pnpm
git clone https://github.com/codewithnuh/blockend.git
cd blockend
pnpm install
pnpm build
pnpm dev
Useful commands:
pnpm test
pnpm lint
pnpm typecheck
pnpm validate
Repository layout
blockend/
├── apps/
│ └── web/ Documentation site
├── blocks/ Block source code
│ ├── error-handler/
│ ├── env-config/
│ ├── graceful-shutdown/
│ ├── health-check/
│ ├── idempotency/
│ ├── logger/
│ ├── password-hash/
│ ├── rate-limiter/
│ ├── request-validator/
│ ├── response-formatter/
│ └── token-service/
├── packages/
│ └── cli/ CLI that copies blocks into projects
├── registry/
│ ├── config.json Registry format version
│ └── index.json Generated block metadata and file mappings
├── scripts/
├── turbo.json
└── pnpm-workspace.yaml
Each block usually contains:
block.jsonwith metadata and file topologycore/or a core file with framework-agnostic logicadapters/for Express, Fastify, and Honovariants/for storage implementations- tests next to the source
Each block's block.json maps its source files to the paths the CLI writes. The checked-in registry/index.json is generated from those declarations. Some blocks also provide framework-specific tests and SQL.
Contributing
Read CONTRIBUTING.md before adding a block. A block should solve a common backend problem, keep its core framework-independent, and include tests for each adapter it ships.
Docs
License
MIT. See LICENSE.
Blockend MCP questions
How do I add Blockend MCP to Claude Code?
Run claude mcp add blockend -- npx -y blockend-cli in your terminal. Add --scope user to make it available in every project.
How do I add Blockend MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Do I have to use a Blockend runtime?
No, there is no Blockend runtime dependency. The installed blocks use standard packages like zod, pino, or jose.
Can I modify the generated code?
Yes, you own the code once it is written to your repository, allowing you to read, change, commit, or remove it.
Which frameworks are supported?
The CLI supports Express, Fastify, Next.js App Router, and Hono.
What does the MCP server allow me to do?
The MCP server provides tools for block listing, project detection, diff preview, installation, updates, and health checks.