MCP Analytics Server
MCP Analytics Server
Производственный MCP-сервер (Model Context Protocol), написанный на Python, который предоставляет типизированные, детерминированные и защищённые аналитические инструменты для работы с бизнес-данными, хранящимися в DuckDB.
Внешний ИИ-агент (например, GPT через OpenAI Agents SDK, Claude Desktop или Cursor) может динамически обнаруживать и выполнять аналитические запросы без необходимости прямого доступа к базе данных или выполнения неограниченных SQL-запросов.
✨ Ключевые особенности
Сервер MCP на Python: Полностью соответствует официальному стандарту Model Context Protocol через
stdio.Агностическая архитектура модели: Сервер не содержит LLM внутри. Он предоставляет чистые, детерминированные контракты инструментов, которые может вызывать любой MCP-совместимый агент.
Встроенная колоночная аналитика: На базе DuckDB для быстрых и эффективных колоночных агрегаций по нормализованным корпоративным данным.
SQL-защита на основе AST: Использует
sqlglotдля разбора и проверки ad-hoc запросов, строго разрешая только read-onlySELECTоператоры и устраняя риски SQL-инъекций или мутаций.Строгие типизированные контракты: Все ответы проверяются через модели Pydantic v2 перед отправкой клиенту.
Интерактивный демо-клиент GPT: Готовый демонстрационный агент, использующий OpenAI Agents SDK и подсказки на основе доказательств.
Разработка на основе спецификаций: Создан инкрементально с использованием OpenSpec для полной прослеживаемости требований.
Related MCP server: databricks-mcp
🏛️ Архитектура системы
flowchart TD
User([User]) <--> Agent[GPT Agent / OpenAI Agents SDK]
Agent <-->|MCP Protocol / stdio| Server[MCP Analytics Server]
subgraph Server_Internal [MCP Analytics Server Boundary]
Server --> Tools[Tool Layer]
Tools --> DataTools[Dataset Tools]
Tools --> ChurnTools[Churn Analytics Tools]
Tools --> SQLTool[Read-Only SQL Tool]
SQLTool --> SQLGuard[SQL Guard Security Layer]
DataTools --> AnalyticsSvc[AnalyticsService]
ChurnTools --> AnalyticsSvc
SQLGuard --> DBSvc[DatabaseService]
AnalyticsSvc --> DBSvc
DBSvc --> DuckDB[(DuckDB)]
end
DuckDB --> Table[(customers Table - Telco Dataset)]🛡️ Безопасное выполнение SQL и границы безопасности
Любой SQL-ввод, полученный от ИИ-агента, рассматривается как недоверенный ввод. Сервер выполняет строгую проверку AST с помощью sqlglot перед выполнением запроса:
Allowed Operations:
✅ SELECT contract, AVG(monthly_charges) FROM customers GROUP BY contract
✅ WITH cohorts AS (SELECT * FROM customers WHERE tenure > 24) SELECT COUNT(*) FROM cohorts
Blocked Operations:
❌ DELETE FROM customers WHERE churn = true (Mutation Rejected)
❌ DROP TABLE customers (DDL Rejected)
❌ SELECT * FROM customers; DROP TABLE customers (Multi-statement Rejected)
❌ ATTACH 'external.db' (Engine I/O Rejected)Ограничение количества строк: Ad-hoc запросы ограничены
MAX_RESULT_ROWS = 100для защиты контекстного окна агента.Белые списки таблиц: Разрешено запрашивать только авторизованные аналитические таблицы (
customers).
🧰 Каталог инструментов MCP
Имя инструмента | Назначение | Ключевые параметры | Тип возврата |
| Метаданные набора данных высокого уровня, количество строк и столбцов, имя основной таблицы, целевая переменная. | Нет |
|
| Проверка схемы, возвращающая все доступные столбцы и их типы данных в базе данных. | Нет |
|
| Статистические метрики ( |
|
|
| Общее количество клиентов, количество ушедших, количество оставшихся и исторический уровень оттока в | Нет |
|
| Сегментированные метрики оттока, сгруппированные по одобренному измерению ( |
|
|
| Защищённое выполнение аналитических SQL-запросов для сложных пользовательских вычислений, не покрытых стандартными инструментами. |
|
|
🚀 Краткое руководство по началу работы
1. Предварительные требования
Python 3.11+
Git
2. Установка
# Clone repository
git clone https://github.com/Jojeda96/mcp-analytics-server.git
cd mcp-analytics-server
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .\.venv\Scripts\Activate.ps1
# Install in editable mode with development tools
pip install -e ".[dev]"3. Создание аналитической базы данных
# Ingest raw Telco CSV, validate schema, normalize, and build DuckDB
python scripts/build_database.py4. Запуск MCP-сервера
# Run server standalone over stdio
mcp-analytics
# or
python -m mcp_analytics.server5. Запуск интерактивного демо-клиента GPT
Настройте ваш OpenAI API ключ в файле .env:
cp .env.example .env
# Edit .env and set OPENAI_API_KEY=sk-...Запустите интерактивное демо:
# Interactive REPL mode
python client/gpt_demo.py
# Or evaluate all 10 standard demonstration questions in batch
python client/gpt_demo.py --all-examples🔌 Подключение к MCP-клиентам
Claude Desktop / Cursor
Добавьте следующую конфигурацию в ваш claude_desktop_config.json или настройки MCP в Cursor:
{
"mcpServers": {
"telco-analytics": {
"command": "python",
"args": ["-m", "mcp_analytics.server"],
"cwd": "/absolute/path/to/mcp-analytics-server",
"env": {
"DUCKDB_PATH": "data/processed/telco.duckdb",
"LOG_LEVEL": "INFO",
"MAX_RESULT_ROWS": "100"
}
}
}
}🧪 Тестирование и обеспечение качества
# Run complete test suite (Unit & Integration) with coverage
pytest --cov=src --cov-report=term-missing
# Run Ruff linter and formatter checks
ruff check .
ruff format --check .
# Run static type checking
mypy src client scripts tests📐 Процесс разработки (OpenSpec)
Этот проект разработан в соответствии с разработкой на основе спецификаций (SDD) с использованием OpenSpec. Каждая возможность отслеживается через явные предложения, дельта-спецификации, проектные документы и проверяемые задачи:
openspec/
├── specs/ # Consolidated capabilities
│ ├── project-foundation/
│ ├── telco-data-foundation/
│ ├── core-analytics-service/
│ ├── core-mcp-tools/
│ ├── safe-readonly-sql-tool/
│ ├── openai-gpt-demo-client/
│ └── portfolio-hardening/
└── changes/archive/ # Historical change audit trail📂 Структура проекта
mcp-analytics-server/
├── .github/workflows/ci.yml # GitHub Actions CI matrix pipeline
├── assets/ # Diagrams and visual assets
├── client/
│ └── gpt_demo.py # Interactive OpenAI Agents SDK demo client
├── data/
│ ├── raw/ # Source CSV files
│ └── processed/ # Generated DuckDB database
├── docs/
│ ├── architecture.md # Deep-dive architecture and layers
│ ├── security.md # Threat model and AST SQL Guard details
│ └── decisions.md # Architecture Decision Records (ADRs)
├── examples/
│ ├── questions.md # 10 evaluated demo business questions
│ └── mcp-config.example.json # Standard client configuration
├── scripts/
│ ├── download_dataset.py # Dataset provenance & download instructions
│ ├── validate_dataset.py # Strict raw data schema & domain validator
│ └── build_database.py # Data cleaner and DuckDB table builder
├── src/mcp_analytics/
│ ├── config.py # Pydantic Settings and environment config
│ ├── errors.py # Domain exception hierarchy
│ ├── server.py # MCP server lifecycle and CLI entrypoint
│ ├── schemas/ # Pydantic response models
│ ├── security/ # AST SQLGuard parser
│ ├── services/ # DatabaseService & AnalyticsService
│ └── tools/ # Dataset, Analytics & SQL MCP tools
├── tests/
│ ├── fixtures/ # Curated sample CSV test fixtures
│ ├── unit/ # Fast unit tests for logic and security
│ └── integration/ # Database and MCP tool integration tests
├── Dockerfile # Containerization recipe
├── pyproject.toml # Package definition & tool configs
├── CHANGELOG.md # Version release notes
├── LICENSE # MIT License
└── README.md📄 Лицензия
Этот проект лицензирован под лицензией MIT — см. файл LICENSE для подробностей.
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
- AlicenseBqualityCmaintenanceEnables LLMs to interact with DuckDB databases through MCP tools for SQL queries, table management, data import/export, and schema inspection, with optional read-only mode for safety.12MIT
- AlicenseAqualityBmaintenanceSafe, read-only SQL analytics for AI agents over MCP, enabling exploration, profiling, and querying of data without mutation risk.5MIT
- FlicenseNot gradedqualityCmaintenanceEnables running read-only SQL queries and exploring DuckDB databases through MCP tools like listing tables, describing schemas, and fetching paginated data.
- AlicenseAqualityCmaintenanceA read-only DuckDB MCP server offering context-efficient analytics tools (list_datasets, describe_table, profile_column, explain, query) with a semantic layer for business rules, security guards, and disclosed truncation to help LLMs produce correct answers while minimizing token usage.5MIT
Related MCP Connectors
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
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/Jojeda96/mcp-analytics-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server