/ ディレクトリ / プレイグラウンド / 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と組み合わせて10倍の力を

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
呼び出しあたりのトークン
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を見る