프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Gvnr

제작자: mightbesaad버전 1.8.1i★ –i클라우드에서 실행
레지스트리 이름dev.gvnr/gvnr

설치

개요

제작자가 쓴 설명(영어 원문)

Budget & cost control for AI agents — per-agent spend caps + rate limits before each call.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 클라우드에서 실행
  • 전송 방식: Streamable HTTP
  • 카테고리: 기타
  • 입력해야 할 값: Authorization

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

이 주소는 요청 header에 키가 필요한데, 커넥터 추가 메뉴에서는 넣을 수 없어요. 대신 Claude Code, Cursor, VS Code를 쓰세요.

터미널에서 이 명령어를 실행하세요

claude mcp add --transport http gvnr https://gvnr.dev/mcp --header 'Authorization: your-value'

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "gvnr": {
      "url": "https://gvnr.dev/mcp",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "gvnr": {
      "type": "http",
      "url": "https://gvnr.dev/mcp",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 주소는 요청 header에 키가 필요한데, 커넥터 추가 메뉴에서는 넣을 수 없어요. 대신 Claude Code, Cursor, VS Code를 쓰세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • Authorization 비밀 필수 HTTP header
    Bearer API key obtained from POST https://gvnr.dev/v1/account

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

아직 이 서버의 도구 목록을 읽지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 도메인 gvnr.dev 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    엔드포인트 응답

    아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요

  • … 아직 점검 안 함

    OAuth로 로그인

    아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 32433개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 32433개 중 11%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 32433개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Gvnr, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: Authorization

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.8.1)은 5개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211어제 업데이트
설치

Symantec Cloud DLP AIops

제작자: AIops-tools

Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.

내 컴퓨터에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

Gvnr

Spend caps, rate coordination, idempotency, and a human-in-the-loop gate for AI agents — enforced before the call, not after the invoice. One MCP endpoint, settled via x402 (USDC on Base). No proxy, no self-hosting, no infrastructure to deploy.

Listed on the Official MCP Registry as dev.gvnr/gvnr.


The problem

Agents cost 10–12× more than estimated in production. System prompts, retry loops, and tool calls multiply fast — a runaway agent can generate a $47,000 bill in 11 days. The usual fix, self-hosting a gateway like LiteLLM, means running infrastructure most developers won't set up.

Gvnr is the hosted alternative: an external authority your agent checks before it spends. Your agent asks "am I clear to make this call?" and acts on the answer.


How it works

Gvnr is not an LLM proxy — your tokens never pass through it, and you pay your model provider directly. Gvnr governs the *decision to spend*, in two independent meters:

1. The governance-operation quota — what you buy from Gvnr. Your account holds a balance of governance operations (operations_remaining). One budget_clear burns one op. You top this up with USDC; it's decoupled from your LLM spend. get_balance reports it.

2. The spend envelope — a USD cap *you* set, per agent. set_envelope(agent_id, limit_usd, window) gives an agent a daily or per-session USD ceiling. Gvnr tracks estimated spend against it and denies once it's exceeded — this is the runaway guardrail. No dollars move; it's an accounting limit you control.

A budget_clear is approved only when both hold: the account has ops left in the quota, and the agent is under its envelope. The loop:

  1. Your agent calls budget_clear(agent_id, model, estimated_tokens) before each LLM request.
  2. Gvnr checks the op quota and the agent's envelope, and returns { approved: true, ... } or { approved: false, reason }.
  3. If denied, your agent skips (or escalates via request_approval).
  4. After the LLM responds, call reconcile(...) with the real token counts so the envelope tracks actual cost, not the estimate.

Quick start

1. Provision an account
curl -X POST https://gvnr.dev/v1/account

{ "api_key": "bg_...", "account_id": "...", "operations_remaining": 25 }

New accounts include 25 free trial ops — enough to run the full loop (set an envelope, budget_clear, reconcile) before you fund anything. Your api_key is the credential for every call; account_id is just an internal reference for support. Account creation is credential-only by design (agent-native) — email is optional, set separately via POST /v1/account/notification-email, and used only for human approval notices.

2. Top up your governance-op quota

Pay-as-you-go: 1,000 ops per $1, any amount (try the whole rail for $1), USDC on Base. Open the pay page, name your amount, and pass your API key:

https://gvnr.dev/pay?usd=1&api_key=bg_YOUR_KEY

Send USDC to the address shown and paste your tx hash — ops are credited proportional to the amount received, after on-chain verification. Programmatic clients can submit the hash directly:

curl -X POST \

-H "Authorization: Bearer bg_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"tx_hash":"0x..."}' \ https://gvnr.dev/v1/account/topup-verify

{ "operations_remaining": 1000, "credited_ops": 1000, "credited_usd": 1 }

Or settle in one round-trip with an x402 client (Base MCP, AgentKit, x402-fetch) — name your own amount:

POST https://gvnr.dev/v1/account/topup?usd=5      # → 402 challenge → pay → 5,000 ops credited
3. Set a spend envelope for your agent
curl -X PUT \

-H "Authorization: Bearer bg_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"agent_id":"my-agent","limit_usd":5,"window":"daily"}' \ https://gvnr.dev/v1/budget/envelope

{ "success": true, "agent_id": "my-agent", "limit_usd": 5, "window": "daily" }

4. (optional) Set a rate envelope per (agent, provider, model)
curl -X PUT \

-H "Authorization: Bearer bg_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"agent_id":"my-agent","provider":"anthropic","model":"claude-sonnet-4-6","requests_per_minute":30}' \ https://gvnr.dev/v1/rate/envelope

5. Before each LLM request: budget_clear, then rate_check
curl -X POST \

-H "Authorization: Bearer bg_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"agent_id":"my-agent","model":"claude-sonnet-4-6","estimated_tokens":2000}' \ https://gvnr.dev/v1/budget/clear

{ "approved": true, "remaining_usd": 4.994, "operations_remaining": 18999 }

curl -X POST \ -H "Authorization: Bearer bg_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"agent_id":"my-agent","provider":"anthropic","model":"claude-sonnet-4-6"}' \ https://gvnr.dev/v1/rate/check

{ "allowed": true, "requests_remaining_this_minute": 29 }

6. (optional) Dedupe retries with idempotency_check
curl -X POST \

-H "Authorization: Bearer bg_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"key":"job-abc-123","ttl_seconds":3600}' \ https://gvnr.dev/v1/idempotency/check

First call: { "is_first_call": true, "ttl_remaining_seconds": 3600 }

Replay: { "is_first_call": false, "ttl_remaining_seconds": 3598 }

7. After the LLM responds, reconcile against actual usage
curl -X POST \

-H "Authorization: Bearer bg_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"agent_id":"my-agent","actual_input_tokens":1800,"actual_output_tokens":2400}' \ https://gvnr.dev/v1/budget/reconcile

{ "ok": true, "drift_usd": 0.003, "remaining_usd": 4.991, "operations_remaining": 18999 }

reconcile adjusts the spend envelope by the drift between your estimate and actual cost (the op quota is untouched). You don't pass the model again — reconcile reuses the one from your prior budget_clear. Anthropic, OpenAI, and Gemini all return usage fields with real token counts — pass those in to keep the envelope honest.


Human-in-the-loop approvals

When an agent hits a denial or a sensitive action, pause for a human instead of failing:

# 1. Open a request — returns an approval_id and a mobile-friendly approval_url

curl -X POST -H "Authorization: Bearer bg_YOUR_KEY" -H "Content-Type: application/json" \ -d '{"agent_id":"my-agent","action_summary":"Spend $40 on a research run","ttl_seconds":3600}' \ https://gvnr.dev/v1/approval/request

{ "approval_id": "...", "approval_url": "https://gvnr.dev/approve/...", "expires_at": ... }

2. The human opens approval_url and taps approve / deny (emailed if notification-email is set).

3. Your agent polls until the decision lands:

curl -H "Authorization: Bearer bg_YOUR_KEY" \ https://gvnr.dev/v1/approval/check/APPROVAL_ID

{ "decision": "pending" } → "approved" | "denied" | "timeout"

The agent proceeds on approved, skips on denied, and handles timeout (no decision before expires_at) however it likes.


MCP setup

Add to Claude Desktop or any MCP-compatible client:

https://gvnr.dev/mcp?api_key=bg_YOUR_KEY
Claude Code
claude mcp add gvnr --transport http \

"https://gvnr.dev/mcp?api_key=bg_YOUR_KEY"

MCP tools
ToolDescription
budget_clear(agent_id, model, estimated_tokens)Check clearance against the op quota + spend envelope; burns one op
set_envelope(agent_id, limit_usd, window?)Create or update an agent's USD spend cap
get_balance()Remaining governance-operation quota (operations_remaining)
reconcile(agent_id, actual_input_tokens, actual_output_tokens)Apply estimate-vs-actual drift to the spend envelope after the LLM responds
set_rate_envelope(agent_id, provider, model, requests_per_minute)Allocate a per-(agent, provider, model) rate share
rate_check(agent_id, provider, model)Approve or deny against the rate envelope; returns retry_after_ms on denial
idempotency_check(key, ttl_seconds?)Dedupe retries on a caller-supplied key; returns is_first_call
request_approval(agent_id, action_summary, ttl_seconds?)Open a human-in-the-loop approval request; returns an approval_id
check_approval(approval_id)Poll an approval: pending / approved / denied / timeout

REST API

All endpoints except POST /v1/account require Authorization: Bearer bg_YOUR_KEY.

TypeScript users: generate full types from the live OpenAPI spec — npx openapi-typescript@latest https://gvnr.dev/openapi.json -o types/gvnr.d.ts. See TYPESCRIPT.md for the integration pattern (typed fetch, x402 topups, discriminated response unions).

Account & top-up
MethodPathDescription
POST/v1/accountProvision account — returns api_key
GET/v1/account/balanceRemaining governance-op quota (operations_remaining)
GET/v1/packs/:pack/infoPublic — preset details, USDC address, raw amount
POST/v1/account/topup-verify/:packSubmit tx hash → verify on-chain → credit (proportional to amount received)
POST/v1/account/topup?usd= x402-gated pay-as-you-go top-up — name your amount (min $1, max $100)
POST/v1/account/topup/:packx402-gated preset top-up (machine clients)
Budget
MethodPathDescription
POST/v1/budget/clearClearance call — approve or deny
POST/v1/budget/reconcileApply estimate-vs-actual drift to the envelope
PUT/v1/budget/envelopeCreate or update agent spend cap
GET/v1/budget/envelope/:agent_idRead envelope state
DELETE/v1/budget/envelope/:agent_idDelete an agent's envelope
Rate · Idempotency · Approval
MethodPathDescription
PUT/v1/rate/envelopeSet a per-(agent, provider, model) RPM share
POST/v1/rate/checkRuntime rate check — allowed flag, retry_after_ms on denial
POST/v1/idempotency/checkDedupe on a caller-supplied key — is_first_call
POST/v1/approval/requestOpen a human approval request — returns approval_id
GET/v1/approval/check/:approval_idPoll decision: pending / approved / denied / timeout
Clearance response
{ "approved": true, "remaining_usd": 4.994, "operations_remaining": 18999 }
{ "approved": false, "remaining_usd": 0, "reason": "envelope_exceeded" }

Denial reasons: no_credits (op quota exhausted) · no_envelope (agent has no envelope) · envelope_exceeded

Status codes

A denial is not an HTTP error — it's a 200 with a flag, so check the body, not the status:

SituationHTTPBody
budget_clear / rate_check allow or deny200`{ approved/allowed: true \false, ... }`
Top-up requires payment402x402 challenge (in the payment-required header; see Billing)
Missing / invalid API key401{ error }

| Per-IP account-creat

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기