Skip to main content
Glama
Chenmo0414

openanalyst-mcp-server

by Chenmo0414

Eine echte DeepSeek-Harness-Sitzung — der Agent hat eine CSV angehängt, ein Profil erstellt und diese Diagramme als Gesprächsknoten gezeichnet (Headless-Chrome-Aufnahme der Live-UI; siehe den Verifizierungsnachweis):

Status: M1 + M2 + M3 abgeschlossen. Das dsh-Plugin ist live-verifiziert in dsh web 0.1.0-rc.8 — die vollständige Kette Anhängen → Profil → Abfrage → Diagramm lief in einer echten Sitzung, und beide Diagramme wurden als Gesprächsknoten gerendert (Verifizierungsnachweis). Der MCP-Server besteht Protokoll-Tests plus einen stdio-Smoke-Test. Siehe Bekannte Einschränkungen.


Was es tut

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

Dieselben fünf Tools laufen auf zwei Hosts über eine Engine:

Host

Paket

Diagramm-Auslieferung

DeepSeek-Harness-Plugin

openanalyst

Live-Gesprächsknoten (Vega-Canvas)

MCP-Server (Claude Code / Codex / Cursor / jeder MCP-Client)

openanalyst-mcp-server

SVG-Datei + vollständige Vega-Lite-Spezifikation in structuredContent

Jedes Tool ist außerdem im Code-Modus als await tools.data_*(args) erreichbar, sodass der Agent die gesamte Analyse in einem einzigen Programm verketten kann, statt pro Schritt einen Roundtrip zu verbrauchen.

Die Workbench — ein Panel in der Sitzungs-Kopfzeile, das die Datenquellen dieser Sitzung auflistet, eine Diagramm-Galerie mit Klick-zum-Scrollen sowie generierte Berichte:

Weitere Diagrammarten im Gespräch (gleiches Theme, aus einer Live-Sitzung exportiert):

Related MCP server: chdb-mcp

Installation

DeepSeek Harness:

dsh plugin --profile web add openanalyst

Claude Code (oder jeder MCP-Client, über stdio):

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

Architektur

Drei Entscheidungen prägen die Codebasis.

Die Engine weiß nichts über die Harness. @openanalyst/core nimmt Pfade und SQL entgegen und liefert verlustfreies JSON zurück. Es importiert keinen dsh-, MCP- oder CLI-Typ. Genau das ermöglicht es, dieselbe Analyse später über einen MCP-Adapter an Claude Code, Codex und Cursor auszuliefern, ohne eine zweite Implementierung — der mit Abstand größte Faktor dafür, ob ein Plugin ein Publikum über einen einzelnen Host hinaus erreicht.

DuckDB übernimmt die Statistik. SUMMARIZE liefert min/max/avg/std/Quantile/ approx_unique/null_percentage für jede Spalte in einem Durchgang und liest CSV, Parquet und JSON direkt mit vollständiger Typinferenz über die gesamte Datei. Nur IQR-Ausreißer, Duplikaterkennung und die Beurteilung, was eine Kennzeichnung wert ist, sind handgeschrieben.

Diagramme sind Vega-Lite-Spezifikationen, die auf Sitzungsereignissen transportiert werden. Die Tool-Kartenarten der Harness sind eine geschlossene Menge — generic, terminal, diff, search, web — ohne Diagramm-Mitglied, sodass ein Tool-Ergebnis ein Diagramm höchstens zu Text degradieren kann. Ein echtes Diagramm muss von einem Gesprächsknoten kommen, den die Client-Hälfte registriert.

Diese Einschränkung hat auch das Diagrammformat bestimmt. Ein Gesprächsknoten muss seine Ansicht als reine Funktion dauerhafter Ereignisse neu aufbauen — keine Uhr, kein Zufall, kein Live-Zustand — und die Engine bevorzugt Ganzwert-Checkpoints gegenüber Deltas. Eine Vega-Lite-Spezifikation mit eingebetteten Daten ist genau das: ein einziger einfacher JSON-Wert, der bytegenau wiedergegeben wird. Vega-Lite wurde gewählt, weil es die Wiedergabe-Regel erfüllt, nicht weil es eine beliebte Diagrammbibliothek ist.

@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

Entwicklung

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

74 Tests: 46 über den Kern (SQL-Richtlinie, JSON-Konvertierung, Profilerstellung mit exakten Distinct-Zählungen, Diagramme und Live-PostgreSQL/MySQL-Connector-Tests, die ohne die Docker-Fixtures automatisch übersprungen werden), 5 über den Berichts-Builder, 14, die die echten dsh-Plugin-Tools Ende-zu-Ende gegen DuckDB treiben (einschließlich Pro-Agent-Isolation), und 9 Protokoll-Tests auf MCP-Ebene über den In-Memory-Transport des SDKs (plus ein skriptierter stdio-Smoke-Test). Die Live-Verifizierung gegen ein laufendes dsh web ist in scripts/mock-llm-scripted.mjs + scripts/verify-live.patch.yml skriptiert — siehe docs/VERIFICATION.md.

Bekannte Einschränkungen

Diese sind real und lesenswert, bevor man darauf aufbaut.

  • PTC-Modus (Code-Modus) lehnt direkte Tool-Aufrufe ab — das Modell muss sie dort in ein run_code-Programm einbetten. Unter dem Standard-Preset werden die Tools direkt aufgerufen. Verifiziertes Verhalten, dokumentiert in docs/VERIFICATION.md.

  • dsh-Pro-Agent-Engines sind begrenzt, nicht lebenszyklus-verfolgt. Jede dsh-Agent- Sitzung erhält ihre eigene Engine (keine Alias-Kollisionen), aber die Harness benachrichtigt Plugins nicht über die Freigabe von Agenten, sodass das Plugin höchstens 32 Engines hält und die am wenigsten zuletzt verwendete verdrängt — diese Sitzung hängt sich bei ihrem nächsten Aufruf transparent wieder an.

  • Das Client-Bundle ist ~860 kB. Vega ist eingebettet, weil die Harness genau eine Datei pro Plugin ausliefert und keine Route für Geschwister-Chunks hat, sodass eine diagrammfreie Sitzung trotzdem dafür zahlt.

  • data_attach akzeptiert jeden Pfad, den der Host-Prozess lesen kann. Es gibt noch keine Workspace-Abgrenzung; es erbt, was die Harness-Sandbox erlaubt.

  • XLSX hängt von DuckDBs read_xlsx ab, was beim ersten Gebrauch einen Erweiterungs-Download erfordern kann. CSV, Parquet und JSON sind durch Tests abgedeckt; XLSX nicht.

Anmerkungen zu den dsh-npm-Paketen

Zwei Dinge haben hier Zeit gekostet und sind für alle anderen, die ein Harness-Plugin bauen, festzuhalten:

  • latest zeigt auf eine defekte Linie. npm view @deepseek-ai/dsh-tools version meldet 0.0.1-rc.1, aber die aktuelle Linie ist 0.1.0-rc.8. Mehrere 0.0.1-rc.1-Pakete lassen sich überhaupt nicht installieren — @deepseek-ai/dsh-client-runtime@0.0.1-rc.1 hängt von @deepseek-ai/dsh-compact ab und @deepseek-ai/dsh-session@0.0.1-rc.1 hängt von @deepseek-ai/dsh-type-meta ab; keines davon ist veröffentlicht. Pinne 0.1.0-rc.8.

  • pnpm-Richtlinie minimumReleaseAge blockiert die rc-Linie, solange sie frisch ist. Dieses Repo hebt sie in pnpm-workspace.yaml auf, mit einem Hinweis, sie wiederherzustellen, sobald dsh eine stabile Veröffentlichung hat.

Roadmap

M1

Kern + dsh-Plugin, Diagramme im Gespräch — erledigt, live-verifiziert

M2

MCP-Server: gleiche Fähigkeit in Claude Code / Codex / Cursor — erledigt ← du bist hier

M3

HTML-Berichtsexport (druckt zu PDF), PostgreSQL / MySQL / SQLite, Pro-Agent-Isolation — erledigt

M4

Workbench-Panel: Datenquellen, Diagramm-Galerie mit Klick-zum-Scrollen, Berichtsarchiv — erledigt, live-verifiziert

Lizenz

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