Pincer

io.github.VouchlyAI由 GitHub 帳號 VouchlyAI 發布v0.1.5更新於 Oct 24, 2026

Secure grip for your agent's secrets - security-hardened MCP gateway with proxy token architecture

概覽

AI 產生的概覽

本機 MCP 閘道,讓助理以代理權杖而非真實 API 金鑰呼叫大型語言模型服務,並可簽章或解密資料。

可以做什麼
Pincer 以本機 stdio MCP 伺服器形式執行,代替代理程式呼叫外部服務。工具包含 gemini_generate、openai_chat、openai_list_models、openai_compatible_chat、openai_compatible_list_models、claude_chat、openrouter_chat、openrouter_list_models、openwebui_chat、openwebui_list_models、gpg_sign_data 與 gpg_decrypt。代理程式以代理權杖驗證,Pincer 將其解析為存放於作業系統鑰匙圈中加密保存的真實憑證,在呼叫當下即時注入,並把每次呼叫寫入具雜湊鏈的稽核檔案。
適用情境
當助理需要存取多個大型語言模型供應商,或需要執行 GPG 簽章而不想自行持有長期 API 金鑰與私鑰時適用。也適合需要依代理程式、依工具授權並保留工具呼叫稽核紀錄的情境。
執行需求
需要 Node.js 18+ 以及支援原生鑰匙圈的作業系統(macOS、Windows 或 Linux)。安裝 npm 套件 pincer-mcp,執行 pincer init 建立保管庫,存入供應商金鑰,並註冊代理程式以取得代理權杖。必須向代理程式提供 PINCER_PROXY_TOKEN;選用變數為 AUDIT_LOG_PATH、OPENAI_COMPATIBLE_URL 與 OPENWEBUI_URL。呼叫外部供應商需要網路存取。
安裝前請注意
保管庫保存真實的供應商 API 金鑰與 GPG 私鑰,因此本機與作業系統鑰匙圈帳號即為信任邊界。PINCER_PROXY_TOKEN 是持有即生效的憑證,任何取得它的人都能呼叫該代理程式被授權的工具。gpg_sign_data 與 gpg_decrypt 會處理代理程式提交的資料,且每次工具呼叫都會寫入 ~/.pincer/audit.jsonl 稽核日誌。提示詞與請求內容會轉送給所選的第三方供應商。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Pincer,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Pincer MCP 🦀

[Pincer-MCP]

[License] [TypeScript] [MCP] [NPM Version] [NPM Downloads] [MCP Registry]

Pincer-MCP is a security-hardened Model Context Protocol (MCP) gateway that eliminates the "Lethal Trifecta" vulnerability in agentic AI systems. By acting as a stateless intermediary, Pincer ensures agents never see your real API keys.

🔒 The Problem

Current AI agents store long-lived API keys in plain-text .env files or local databases. If compromised via prompt injection or host intrusion, attackers gain direct access to your:

  • Database passwords
  • Third-party API keys

✨ The Solution: Proxy Token Architecture

Pincer implements a "blindfold" security model:

  1. Agent knows: Only a unique proxy token (pxr_abc123...)
  2. Pincer knows: Mapping of proxy tokens → real API keys (encrypted in OS keychain)
  3. Agent never sees: The actual credentials
mermaid
sequenceDiagram    participant Agent    participant Pincer    participant Vault (OS Keychain)    participant External API
    Agent->>Pincer: tools/call + proxy_token: pxr_abc123    Pincer->>Vault: Decrypt real API key    Vault-->>Pincer: gemini_api_key: AIzaSy...    Pincer->>External API: API call with real key    External API-->>Pincer: Response    Pincer->>Pincer: Scrub key from memory    Pincer-->>Agent: Response (no credentials)

📦 Available Tools

  • gemini_generate: Secure Google Gemini API calls.
  • openai_chat: Chat completions with OpenAI GPT models (gpt-4o, gpt-4-turbo, gpt-3.5-turbo, etc.).
  • openai_list_models: List all available OpenAI models.
  • openai_compatible_chat: Chat completions with any OpenAI-compatible API (Azure OpenAI, Ollama, vLLM, etc.).
  • openai_compatible_list_models: List models from custom OpenAI-compatible endpoints.
  • claude_chat: Chat completions with Anthropic Claude models (Claude 3.5 Sonnet, Opus, Haiku).
  • openrouter_chat: Unified API access to 100+ models from multiple providers (OpenAI, Anthropic, Google, Meta, etc.).
  • openrouter_list_models: List all available models across OpenRouter providers.
  • openwebui_chat: OpenAI-compatible interface for self-hosted LLMs.
  • openwebui_list_models: Discover available models on an OpenWebUI instance.
  • gpg_sign_data: Sign data or files using a GPG/PGP private key stored in Pincer's vault. (Keyless Execution — agent never sees the key)
  • gpg_decrypt: Decrypt PGP-encrypted data using a vault-stored private key.

🔑 GPG Key Management

bash
# Generate a new GPG keypair (private key stored in vault)pincer key generate --name "Release Signing" --email [email protected]
# Import an existing PGP private keypincer key import ./my-key.asc --passphrase "my-passphrase"
# List all stored GPG keyspincer key list
# Export public key (safe to share)pincer key export <key-id>
# Authorize an agent for signingpincer agent authorize mybot gpg_sign_data --key <key-id>

(More callers coming soon!)

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • macOS, Windows, or Linux with native keychain support

Installation

Option 1: Global Installation (Recommended)

bash
npm install -g pincer-mcp# Now 'pincer' command is available system-wide

Option 2: Local Development

bash
git clone https://github.com/VouchlyAI/Pincer-MCP.gitcd Pincer-MCPnpm installnpm run buildnpm link  # Makes 'pincer' command available locally

Setup Vault

bash
# 1. Initialize vault (creates master key in OS keychain)pincer init
# 2. Store your real API keys (encrypted)pincer set gemini_api_key "AIzaSyDpxPq..."pincer set openai_api_key "sk-proj-..."
# 3. Register an agent and generate proxy tokenpincer agent add openclaw# Output: 🎫 Proxy Token: pxr_V1StGXR8_Z5jdHi6B-myT
# 4. Authorize the agent for specific toolspincer agent authorize openclaw gemini_generate

Multi-Key Support

Store multiple keys for the same tool and assign them to different agents:

bash
# Store two different Gemini API keyspincer set gemini_api_key "AIzaSy_KEY_FOR_CLAWDBOT..." --label key1pincer set gemini_api_key "AIzaSy_KEY_FOR_MYBOT..." --label key2
# View all stored keyspincer list
# Assign specific keys to each agentpincer agent add clawdbotpincer agent authorize clawdbot gemini_generate --key key1
pincer agent add mybot  pincer agent authorize mybot gemini_generate --key key2
# View agent permissionspincer agent list

Result: clawdbot uses key1, mybot uses key2 - perfect for rate limiting or cost tracking!

Run the Server

bash
npm run dev

Configure Your Agent

Give your agent the proxy token (not the real API key):

bash
export PINCER_PROXY_TOKEN="pxr_V1StGXR8_Z5jdHi6B-myT"

Tool-to-Secret Name Mappings

When storing secrets, you must use the correct secret name for each tool. See the Tool Mappings Guide for a complete reference.

When you run pincer agent authorize myagent gemini_generate, Pincer will inject the gemini_api_key secret when that tool is called.

Make a Tool Call

Your agent sends requests with the proxy token in the body:

json
{  "jsonrpc": "2.0",  "method": "tools/call",  "params": {    "name": "gemini_generate",    "arguments": {      "prompt": "Hello world",      "model": "gemini-2.0-flash"    },    "_meta": {      "pincer_token": "pxr_V1StGXR8_Z5jdHi6B-myT"    }  }}

Pincer maps the proxy token to the real API key and executes the call securely.

🏗️ Architecture

Two-Tiered Vault System

Tier 1: Master Key (OS Keychain)

  • Stored in macOS Keychain, Windows Credential Manager, or GNOME Keyring
  • Never touches the filesystem
  • Accessed only for encryption/decryption

Tier 2: Encrypted Store (SQLite)

  • Database at ~/.pincer/vault.db
  • Three tables:
    • secrets: Real API keys (AES-256-GCM encrypted)
    • proxy_tokens: Proxy token → Agent ID mappings
    • agent_mappings: Agent ID → Tool authorization

Authentication Flow

Request (_meta.pincer_token: pxr_xxx)  ↓Gatekeeper: Extract proxy token from body  ↓Vault: Resolve pxr_xxx → agent_id → tool_name → real_api_key  ↓Injector: JIT decrypt & inject real key  ↓Caller: Execute external API call  ↓Scrubber: Overwrite key in memory with zeros  ↓Audit: Log to tamper-evident chain

🔐 Security & Compliance

Pincer is built for enterprise-grade security:

  • Hardware-Backed Cryptography: Master encryption keys never leave the OS-native keychain.
  • Proxy Token Isolation: Agents only handle ephemeral pxr_ tokens; they never touch real credentials.
  • JIT Decryption: Secrets are decrypted only for the duration of the API call.
  • Zero-Footprint Memory: Sensitive data is scrubbed (zeroed out) from memory immediately after use.
  • Fine-Grained Authorization: Strict per-agent, per-tool access control policies.
  • Tamper-Evident Audit Log: Append-only tool call history with SHA-256 chain-hashing.
  • Hardened Execution: Schema validation on all inputs and protected environment execution.
  • Stdio Compatible: Fully compatible with the standard Model Context Protocol transport.

🔍 Audit Logs

Every tool call is logged to ~/.pincer/audit.jsonl with both UTC and Local timestamps, plus character counts and estimated token usage:

json
{  "agentId": "openclaw",  "tool": "gemini_generate",  "duration": 234,  "status": "success",  "input_chars": 156,  "output_chars": 423,  "estimated_input_tokens": 39,  "estimated_output_tokens": 106,  "timestamp_utc": "2026-02-05T08:32:00.000Z",  "timestamp_local": "2/5/2026, 2:02:45 PM",  "chainHash": "a1b2c3d4e5f6g7h8",  "prevHash": "0000000000000000"}

Token Estimation: Pincer automatically estimates token usage using a 4:1 character-to-token ratio (~4 characters per token average). This provides consistent cost tracking across all AI providers without relying on provider-specific APIs.


Chain hashes provide tamper detection - any modification breaks the SHA-256 chain.
## 🧪 Development
```bash# Install dependenciesnpm install
# Run testsnpm test
# Run with watch modenpm run dev
# Build for productionnpm run build

📚 Documentation

🤝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

📄 License

BSL 1.1 (Business Source License) — See LICENSE for details. Converts to Apache 2.0 on 2028-04-01.


Built with ❤️ for a more secure AI future.

來源:README.md,提交 5ca44e7

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.5最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。