/ 目錄 / 演練場 / 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