plausible-mcp
plausible-mcp
MCP-сервер, который позволяет любому сотруднику организации делать запросы к Plausible Analytics из Claude.
Одного развёртывания достаточно для всей организации. На сервере хранится один ключ Plausible API, а каждый человек проходит аутентификацию через Google, поэтому никому не нужен собственный ключ, и никого не нужно добавлять вручную. Просто укажите домен Google Workspace в ALLOWED_DOMAINS — и любой обладатель адреса в этом домене сможет подключиться с первой попытки. Сотрудников из другого домена добавляйте в ALLOWED_EMAILS, по одному адресу.
Если вы ведёте аналитику для команды и хотите, чтобы люди сами читали числа, а не спрашивали их у вас, — это именно то, для чего сделан сервер.
Как работает аутентификация
Claude регистрируется на этом сервере с помощью динамической регистрации клиентов OAuth 2.1. Google не поддерживает динамическую регистрацию клиентов, поэтому сервер выступает как собственный сервер авторизации и делегирует вход человека в Google.
Google устанавливает, кто этот человек. Но Google не решает, может ли он читать вашу аналитику. Промежуточный слой при каждом вызове инструмента проверяет подтверждённый адрес электронной почты пользователя по ALLOWED_DOMAINS и ALLOWED_EMAILS. Если не задано ни то, ни другое, сервер отказывается запускаться.
ALLOWED_DOMAINS — это та часть, которая делает сервер доступным для всей организации: домен подтверждённого адреса должен совпадать точно, поэтому example.com допускает alice@example.com, но не alice@evil-example.com и не alice@example.com.evil.com.
Чтобы отозвать доступ у человека, удалите его из ALLOWED_EMAILS или ALLOWED_DOMAINS и переразверните сервер. Блокировка его аккаунта Google не даст ему снова войти, но список разрешений читает данные из токена, который подписал этот сервер, поэтому уже выданный токен продолжит работать до истечения срока. Ротация JWT_SIGNING_KEY делает все токены недействительными одновременно, но выводит всех из системы.
Related MCP server: Plausible MCP
Инструменты
queryвыполняет запрос к Stats API v2. Группировка по разным измерениям даёт временные ряды, разбивки и конверсии целей через один и тот же инструмент. Чтобы сравнить два периода, вызовите его по разу для каждого периода.list_sitesвозвращает домены сайтов, которые можно передавать какsite_id.usage_statsпоказывает, кто использовал сервер, как часто и каким учётным записям было отказано.
Отслеживание использования
Промежуточный слой со списком разрешений видит адрес почты каждого вызывающего, потому что обязан его проверять. Он записывает в том по пути USAGE_PATH число вызовов для каждого пользователя, время первого и последнего обращения, а также разбивку по инструментам. Отклонённые учётные записи учитываются отдельно — так вы видите, что кто-то вне списка пытается подключиться.
Читайте эти данные инструментом usage_stats. Любой, кто есть в списке разрешений, видит записи всех. Удалите USAGE_PATH, чтобы отключить отслеживание.
Конфигурация
Переменная | Обязательность | Назначение |
| да | OAuth-клиент Google, используемый для входа пользователей |
| да | Ключ Plausible с доступом к Stats API; общий для всех |
| да | Публичный URL этого сервера; Google redirect URI — это |
| один из двух | Кто может выполнять запросы. Если не задано ничего, сервер не запускается |
| рекомендуется | Подписывает токены доступа сервера. Без него перезапуск выводит всех из системы |
| нет | Где хранить регистрации OAuth-клиентов. Если не задано — хранить в памяти |
| нет | Куда записывать данные об использовании по каждому пользователю. Не задано — отслеживание отключено |
См. .env.example — там тот же список в удобном для копирования виде.
Развёртывание
В репозитории уже есть fly.toml, поэтому инструкции ниже приведены для Fly.io, но в сервере нет ничего специфичного для Fly: это один контейнер, которому нужна записываемая директория и переменные окружения выше. Замените YOUR-APP во всех местах.
Создайте OAuth-клиент в консоли Google Cloud. Выберите Web application и укажите разрешённый URI перенаправления
https://YOUR-APP.fly.dev/auth/callback. URI должен совпадать точно.Создайте приложение и его том:
fly apps create YOUR-APP --org YOUR-ORG fly volumes create plausible_mcp_data --app YOUR-APP --region fra --size 1 --yesИспользуйте
fly apps create, а неfly launch, потому чтоfly launchперезапишетfly.tomlи потеряет подключение тома и проверку здоровья.Укажите название вашего приложения в поле
appв файлеfly.toml.Задайте конфигурацию.
BASE_URLиALLOWED_DOMAINSуказываются здесь, а не вfly.toml, потому что они различаются между развёртываниями, а placeholder, попавший в репозиторий, перезапишет реальное значение при следующем деплое:fly secrets set --app YOUR-APP \ BASE_URL=https://YOUR-APP.fly.dev \ ALLOWED_DOMAINS=your-domain.org \ GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com \ GOOGLE_CLIENT_SECRET=GOCSPX-xxx \ PLAUSIBLE_API_KEY=xxx \ JWT_SIGNING_KEY="$(openssl rand -hex 32)"Не меняйте
JWT_SIGNING_KEYбез необходимости: его изменение выведет всех вне системы.fly deploy --ha=falseБез
--ha=falseFly может запустить две машины. У каждой будет свой том, поэтому вход, выполненный на одной машине, не сработает при попадании следующего запроса на другую.
Подключение к Claude
Чтобы добавить сервер для всей команды, зайдите в Settings > Connectors в claude.ai, выберите Add custom connector и введите https://YOUR-APP.fly.dev/mcp. Каждый человек будет входить через Google при первом использовании.
Добавление для Claude Code:
claude mcp add --transport http plausible https://YOUR-APP.fly.dev/mcpЛокальный запуск
uv venv && uv pip install -r pyproject.toml
cp .env.example .env # then fill it in
set -a && source .env && set +a
python server.pyДобавьте http://localhost:8000/auth/callback в список URI редиректа OAuth-клиента Google, чтобы протестировать локальный вход.
Запустите тесты через python test_server.py. Чтобы вручную проверить OAuth-поток и инструменты, используйте npx @modelcontextprotocol/inspector.
Лицензия
MIT — см. LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Cookieless dashboard aggregates for Claude and Cursor. No visitor hashes. Starter and Growth.
Give Claude only the Google Drive files you choose. Every action logged.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Ask Claude about your ads: Meta, Google, TikTok, LinkedIn, GA4 & Shopify. No AI credits.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to query Google Search Console data and manage properties via OAuth 2.0 authentication, eliminating the need for API keys.MIT
- AlicenseBqualityDmaintenanceEnables natural language interaction with Plausible Analytics data to query traffic, visitors, engagement, and more using conversational questions.41MIT
- FlicenseAqualityDmaintenanceEnables natural language querying of Google Analytics 4, Google Search Console, Meta Ads, and Google Ads data through Claude.23
- FlicenseAqualityCmaintenanceConnects Claude to Google Analytics 4 for querying website analytics via natural language, enabling traffic summaries, top pages, traffic sources, and user engagement.4
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/effektiv-spenden-jetzt/plausible-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server