Skip to content

The Express.js for MCP Servers.

Type-safe tools · Presenters that control what the LLM sees · Built-in PII redaction · Deploy once — every AI assistant connects.

Works with every MCP-compatible AI client:

ClaudeDesktop & Code
CursorIDE
CodexOpenAI
VS Code+ Copilot
WindsurfIDE
ClineTerminal
UNDERSTAND THE DIFFERENCE

MCP is the protocol. MVA is the architecture.
Together, they are Vurb.ts.

PROTOCOL

MCP

Model Context Protocol

An open standard for how AI agents talk to external tools. It handles transport, message format, and discovery. Think of MCP as the wire — it doesn't tell you how to build what's on the other end.

+
ARCHITECTURE

MVA

Model — View — Agent

A new architectural pattern for structuring what agents actually see. The Model owns your data. The View shapes it with domain rules and affordances. The Agent declares typed, safe actions. That's the whole contract.

=Vurb.tsA TypeScript framework for building production-grade MCP servers.
WHY MVA

Agents write your MCP servers.
MVA makes sure they get it right.

With the raw MCP SDK, you're wiring transports, writing JSON schemas by hand, and handling errors from scratch. Vurb.ts takes care of the protocol so you can focus on your business logic.

LEARNING CURVE

Skip the protocol deep-dive

You follow the same pattern every time — Model defines data, View shapes what agents see, Agent declares actions. Vurb.ts handles the MCP plumbing.

CONSISTENCY

Same structure, every server

Typed schemas, domain rules, explicit affordances — every Vurb.ts server follows the same contract. Pick up any project and know where everything lives.

AGENT-FIRST

Built for Cursor, Claude & Copilot

MVA gives coding agents a clear, repeatable target. Consistent conventions mean they write better code — and you spend less time fixing it.

SECURITY
SECURE BY DEFAULT

The MCP spec leaves security to you.
Vurb.ts ships it built-in.

The MCP SDK handles transport and messages. Auth, validation, access control? That's on you.

Vurb.ts ships with Zod schema validation on every input and a middleware pipeline for auth, rate limiting, and tenant isolation — ready to plug in, not build from scratch.

Security is part of the framework, not something you bolt on later.

OBSERVABILITY

Know exactly what every tool does, every time.

01

Structured Logs

Hook into tool lifecycle events and emit structured logs — input, output, duration, error context — to whatever backend you're already using.

02

Metrics

Track latency, throughput, and error rates per tool through the middleware pipeline. Works with Prometheus, Datadog, or whatever you're running.

03

Audit Traces

See exactly which data was accessed, which rules fired, and which actions were suggested. Built for teams that need audit trails.

04

Error Recovery

Every tool gets its own error boundary. When something breaks, you know exactly where and why — no more guessing.

WHAT CHANGES

Without MVA vs With MVA

Every line is a capability that ships in Vurb.ts today. Not a roadmap.

Without MVA
With MVA (Vurb.ts)
Tool surface
50 individual tools. LLM sees every one. Token explosion.
Action consolidation — 5,000+ operations behind ONE tool via discriminator. 10× fewer tokens.
Response shape
JSON.stringify() — the AI parses and guesses.
Structured perception — validated data + domain rules + UI blocks + action affordances in every response.
Domain context
None. 45000 — dollars? cents? yen?
System rules travel with the data. The AI knows it's cents. Always.
Next actions
AI hallucinates tool names and parameters.
Agentic HATEOAS — .suggest() with explicit affordances grounded in data state.
Large datasets
10,000 rows dumped into context. OOM crash.
Cognitive guardrails — .agentLimit() truncation + filter guidance. Context DDoS eliminated.
Security
Internal fields leak to LLM. password_hash exposed.
Egress Firewall — Zod .strict() rejects undeclared fields at RAM level. Automatic.
Visualizations
Not possible. Text-only responses.
Server-Rendered UI — ECharts, Mermaid diagrams, tables — compiled server-side. Zero hallucination.
Routing
switch/case with 50 branches.
Hierarchical groups — platform.users.list — infinite nesting with file-based autoDiscover().
Error recovery
throw Error — AI gives up or hallucinates a fix.
Self-healing — toolError() with recovery hints + suggested retry args.
Token cost
Full JSON payloads every call. Bills compound.
TOON encoding — toonSuccess() reduces response tokens by ~40%.
Type safety
Manual casting. No client types. Runtime crashes.
tRPC-style client — createVurbClient() with full end-to-end inference.
SEE THE FULL COMPARISON WITH CODE EXAMPLES →
TELL YOUR AI AGENT
"Build an MCP server for invoice management with Presenters, PII redaction on customer SSN, tenant isolation middleware, and affordances for payment actions."
ECOSYSTEM

Deploy
anywhere.
Generate from
anything.

The same ToolRegistry runs across Stdio, HTTP/SSE, and serverless runtimes without code changes. Auto-generate fully typed MCP tools from your existing infrastructure.

// DEPLOY TARGETS

Vinkius Cloud — native deployment with vurb deploy. Zero config, edge-ready, built-in auth and observability.
Vercel Edge Functions — fast cold starts in a Next.js route.
Cloudflare Workers — D1, KV, R2 bindings from 300+ edge locations.
AWS Lambda — Step Functions connector.

// DATA CONNECTORS

Prisma Generator — CRUD tools with field-level security from your schema.
OpenAPI Generator — typed tools from any REST API.
n8n Connector — n8n workflows as MCP tools.

GET STARTED

You define the architecture.
Your AI agent writes the code.

Vurb.ts gives you typed schemas, structured AI perception, built-in PII redaction, and governance — all out of the box. Ship a SKILL.md, not a tutorial.

TELL YOUR AI AGENT
"Build a patient records MCP server with Prisma. Redact SSN and diagnosis. Add an FSM that gates discharge tools until the attending physician signs off."

BUILD YOUR FIRST MCP SERVER →