Skip to main content
Glama
Jojeda96

MCP Analytics Server

by Jojeda96

MCP Analytics Server

Python SDK Database Validation Code Style Type Checked Spec-Driven License: MIT

Производственный 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-only SELECT операторы и устраняя риски 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

Имя инструмента

Назначение

Ключевые параметры

Тип возврата

get_dataset_info

Метаданные набора данных высокого уровня, количество строк и столбцов, имя основной таблицы, целевая переменная.

Нет

DatasetInfo

list_columns

Проверка схемы, возвращающая все доступные столбцы и их типы данных в базе данных.

Нет

list[ColumnInfo]

describe_column

Статистические метрики (min, max, mean, median) для числовых столбцов или распределение категорий для категориальных столбцов.

column: str

NumericColumnDescription / CategoricalColumnDescription

get_churn_summary

Общее количество клиентов, количество ушедших, количество оставшихся и исторический уровень оттока в [0.0, 1.0].

Нет

ChurnSummary

get_churn_by_dimension

Сегментированные метрики оттока, сгруппированные по одобренному измерению (contract, internet_service, payment_method и т.д.).

dimension: str

DimensionChurnResult

run_readonly_sql

Защищённое выполнение аналитических SQL-запросов для сложных пользовательских вычислений, не покрытых стандартными инструментами.

query: str

SQLResult


🚀 Краткое руководство по началу работы

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.py

4. Запуск MCP-сервера

# Run server standalone over stdio
mcp-analytics
# or
python -m mcp_analytics.server

5. Запуск интерактивного демо-клиента 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 для подробностей.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    B
    quality
    C
    maintenance
    Enables 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.
    12
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables running read-only SQL queries and exploring DuckDB databases through MCP tools like listing tables, describing schemas, and fetching paginated data.
  • A
    license
    A
    quality
    C
    maintenance
    A 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.
    5
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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