# pincer

Шлюз для MCP: агент работает с прокси-токеном, а настоящие API-ключи лежат в зашифрованном хранилище.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Автор: VouchlyAI
- Лицензия: не указана · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/VouchlyAI/Pincer-MCP
- Обновлён: 2026-02-18
- HTML: https://affpapa.org/nevibecode/mcp/pincer

## Что делает

Pincer ставится между агентом и внешними API. Агент получает только прокси-токен вида `pxr_...`, а реальные ключи хранятся в зашифрованной базе `~/.pincer/vault.db`, мастер-ключ от которой лежит в системном хранилище (macOS Keychain, Windows Credential Manager, GNOME Keyring). Когда агент вызывает инструмент, Pincer подставляет настоящий ключ, выполняет запрос и вычищает его из памяти.

Внутри — набор инструментов для работы с моделями: `gemini_generate`, `openai_chat`, `claude_chat`, `openrouter_chat`, `openwebui_chat` и их аналоги для списков моделей, плюс `openai_compatible_chat` для любого OpenAI-совместимого эндпоинта. Отдельно есть `gpg_sign_data` и `gpg_decrypt`: приватный ключ PGP тоже хранится в хранилище, агент его не видит. Доступ выдаётся точечно — `pincer agent authorize <агент> <инструмент>`, при желании с привязкой к конкретному ключу через `--key`.

Нужен Node.js 18+ и система с поддержкой нативного хранилища ключей. Без инициализации хранилища (`pincer init`) и без прокси-токена в переменной `PINCER_PROXY_TOKEN` сервер не заработает — сначала создайте ключи и зарегистрируйте агента.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `PINCER_PROXY_TOKEN`, `OPENWEBUI_URL`, `OPENAI_COMPATIBLE_URL`, `AUDIT_LOG_PATH` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env PINCER_PROXY_TOKEN=<PINCER_PROXY_TOKEN> --env OPENWEBUI_URL=<OPENWEBUI_URL> --env OPENAI_COMPATIBLE_URL=<OPENAI_COMPATIBLE_URL> --env AUDIT_LOG_PATH=<AUDIT_LOG_PATH> --transport stdio pincer -- npx -y pincer-mcp
```
Вместо <…> подставьте свои значения

### Codex

**Командой платформы**
```bash
codex mcp add pincer --env PINCER_PROXY_TOKEN=<PINCER_PROXY_TOKEN> --env OPENWEBUI_URL=<OPENWEBUI_URL> --env OPENAI_COMPATIBLE_URL=<OPENAI_COMPATIBLE_URL> --env AUDIT_LOG_PATH=<AUDIT_LOG_PATH> -- npx -y pincer-mcp
```
Вместо <…> подставьте свои значения

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "pincer": {
            "command": "npx",
            "args": [
                "-y",
                "pincer-mcp"
            ],
            "env": {
                "PINCER_PROXY_TOKEN": "<PINCER_PROXY_TOKEN>",
                "OPENWEBUI_URL": "<OPENWEBUI_URL>",
                "OPENAI_COMPATIBLE_URL": "<OPENAI_COMPATIBLE_URL>",
                "AUDIT_LOG_PATH": "<AUDIT_LOG_PATH>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "pincer": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "pincer-mcp"
            ],
            "env": {
                "PINCER_PROXY_TOKEN": "<PINCER_PROXY_TOKEN>",
                "OPENWEBUI_URL": "<OPENWEBUI_URL>",
                "OPENAI_COMPATIBLE_URL": "<OPENAI_COMPATIBLE_URL>",
                "AUDIT_LOG_PATH": "<AUDIT_LOG_PATH>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e PINCER_PROXY_TOKEN=<PINCER_PROXY_TOKEN> -e OPENWEBUI_URL=<OPENWEBUI_URL> -e OPENAI_COMPATIBLE_URL=<OPENAI_COMPATIBLE_URL> -e AUDIT_LOG_PATH=<AUDIT_LOG_PATH> pincer npx -y pincer-mcp
```
Вместо <…> подставьте свои значения

## Когда брать
- выдать агенту доступ к внешним API, не отдавая ему реальные ключи
- развести разные ключи одного провайдера по разным агентам
- подписывать данные GPG-ключом, не показывая его агенту
- подключить self-hosted LLM через OpenAI-совместимый интерфейс
- ограничить агента конкретным набором инструментов

## Примеры запросов агенту
- Вызови `gemini_generate` с промптом «Hello world» и моделью `gemini-2.0-flash`
- Покажи список моделей OpenRouter через `openrouter_list_models`
- Подпиши файл `release.tar.gz` ключом из хранилища через `gpg_sign_data`

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 392262
- [World Monitor](https://affpapa.org/nevibecode/mcp/world-monitor.md) — MCP-сервер · ★ 89609
- [mcp](https://affpapa.org/nevibecode/mcp/kubeshark-mcp.md) — MCP-сервер · ★ 12110
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP-сервер · ★ 7718
- [jshookmcp](https://affpapa.org/nevibecode/mcp/jshookmcp.md) — MCP-сервер · ★ 2066
- [OpenOSINT](https://affpapa.org/nevibecode/mcp/openosint.md) — MCP-сервер · ★ 1816

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
