Skip to content

Quickstart — Lightspeed


ZERO TO PRODUCTION
Scaffold. Build. Deploy.
The framework for the AI era.
From an empty directory to a live MCP server on Vinkius Cloud in under 40 seconds — with DLP, kill switch, and audit trail. You define the architecture. Your AI agent writes the code.
TELL YOUR AI AGENT
"Scaffold a Vurb MCP server with a health tool, Presenter, and PII redaction — then deploy it to Vinkius Cloud."

AI-FIRST DEVELOPMENT
You are the architect.
The AI writes the code.
Vurb.ts ships a SKILL.md — a machine-readable architectural contract your AI coding agent can ingest. Point Cursor, Claude Code, Copilot, or Windsurf at the spec and prompt what you need.
What you say
"Create an MCP server for invoice management with Presenters, PII redaction on customer_ssn, and middleware auth."
What the AI produces
Idiomatic Vurb.ts — correct file-based routing, typed Presenters, .redactPII() paths, middleware chains — on the first pass.

The SKILL.md teaches the AI the entire framework architecture — MVA pattern, Presenter rules, middleware composition, file conventions. Your job is to define what your server does. The AI's job is to write the code that does it. Works with Cursor, Claude Code, GitHub Copilot, Windsurf, and Cline.

TIP

Explore more at agentskills.io — the Agent Skills ecosystem for distributing domain expertise to AI agents.


Prerequisites

Node.js 18+ required.

bash
npm install @vurb/core @modelcontextprotocol/sdk zod

Already using a project?

If you're adding Vurb.ts to an existing Node.js project — skip to Building Tools.

From Zero to Live

Four commands. Under 40 seconds. Your MCP server on Vinkius Cloud's global edge.

01
Scaffold
terminal
bash
vurb create my-server
02
Develop locally
terminal
bash
cd my-server
vurb dev
HMR — edit any tool, middleware, or Presenter and the server reloads instantly.
03
Test
terminal
bash
npm test
In-memory harness — no transport, no network. All tests pass from scaffold.
04
Deploy to Vinkius Cloud
terminal
bash
vurb deploy
Global edge. DLP redaction, V8 sandbox, rate limiting, kill switch, audit trail — all built in. Share the connection token with any MCP client.

That's it. Four commands. Your server is live. Skip the wizard with --yes for defaults:

bash
vurb create my-api --vector prisma --transport sse --yes

Pro-Tip: --vector prisma is the fastest way to bridge Prisma to MCP. The Presenter's schema strips internal columns before they ever reach the LLM.

What Just Happened

When you ran vurb deploy, Vinkius Cloud activated 8 security layers — automatically:

🛡️
DLP Engine
🔒
V8 Sandbox
Rate Limiter
🚨
Kill Switch
📋
Audit Trail
🧱
Egress Firewall
🔄
Circuit Breaker
🔐
Token Auth

TIP

Vurb blocks PII locally by default. Need compliance proof (SOC2/GDPR/HIPAA)? Connect to Vinkius Cloud for tamper-proof Audit Logs →

Zero-Friction AI Integration

vurb create auto-injects SKILL.md into your IDE's rule files — .cursorrules, .windsurfrules, .clinerules. The moment you scaffold, your IDE becomes a framework-expert architect. No manual setup.


What You Get

project structure
text
my-server/
├── src/
│   ├── vurb.ts            # initVurb<AppContext>()
│   ├── context.ts           # AppContext type + factory
│   ├── server.ts            # Bootstrap with autoDiscover
│   ├── tools/
│   │   └── system/
│   │       ├── health.ts    # Health check with Presenter
│   │       └── echo.ts      # Connectivity test
│   ├── presenters/
│   │   └── SystemPresenter.ts
│   ├── prompts/
│   │   └── greet.ts
│   └── middleware/
│       └── auth.ts
├── tests/
│   ├── setup.ts
│   └── system.test.ts
├── .cursor/mcp.json         # Pre-configured for Cursor
├── .cursorrules             # SKILL.md → Cursor rules (auto-generated)
├── .windsurfrules           # SKILL.md → Windsurf rules (auto-generated)
├── SKILL.md                 # AI architectural contract
├── package.json
├── tsconfig.json
└── vitest.config.ts

Every file is real code — not stubs. The server boots, the tests pass, Cursor connects. Your AI agent already knows the conventions — SKILL.md is injected into IDE rules automatically.


Connect Your MCP Client

Cursor
Zero-click. CLI generates .cursor/mcp.json automatically.
Claude Desktop
Add to claude_desktop_config.json
Claude Code
claude mcp add my-server npx tsx src/server.ts
json
{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["tsx", "src/server.ts"]
    }
  }
}
json
{
  "servers": {
    "my-server": {
      "command": "npx",
      "args": ["tsx", "src/server.ts"]
    }
  }
}
json
{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["tsx", "src/server.ts"]
    }
  }
}

For SSE transport (multi-client, remote): vurb create my-api --transport sse


FILE-BASED ROUTING
Drop a file. It's a tool.
No imports, no registration.

autoDiscover

src/server.ts — scaffolded
typescript
import { ToolRegistry, autoDiscover } from '@vurb/core';

const registry = f.registry();
const discovered = await autoDiscover(
  registry,
  new URL('./tools', import.meta.url).pathname
);
console.error(`📦 Discovered ${discovered.length} tool file(s)`);

Directory structure becomes tool namespace:

naming convention
text
src/tools/
├── billing/
│   ├── get_invoice.ts    → billing.get_invoice
│   └── pay.ts            → billing.pay
├── users/
│   ├── list.ts           → users.list
│   └── ban.ts            → users.ban
└── system/
    └── health.ts         → system.health

Export Resolution

PriorityWhat it looks forExample
1export defaultexport default f.query('weather.get').handle(...)
2Named tool exportexport const tool = f.query(...)
3Any exported builderScans all exports for getName()
src/tools/weather/get.ts
typescript
import { f } from '../../vurb.js';

export default f.query('weather.get')
  .describe('Get current weather for a city')
  .withString('city', 'City name')
  .handle(async (input) => {
    return { city: input.city, temp_c: 18, condition: 'Clear' };
  });

Multiple tools per file work too — all exported builders are discovered (Priority 3).

Advanced Options

OptionDefaultDescription
pattern/(ts|js|mjs)$/Regex filter for file names
recursivetrueScan subdirectories
loader'esm'Module system ('esm' or 'cjs')
resolvePriority cascadeCustom export resolver

Vectors

VectorWhat it adds
vanillaautoDiscover() file routing. Zero deps
prismaPrisma schema + DB tool stubs + @vurb/prisma-gen
n8nN8nConnector — n8n workflows as MCP tools
openapiOpenAPI spec → Models/Views/Agents
oauthRFC 8628 Device Flow + requireAuth()
different scaffolds
bash
# Database-driven MCP server
vurb create inventory-api --vector prisma --transport sse

# n8n workflow bridge
vurb create ops-bridge --vector n8n

# Authenticated API
vurb create secure-api --vector oauth

Each vector adds its dependencies to package.json and environment variables to .env.example automatically.


SELF-HOSTED
Prefer your own infra?
Same code, any runtime.

Self-Hosted Alternatives

TIP

Install the Vinkius extension to monitor servers from VS Code, Cursor, or Windsurf — live connections, logs, and tool toggling.


Next Steps