pincer — MCP-сервер для Claude Code: прокси-токены вместо ключей
Шлюз для MCP: агент работает с прокси-токеном, а настоящие API-ключи лежат в зашифрованном хранилище.
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Что делает 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 сервер не заработает — сначала создайте ключи и зарегистрируйте агента.
Какие задачи решает
- выдать агенту доступ к внешним API, не отдавая ему реальные ключи
- развести разные ключи одного провайдера по разным агентам
- подписывать данные GPG-ключом, не показывая его агенту
- подключить self-hosted LLM через OpenAI-совместимый интерфейс
- ограничить агента конкретным набором инструментов
Примеры запросов агенту
- Вызови
gemini_generateс промптом «Hello world» и модельюgemini-2.0-flash - Покажи список моделей OpenRouter через
openrouter_list_models - Подпиши файл
release.tar.gzключом из хранилища черезgpg_sign_data
Как установить pincer
Командой платформы
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 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Вместо <…> подставьте свои значения
Файл настроек
{
"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>"
}
}
}
}Вместо <…> подставьте свои значения
Файл настроек
{
"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 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Вместо <…> подставьте свои значения
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о pincer
Как установить pincer в Claude Code?
Сначала npm install -g pincer-mcp, затем pincer init, pincer set для ключей и pincer agent add для прокси-токена. После этого добавьте сервер: claude mcp add pincer -e PINCER_PROXY_TOKEN=<PINCER_PROXY_TOKEN> -- npx -y pincer-mcp.
Что делает pincer?
Это MCP-шлюз, который подменяет реальные API-ключи прокси-токенами. Агент отправляет запрос с токеном, Pincer достаёт настоящий ключ из зашифрованного хранилища и выполняет вызов.
Где хранятся ключи?
В базе ~/.pincer/vault.db, зашифрованной AES-256-GCM. Мастер-ключ лежит в системном хранилище ключей и на диск не попадает.