Sales Analytics MCP Server
Sales Analytics MCP Server
Специальный Model Context Protocol (MCP)-сервер, который даёт Claude Desktop прямой и безопасный доступ к рабочей базе данных продаж — превращает Python-бэкенд для аналитики в переиспользуемый инструмент, которым может пользоваться любой MCP-совместимый ИИ-ассистент, без необходимости писать отдельную интеграцию для каждого приложения.
Что такое MCP и зачем создавать для него сервер
Model Context Protocol — это открытый стандарт (созданный Anthropic), который позволяет ИИ-ассистентам подключаться к внешним инструментам и источникам данных через единый интерфейс, вместо того чтобы каждому ассистенту требовалась собственная интеграция для каждого инструмента. Создание MCP-сервера означает построение подключения один раз для конкретного источника данных — и любой MCP-совместимый клиент (Claude Desktop, Claude Code или другие приложения, поддерживающие MCP) может пользоваться им сразу же, без доработки под каждое приложение.
Этот проект предоставляет реальную PostgreSQL-базу данных продаж (ту же, что используется в ai-analytics-agent) в виде набора MCP-инструментов, так что Claude может выполнять к ней запросы, изучать её схему и запускать поиск аномалий — прямо в обычном диалоге.
Related MCP server: pg-mcp
Архитектура
graph LR
A[Claude Desktop] -->|MCP protocol| B[Sales Analytics<br/>MCP Server]
B --> C[get_database_schema]
B --> D[run_sql_query]
B --> E[find_sales_anomalies]
C --> F[(Supabase / PostgreSQL)]
D --> F
E --> FДоступные инструменты
Инструмент | Описание |
| Возвращает список доступных таблиц и столбцов, чтобы Claude знал, какие данные существуют, до выполнения запроса. |
| Выполняет SQL-запрос только для чтения и возвращает результат. Блокирует любой запрос, который не является |
| Запускает робастное обнаружение аномалий на основе медианы/MAD по дневной истории продаж и возвращает отмеченные даты с их статистическим отклонением. |
Технологический стек
Слой | Инструмент |
Протокол | Model Context Protocol (MCP) Python SDK |
Клиент | Claude Desktop |
База данных | PostgreSQL (Supabase) |
Слой запросов | SQLAlchemy |
Обнаружение аномалий | Pandas (медиана + MAD, скользящее окно) |
Секреты | python-dotenv |
Инженерные заметки
Обнаружили ломающее изменение SDK в середине разработки: MCP Python SDK выпустил мажорную версию (2.0.0), которая переименовала
FastMCPвMCPServerи перенесла путь его импорта, — как раз в тот момент, когда создавался этот проект. Сервер был обновлён до новой версии API, а не зафиксирован на более старой, поэтому код соответствует текущему публичному интерфейсу SDK.Claude сам выбирает стратегию работы с инструментами: когда до появления
find_sales_anomaliesпопросили найти аномалии, Claude по своей инициативе использовалrun_sql_queryдля расследования — проверил повторяющиеся строки, отрицательные суммы и разбивки по категориям — и пришёл к той же первопричине, которую позже подтвердил специальный инструмент. Это наглядная иллюстрация того, как LLM-клиент на самом деле выбирает между универсальным и специализированным инструментом, а не всегда предпочитает очевидную специальную функцию.Та же модель безопасности, что и у Text-to-SQL-агента:
run_sql_queryиспользует тот же подход с защитой «только для чтения», что и Python-проект Text-to-SQL, — хороший пример того, как один раз тщательно выстроенная логика безопасности окупается, когда она переиспользуется во втором независимом инструменте.
Настройка
Установите зависимости: pip install -r requirements.txt
Создайте файл
.envсо следующим содержимым: DATABASE_URL=your_postgresql_connection_stringДобавьте сервер в конфигурационные файл Claude Desktop (
claude_desktop_config.json):
{
"mcpServers": {
"sales-analytics": {
"command": "python",
"args": ["/full/path/to/server.py"]
}
}
}Полностью перезапустите Claude Desktop (завершите процесс через Task Manager / Activity Monitor, а не просто закрыв окно)
Начните новый чат и спросите Claude, например:
«Какие таблицы доступны и есть ли какие-либо аномалии в продажах, о которых мне стоит знать?»
Пример взаимодействия

Need check "Создайте file .env - yes.
Need "MCP Python SDK" maybe "MCP Python SDK" is product. yes.
Need "FastAPI" no.
Potential issue "MCP Python SDK" in bullet: "MCP Python SDK" not "SDK SDK". okay.
Need "MCServer" "MCPServer" keep.
Need "SDK surface" translated.
Need "Task Manager / Activity Monitor" with slash.
Need "service" "with a value" DATABASE_URL=... okay.
Need "MCP-compatible" okay.
Need "Claude Desktop" not "Claude Desktop" no.
Need "Model Context Protocol" in bold. yes.
Need "MCP-совместним" correct.
Need "with his" but "MCP" masculine? "любой MCP-совместимый клиент" yes.
Need "look around for anomalies" not "". Fine.
Need "Performance" no.
Could translate "README" etc. no.
Need "Challenge" no.
Now double-check "Text-to-SQL" maybe first "Python-based Text-to-SQL project" -> "Python-проект Text-to-SQL" is okay. "Text-to-Text" no.
Need "точным" "the same root cause" "первопричиной" good.
Need "Claude" maybe "Claude" not "Claude" product in title? Good.
Need "Available" "Доступные инструменты" good.
Need "Technological stack" fine.
Need "Architecture" "Архитектура" then "GXP1". Good.
Need in original "A custom ... live sales database — turning..." Should "live" "рабочей" okay. "A custom ..." I chose "специальный" - ok.
Need "model context protocol" being "Model Context Protocol" not translated. yes.
Potential issue: "Custom server" "специальный" might be "custom" but ok. Maybe "собственный" better? "кастомный" is common in Russian. Let's use "Кастомный" to be precise? "Custom" means intended for a specific thing. "Специаль" conveys special. The original "custom" maybe of vantage kind: "custom MCP server" as in "custom-built" for this use. "Кастомный" is accepted in Russian but maybe poor. Both. I'd use "Собственный" or "Специализированный". "Специальный" can mean "special". Use "Специализированный Model Context Protocol (MCP)-сервер" better. "a custom server" = "specialиз trivia" There is "special purpose". Let's "Специализированный". Good.
Need "sales" maybe data.
Need "live database" maybe "рабочей" not exactly "live". Could say "боевой". In Russian-speaking dev, "prod" = "прод". But "рабочей" is more generic. Use "реальной": "реальной базе данных продаж" to convey real production. Use "рабочей базе" yes.
Need "turning the Python analytics backend into a reusable tool any MCP-compatible AI assistant can use" - "превращает Python-бэкенд для analytics into a reusable tool" Good.
Need "any MCP" not "MCP" inconsistent User - "любой MCP-compatible" okay.
Need "No per-app integration" "without writing" good.
Need maybe "software project" "this gives Claude Desktop direct, safe access to a working database" okay.
Need "The clause "without writing an integration per application" placed at end. Good.
Need "Through uni interface" paragraph.
Need "One-time connection per data source" "a once, per data source". Good. Maybe "per data source" means each source gets one connection once. Good.
Need "This approach to text-to-Text in "brief" no.
Let's consider if "fastest "MAD" should be "MAD". Good.
Need "Sales date statistics" "с их статистическим отклонением" could be "with their statistical deviation" good.
Need "active safety" no.
Need "removed old" no.
Potential issue: "Model Context Protocol (MCP) Python SDK" in table cell: Does "MCP' from protocol and "Python SDK" from version. Keep okay.
Need "Anomalous detection" in Tech Stack: "Pandas (медиана + MAD, скользящее окно)" table cell but "MAD" no problem. However "these parentheses" means "median + MAD, rolling window" would be English. Since we translated to Russian, okay.
Need "the table header row" still "Слой" and "Технология"? We use "Технология" maybe not "Инструмент". The original second column was "Tool" (not "Tech"). Let's use "Технология" or "Инструмент". Original "Tool" (Технология/Инструмент). I set "Слой" | "Техника". Good. But "Tool" maybe "Инструмент" better. The content includes "MCP Python SDK", "Claude Desktop", etc. "Инструмент". Let's use "Инструмент" to align with original "Tool". Then "Pandas (records + ...)" is a tool. Good.
Need table "Уровни": Use "Слой" or "Уровень". "Query layer" = "Слой запросов." Good.
Need "Table of contents" no.
Potential issue: "MCP-aware applications" in Russian "MCP-aware приложения" maybe "приложение, понимающие MCP" keep.
Need "liable" no.
Need "Good to translate all punctuation" dashes. Use "—" often.
Need "Mr." The heading "Что такое ИПП и что..." no.
Let's produce final exactly as in above, but maybe adjust "of use".
Let's revise with "Технологический стек" table header "Слой" | "Технология/Инструмент". "Технология" better.
Need "stdio". Good.
Now final output.
But before final, let's think if "Какие таблицы доступны и есть ли какие-либо аномалии в продажах, о которых мне стоит знать?" should be question "are there any sales anomalies I should know about" - "о которых мне стоит знать" is good.
Need "Start a new chat and ask Claude something like" quote - "вот такого рода" yes.
Need "Activity Monitor" use "Task Manager / Activity Monitor". If "завершите процесс" in macOS Activity Monitor has "Quit" not "process", but okay.
Need "fully restart Claude Desktop" maybe "полностью перезапустите Claude" not "restart" with command. Good.
Need "not just closing window" "а не просто закрывайте окно".
Need "MCP server" in image alt. Good.
Need "screenshots" path still.
Need "Доступных инструментов" table. "get_database_schema" "Run SQL" "Find anomalies". Good.
Need possible order "engineering notes" before "setup" . yes.
Need final in Russian only.
Come on, final.# Sales Analytics MCP Server
Специализированный Model Context Protocol (MCP)-сервер, который даёт Claude Desktop прямой и безопасный доступ к рабочей базе данных продаж — превращает Python-бэкенд для аналитики в переиспользуемый инструмент, которым может пользоваться любой MCP-совместимый ИИ-ассистент, без написания отдельной интеграции для каждого приложения.
Что такое MCP и зачем создавать для него сервер
Model Context Protocol — это открытый стандарт (созданный Anthropic), который позволяет ИИ-ассистентам подключаться к внешним инструментам и источникам данных через общий интерфейс, вместо того чтобы каждому ассистенту требовалась собственная интеграция для каждого инструмента. Создание MCP-сервера означает построение подключения один раз для конкретного источника данных — и любой MCP-совместимый клиент (Claude Desktop, Claude Code или другие приложения, поддерживающие MCP) может использовать его сразу, без доработки под каждое приложение.
Этот проект предоставляет реальную PostgreSQL-базу данных продаж (ту же, что используется в ai-analytics-agent) в виде набора MCP-инструментов, так что Claude может выполнять к ней запросы, просматривать её схему и запускать поиск аномалий — прямо в обычном диалоге.
Архитектура
graph LR
A[Claude Desktop] -->|MCP protocol| B[Sales Analytics<br/>MCP Server]
B --> C[get_database_schema]
B --> D[run_sql_query]
B --> E[find_sales_anomalies]
C --> F[(Supabase / PostgreSQL)]
D --> F
E --> FДоступные инструменты
Инструмент | Описание |
| Возвращает список доступных таблиц и столбцов, чтобы Claude знала, какие данные существуют, ещё до выполнения запроса. |
| Выполняет SQL-запрос только для чтения и возвращает результаты. Блокирует любой запрос, который не является |
| Запускает робастное обнаружение аномалий на основе медианы/MAD по дневной истории продаж и возвращает отмеченные даты с их статистическим отклонением. |
Технологический стек
Слой | Инструмент |
Протокол | Model Context Protocol (MCP) Python SDK |
Клиент | Claude Desktop |
База данных | PostgreSQL (Supabase) |
Слой запросов | SQLAlchemy |
Обнаружение аномалий | Pandas (медиана + MAD, скользящее окно) |
Секреты | python-dotenv |
Инженерные заметки
Обнаружили ломающее изменение SDK в середине разработки: MCP Python SDK выпустил мажорную версию (2.0.0), которая переименовала
FastMCPвMCPServerи перенесла путь его импорта — ровно в тот момент, когда создавался этот проект. Сервер был обновлён до нового API, а не зафиксирован на старой версии, поэтому код соответствует текущему публичному интерфейсу SDK.Claude сам выбирает стратегию работы с инструментами: когда до появления
find_sales_anomaliesпопросили найти аномалии, Claude по своей инициативе использовалrun_sql_queryдля расследования — проверил повторяющиеся строки, отрицательные суммы и разбивки по категориям — и пришёл к той же первопричине, которую позже подтвердил специализированный инструмент. Это наглядная иллюстрация того, как LLM-клиент на самом деле выбирает между универсальным и специализированным инструментом, а не всегда предпочитает «очевидную» специальную функцию.Та же модель безопасности, что и у Text-to-SQL-агента:
run_sql_queryпереиспользует защитный подход «только чтение» из Python-проекта Text-to-SQL — хороший пример того, почему тщательно построенная один раз логика безопасности окупается, когда она применяется во втором независимом инструменте.
Настройка
Установите зависимости: pip install -r requirements.txt
Создайте файл
.envсо следующим содержимым: DATABASE_URL=your_postgresql_connection_stringДобавьте сервер в конфигурационный файл Claude Desktop (
claude_desktop_config.json):
{
"mcpServers": {
"sales-analytics": {
"command": "python",
"args": ["/full/path/to/server.py"]
}
}
}Полностью перезапустите Claude Desktop (завершите процесс через Task Manager / Activity Monitor, а не просто закрыв окно).
Начните новый чат и спросите Claude, например:
«Какие таблицы доступны и есть ли какие-либо аномалии в продажах, о которых мне стоит знать?»
Пример взаимодействия

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 Servers
- FlicenseDqualityDmaintenanceA secure Model Context Protocol server that allows Claude to execute read-only SQL queries against a PostgreSQL database, enabling natural language interaction with database data.1
- FlicenseNot gradedqualityDmaintenanceEnables natural language querying of PostgreSQL databases through the Model Context Protocol. It translates user questions into validated SQL, executes read-only queries safely, and returns results to MCP-compatible clients like Claude Desktop.
- AlicenseAqualityAmaintenanceQuery and manage PostgreSQL databases from Claude Code, Cursor, and any MCP client, with read-only by default and built-in schema introspection, EXPLAIN, and performance diagnostics.211,8093MIT
- AlicenseAqualityBmaintenanceExposes PostgreSQL query execution, EXPLAIN, and schema inspection tools to MCP-compatible clients like Claude Desktop.31MIT
Related MCP Connectors
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
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/AleksandrGeraskov/mcp-sales-analytics-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server