/ 디렉터리 / 플레이그라운드 / 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 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기