Skip to main content
Glama
Chenmo0414

openanalyst-mcp-server

by Chenmo0414

Una sesión real de DeepSeek Harness: el agente adjuntó un CSV, lo perfiló y generó estos gráficos como nodos de conversación (captura con headless-Chrome de la interfaz en vivo; ver el registro de verificación):

Estado: M1 + M2 + M3 completados. El plugin de dsh está verificado en vivo dentro de dsh web 0.1.0-rc.8 — la cadena completa adjuntar → perfilar → consultar → generar gráfico se ejecutó en una sesión real y ambos gráficos se renderizaron como nodos de conversación (registro de verificación). El servidor MCP pasa pruebas de nivel de protocolo y una prueba de humo stdio. Consulta las limitaciones conocidas.


Qué hace

data_attach     →  register a CSV / Parquet / JSON / XLSX file as a queryable table
data_attach_db  →  attach PostgreSQL / MySQL / SQLite read-only and list its tables
data_profile    →  types, missing values, exact distinct counts, outliers, quality issues, chart ideas
data_query      →  one read-only SQL statement, results as lossless JSON
data_chart      →  bar / line / scatter / histogram / area / heatmap / boxplot — with color
                   series, stacked/grouped layout, facet small multiples; line & scatter pan/zoom
data_report     →  a self-contained HTML report (profile + charts as inline SVG); prints to PDF
data_sources    →  what is currently attached

Las mismas cinco herramientas llegan a dos plataformas desde un único motor:

Plataforma

Paquete

Entrega de gráficos

plugin de DeepSeek Harness

openanalyst

nodo de conversación en vivo (lienzo Vega)

servidor MCP (Claude Code / Codex / Cursor / cualquier cliente MCP)

openanalyst-mcp-server

archivo SVG + especificación completa de Vega-Lite en structuredContent

Cada herramienta también es accesible desde Code Mode como await tools.data_*(args), de modo que el agente puede encadenar todo el análisis dentro de un único programa en lugar de gastar un viaje de ida y vuelta por paso.

El workbench — un panel en la cabecera de la sesión que enumera las fuentes de datos de esta sesión, una galería de gráficos con clic para desplazarse e informes generados:

Más tipos de gráficos dentro de la conversación (mismo tema, exportados desde una sesión real):

Related MCP server: chdb-mcp

Instalación

DeepSeek Harness:

dsh plugin --profile web add openanalyst

Claude Code (o cualquier cliente MCP, vía stdio):

claude mcp add openanalyst -- npx -y openanalyst-mcp-server

Arquitectura

El motor no sabe nada del harness. @openanalyst/core recibe rutas y SQL y devuelve JSON sin pérdidas. No importa ningún tipo de dsh, MCP ni CLI. Esa es la razón por la que el mismo análisis puede publicarse en Claude Code, Codex y Cursor a través de un adaptador MCP sin hacer una segunda implementación: el factor más determinante para que un plugin llegue a una audiencia más allá de un solo host.

DuckDB se encarga de la estadística. SUMMARIZE devuelve min/max/avg/std/quartiles/approx_unique/null_percentage para cada columna en una sola pasada, y lee CSV, Parquet y JSON directamente con inferencia de tipos de archivo completo. Solo los valores atípicos por IQR, la detección de filas duplicadas y la decisión de qué merece la pena alertar se escriben a mano.

Los gráficos son especificaciones Vega-Lite transportadas en los eventos de la sesión. Los tipos de tarjeta de herramienta del harness son un conjunto cerrado — generic, terminal, diff, search y web — sin un miembro de gráfico, por lo que un resultado de herramienta solo puede degradar un gráfico a texto. Un gráfico real tiene que venir de un nodo de conversación, que registra la mitad del cliente.

Esa restricción también eligió el formato de gráfico. Un nodo de conversación debe reconstruir su vista como función pura de eventos durables — sin reloj, sin aleatoriedad, sin estado en vivo — y el motor prefiere puntos de control de valor completo a los delta. Una especificación Vega-Lite con sus datos integrados en línea es exactamente eso: un valor JSON plano que se reproduce byte a byte. Vega-Lite se eligió porque cumple la regla de reproducción, no porque sea una biblioteca de gráficos popular.

@openanalyst/core            engine, profiling, DB connectors, chart specs  (host-agnostic)
  ├── @openanalyst/report    Vega-Lite -> SVG (pure JS) + self-contained HTML reports
  ├── openanalyst            dsh host half: 7 tools + chart event
  │     └── ./client         dsh browser half: conversation node + Vega canvas
  └── openanalyst-mcp-server stdio MCP server: same 7 tools, charts as SVG files

Desarrollo

pnpm install
pnpm -r run build
pnpm -r run test

74 pruebas: 46 sobre el núcleo (política SQL, conversión JSON, perfiles con recuentos de distintos exactos, gráficos y pruebas de conectores PostgreSQL con facilidades que se omiten automáticamente si no existen los fixtures de Docker), 5 sobre el generador de informes, 14 que manejan las herramientas reales del plugin de dsh de extremo a extremo contra DuckDB (incluido el aislamiento por agente), y 9 pruebas de protocolo MCP sobre el transporte en memoria del SDK (más una prueba de humo stdio escrita con scripts). La verificación en vivo contra una dsh web en ejecución está en scripts/mock-llm-scripted.mjs + scripts/verify-live.patch.yml — ver docs/VERIFICATION.md.

Limitaciones conocidas

Son reales y ramente la pena leerlas antes de escribir sobre esta.

  • Los modos preestablecidos de PTC 模式 (Code Mode) rechazan las llamadas directas a herramientas — el modelo debe envolverlas en un programa run_code ahí mismo. En el modo preestablecido Standard, las herramientas se llaman directamente. Comportamiento verificado, documentado en docs/VERIFICATION.md.

  • Los motores dsh por agente son limitados, no se rastrea el ciclo de vida. Cada sesión de agente dsh obtiene su propio motor (sin choques de alias), pero el harness no notifica a los plugins cuando se descarta el agente, por lo que el plugin mantiene en ejecución 32 motores y expulsa el menos recientemente utilizado: esa sesión se vuelve a conectar de forma transparente en la siguiente llamada.

  • El bundle del cliente pesa aproximadamente 860 kB. Vega está incrustado porque el harness sirve una sola archivo por plugin y no tiene ruta para chunks hermanos, por lo que una sesión sin _gráficos aún lo paga.

  • data_attach acepta cualquier otro procesador que el proceso anfitrión pueda leer. No hay vallado de sobre el espacio de trabajo; hereda lo que permite la sandbox del harness.

  • XLSX depende de read_xlsx de DuckDB, que puede necesitar descargar una extensión en el primer uso. CSV, Parquet y JSON están cubiertos por pruebas; XLSX no.

Notas sobre los paquetes npm de dsh

Dos cosas costaron tiempo y convienene registrarlas para quien cree por las que cree un plugin para harness:

  • latest apunta a una línea rota. npm view @deepseek-ai/dsh-tools version reporta 0.0.1-rc.1, ocasión que la línea actual es 0.1.0-rc.8. Varios paquetes de la línea 0.0.1-rc.1 no se pueden instalar en absoluto — @deepseek-ai/dsh-client-runtime@0.0.1-rc.1 depende de @deepseek-ai/dsh-compact y @deepseek-ai/dsh-session@0.0.1-rc.1 depende de @deepseek-ai/dsh-type-meta; ninguno de esos está publicado. Fija 0.1.0-rc.8.

  • La política de minimumReleaseAge de pnpm bloquea la línea rc while it is new. Esta repo la anula en pnpm-workspace.yaml, con una nota para restaurarla cuando dsh tenga una versión estable.

Hoja de ruta

M1

Core + plugin dsh, gráficos en la conversación — hecho, verificado en vivo

M2

Servidor MCP: la misma capacidad en Claude Code / Codex / Cursor — hecho ← estás aquí

M3

Exportación de informe HTML (imprime a PDF), PostgreSQL / MySQL / SQLite, aislamiento por agente — hecho

M4

Panel de trabajo: fuentes de datos, galería de gráficos con clic para desplazarse, archivo de informes — hecho, verificado en vivo

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
B
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
    A
    quality
    C
    maintenance
    An open-source MCP server that connects to various data sources (SQL databases, CSV, Parquet files), allowing AI models to execute SQL queries and generate data visualizations for analytics and business intelligence.
    12
    75
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server for chDB, the in-process SQL OLAP engine powered by ClickHouse. Lets agents query Parquet, CSV, JSON, and pandas DataFrames with one tool — no separate server, no Docker.
    7
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    A research-informed MCP server that enables natural language question answering over local dataframes (CSV, Parquet, or Pandas) with safe, read-only execution and typed analysis plans.
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that answers natural-language questions over CSV, Excel, and SQL data by providing deterministic tools for loading, profiling, querying, cleaning, statistical analysis, visualization, and reporting. It enables LLMs to plan and interpret while all computation is done exactly through MCP tools.

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/Chenmo0414/openanalyst'

If you have feedback or need assistance with the MCP directory API, please join our Discord server