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

Un servidor Model Context Protocol (MCP) de nivel de producción construido en Python que expone herramientas analíticas tipadas, deterministas y protegidas por seguridad sobre un conjunto de datos empresariales almacenado en DuckDB.

Un agente de IA externo (por ejemplo, GPT a través del OpenAI Agents SDK, Claude Desktop o Cursor) puede descubrir y ejecutar consultas analíticas dinámicamente sin necesidad de acceso directo a la base de datos ni de ejecutar SQL sin restricciones.


✨ Aspectos destacados

  • Servidor MCP en Python: Totalmente compatible con el estándar oficial del Model Context Protocol a través de stdio.

  • Arquitectura agnóstica de modelo: El servidor no contiene ningún LLM en su interior. Expone contratos de herramientas limpios y deterministas que cualquier agente compatible con MCP puede invocar.

  • Analítica columnar integrada: Impulsado por DuckDB para agregaciones columnares rápidas y eficientes sobre datos empresariales normalizados.

  • Guardia SQL basada en AST: Utiliza sqlglot para analizar y validar consultas ad-hoc, permitiendo estrictamente sentencias SELECT de solo lectura y eliminando los riesgos de inyección o mutación SQL.

  • Contratos estrictamente tipados: Todas las respuestas se validan mediante modelos Pydantic v2 antes de llegar al cliente.

  • Cliente de demostración GPT interactivo: Agente de demostración listo para usar que aprovecha el OpenAI Agents SDK y prompts de razonamiento basados en evidencia.

  • Desarrollo dirigido por especificaciones: Ingeniería incremental mediante OpenSpec para una trazabilidad completa de requisitos.


Related MCP server: databricks-mcp

🏛️ Arquitectura del sistema

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)]

🛡️ Ejecución segura de SQL y límites de seguridad

Cualquier entrada SQL recibida de un agente de IA se trata como entrada no confiable. El servidor aplica una validación estricta del AST mediante sqlglot antes de la ejecución de la consulta:

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)
  • Límite de filas: Las consultas ad-hoc están limitadas a MAX_RESULT_ROWS = 100 para proteger la ventana de contexto del agente.

  • Listas blancas de tablas: Solo se pueden consultar las tablas analíticas autorizadas (customers).


🧰 Catálogo de herramientas MCP

Nombre de la herramienta

Propósito

Parámetros clave

Tipo de retorno

get_dataset_info

Metadatos de alto nivel del conjunto de datos, recuentos de filas y columnas, nombre de la tabla principal, variable objetivo.

Ninguno

DatasetInfo

list_columns

Inspección de esquema que devuelve todas las columnas disponibles y sus tipos de datos de base de datos.

Ninguno

list[ColumnInfo]

describe_column

Métricas estadísticas (min, max, mean, median) para columnas numéricas, o distribuciones de categorías para columnas categóricas.

column: str

NumericColumnDescription / CategoricalColumnDescription

get_churn_summary

Recuento total de clientes, recuento de bajas, recuento de retenidos y tasa de abandono histórica en [0.0, 1.0].

Ninguno

ChurnSummary

get_churn_by_dimension

Métricas de abandono segmentadas agrupadas por una dimensión aprobada (contract, internet_service, payment_method, etc.).

dimension: str

DimensionChurnResult

run_readonly_sql

Ejecución de SQL analítico protegido para cálculos personalizados complejos no cubiertos por las herramientas estándar.

query: str

SQLResult


🚀 Guía de inicio rápido

1. Requisitos previos

  • Python 3.11+

  • Git

2. Instalación

# 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. Construir la base de datos analítica

# Ingest raw Telco CSV, validate schema, normalize, and build DuckDB
python scripts/build_database.py

4. Ejecutar el servidor MCP

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

5. Ejecutar el cliente de demostración GPT interactivo

Configura tu clave de API de OpenAI en .env:

cp .env.example .env
# Edit .env and set OPENAI_API_KEY=sk-...

Ejecuta la demostración interactiva:

# Interactive REPL mode
python client/gpt_demo.py

# Or evaluate all 10 standard demonstration questions in batch
python client/gpt_demo.py --all-examples

🔌 Conexión a clientes MCP

Claude Desktop / Cursor

Añade la siguiente configuración a tu claude_desktop_config.json o a la configuración de MCP de 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"
      }
    }
  }
}

🧪 Pruebas y aseguramiento de calidad

# 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

📐 Flujo de trabajo de desarrollo (OpenSpec)

Este proyecto se desarrolló siguiendo el Desarrollo Dirigido por Especificaciones (SDD) con OpenSpec. Cada capacidad se rastrea mediante propuestas explícitas, especificaciones delta, documentos de diseño y tareas verificables:

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

📂 Estructura del proyecto

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

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulta el archivo LICENSE para más detalles.

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