/ 目录 / 演练场 / vurb.ts
● 社区 vinkius-labs ⚡ 即开即用

vurb.ts

作者 vinkius-labs · vinkius-labs/vurb.ts

A TypeScript framework for building MCP servers with type-safe tools, PII redaction, and FSM state gates — think Express.js for MCP.

Vurb.ts is a framework, not an MCP server. It's for developers building their own MCP servers. Ships with a presenter layer that strips undeclared DB columns, PII redaction at a 'Late Guillotine' stage, FSM state gates preventing out-of-order tool calls, and a scaffolding CLI that supports Prisma, n8n, and OpenAPI vectors.

为什么要用

核心特性

实时演示

实际使用效果

vurb-ts.replay ▶ 就绪
0/0

安装

选择你的客户端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "vurb-ts": {
      "command": "npx",
      "args": [
        "-y",
        "vurb.ts"
      ],
      "_inferred": true
    }
  }
}

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "vurb-ts": {
      "command": "npx",
      "args": [
        "-y",
        "vurb.ts"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "vurb-ts": {
      "command": "npx",
      "args": [
        "-y",
        "vurb.ts"
      ],
      "_inferred": true
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "vurb-ts": {
      "command": "npx",
      "args": [
        "-y",
        "vurb.ts"
      ],
      "_inferred": true
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "vurb-ts",
      "command": "npx",
      "args": [
        "-y",
        "vurb.ts"
      ]
    }
  ]
}

Continue 使用服务器对象数组,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "vurb-ts": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "vurb.ts"
        ]
      }
    }
  }
}

加入 context_servers。Zed 保存后热重载。

claude mcp add vurb-ts -- npx -y vurb.ts

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: vurb.ts

How to build a PII-safe MCP server with Vurb.ts

👤 Developers building an MCP for a product with customer data ⏱ ~60 min advanced

何时使用: You're wrapping an internal system and must guarantee PII never leaves the perimeter.

前置条件
  • Node 20+ and npm — Standard
  • Vurb CLI — npm install -g @vurb/cli
步骤
  1. Scaffold
    Run vurb create customer-mcp with the prisma vector, and open the generated src/tools/ folder.✓ 已复制
    → Scaffolded project
  2. Declare a presenter
    Add a presenter for the Customer model that exposes only id, plan, and country. Everything else (email, phone, address) is physically stripped.✓ 已复制
    → LLM sees only declared fields
  3. Add PII redaction on free-text fields
    On the Note model's body field, apply .redactPII() at the Late Guillotine.✓ 已复制
    → Emails/phones inside note bodies masked
  4. Test with the in-memory pipeline
    Write a @vurb/testing case that feeds a record with fake PII and asserts the output is redacted.✓ 已复制
    → Test passes

结果: An MCP server where PII leakage is a compile/runtime impossibility, not a code review item.

注意事项
  • Redaction regex never catches everything — Combine presenter whitelist + redaction — don't rely on redaction alone
  • Presenter drift over time — CI assertion: snapshot presenter output for key models; fail PRs that change it without review

Enforce correct tool-call order with FSM state gates

👤 MCP authors building multi-step flows (booking, checkout) ⏱ ~30 min intermediate

何时使用: You have tools that must run in a specific order; you want the framework to enforce it.

步骤
  1. Define state machine
    Create an FSM for checkout: cart → quote → payment → confirm. Each tool gated by the state.✓ 已复制
    → State definition file
  2. Attach gates to tools
    Tool confirm_order only allowed from state=payment.✓ 已复制
    → Calling out-of-order returns a gate error

结果: Agents physically cannot skip prerequisite steps.

Deploy a Vurb MCP to Cloudflare Workers or Vinkius Edge

👤 Builders wanting global low-latency MCPs ⏱ ~20 min intermediate

何时使用: You want the MCP close to users, not in a single region.

步骤
  1. Choose target
    vurb deploy --target cloudflare✓ 已复制
    → Worker published
  2. Smoke test
    List tools via the deployed URL.✓ 已复制
    → Tool list returns from CF

结果: A globally distributed MCP server.

组合

与其他 MCP 搭配,撬动十倍杠杆

vurb-ts + jetski

Build with Vurb; operate behind Jetski for OAuth + analytics

Generate a Vurb MCP and deploy behind Jetski so users authenticate via OAuth and we get prompt analytics.✓ 已复制
vurb-ts + proxy-2

Aggregate your Vurb MCP alongside third-party MCPs via mcp-proxy

Register the deployed Vurb MCP as an upstream of mcp-proxy so teammates see it alongside github/sentry.✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
(framework) You write tools; framework exposes them N/A — Vurb.ts is for authoring MCP servers, not a runtime MCP to call n/a

成本与限制

运行它的成本

API 配额
Framework itself has no runtime cost; hosting costs depend on deploy target
每次调用 Token 数
Varies by the tools you build
费用
Free, open source
提示
Edge deploys are cheap (CF Workers free tier handles modest traffic).

安全

权限、密钥、影响范围

凭据存储: Whatever your deployed tools need; framework provides middleware hooks for injection
数据出站: Depends entirely on the tools you write

故障排查

常见错误与修复

Tool file added but not showing up

File-based router watches src/tools/; restart dev server or check the export pattern.

验证: vurb dev logs
Presenter strips too much

Ensure presenter fields match the schema; add missing fields back explicitly.

验证: Unit test presenter output
State gate error on a valid call

Check FSM transitions — source state might not match. Print current state in middleware.

验证: Add a log in state middleware

替代方案

vurb.ts 对比其他方案

替代方案何时用它替代权衡
FastMCP (TypeScript)You want the minimum boilerplate, no opinionated guardsNo PII/FSM features — you bolt them on
@modelcontextprotocol/sdkYou want raw protocol controlBring your own auth, redaction, tests
volcano-agent-sdkYou're building agents that *consume* MCPs, not serversDifferent role in the stack

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills