openanalyst-mcp-server
実際のDeepSeek Harnessセッション — エージェントがCSVを添付し、プロファイルし、 これらのチャートを会話ノードとして描画した(ヘッドレスChromeによるライブUIのキャプチャ。 検証記録を参照):
ステータス: M1 + M2 + M3 完了。 dshプラグインは
dsh web 0.1.0-rc.8内でライブ検証済み — 添付 → プロファイル → クエリ → チャートの全チェーンが実際のセッションで実行され、 両方のチャートが会話ノードとして描画された(検証記録)。 MCPサーバーはプロトコルレベルのテストとstdioスモークテストに合格している。 既知の制限を参照。
機能
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同じ5つのツールが、1つのエンジンから2つのホストで提供される:
ホスト | パッケージ | チャートの配信 |
DeepSeek Harnessプラグイン |
| ライブ会話ノード(Vegaキャンバス) |
MCPサーバー(Claude Code / Codex / Cursor / 任意のMCPクライアント) |
| SVGファイル + |
すべてのツールはCode Modeからawait tools.data_*(args)としても呼び出せるため、
エージェントはステップごとにラウンドトリップを消費する代わりに、分析全体を1つのプログラム内で連結できる。
ワークベンチ — セッションヘッダーパネル。このセッションのデータソース、 クリックでスクロールできるチャートギャラリー、生成されたレポートを表示する:
会話内のその他のチャート種類(同じテーマ、ライブセッションからエクスポート):
Related MCP server: chdb-mcp
インストール
DeepSeek Harness:
dsh plugin --profile web add openanalystClaude Code(または任意のMCPクライアント、stdio経由):
claude mcp add openanalyst -- npx -y openanalyst-mcp-serverアーキテクチャ
コードベースを形作る3つの決定。
エンジンはハーネスについて何も知らない。 @openanalyst/coreはパスとSQLを受け取り、ロスレスのJSONを返す。dsh、MCP、CLIの型を一切インポートしない。これにより、同じ分析を後でMCPアダプターを通じてClaude Code、Codex、Cursorに配信できる — 実装を二重に持つ必要がない。これはプラグインが単一ホストを超えたユーザーに届くかどうかを決める最大の要因である。
統計処理はDuckDBが行う。 SUMMARIZEは全カラムのmin/max/avg/std/四分位数/approx_unique/null_percentageを1パスで返し、CSV、Parquet、JSONを完全なファイル型推論で直接読み取る。IQR外れ値、重複行検出、フラグを立てる価値があるかの判断だけが手書きされている。
チャートはセッションイベントに載せられたVega-Lite仕様である。 ハーネスのツールカード種類は閉じた集合 — generic、terminal、diff、search、web — でチャートメンバーはないため、ツール結果はチャートをテキストに劣化させることしかできない。実際のチャートは会話ノードから来る必要があり、クライアント側がそれを登録する。
この制約がチャート形式も選ぶことになった。会話ノードはそのビューを永続イベントの純関数として再構築しなければならない — 時計も、乱数も、ライブ状態もない — そしてエンジンはデルタよりも全体値のチェックポイントを好む。データをインライン化したVega-Lite仕様はまさにそれだ:バイト単位でリプレイされる1つのプレーンなJSON値。Vega-Liteが選ばれたのは人気のチャートライブラリだからではなく、リプレイルールを満たすからである。
@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開発
pnpm install
pnpm -r run build
pnpm -r run test74テスト:コア上で46(SQLポリシー、JSON変換、正確な個別カウント付きプロファイリング、チャート、Dockerフィクスチャがない場合は自動スキップするライブPostgreSQL/MySQLコネクタテスト)、レポートビルダー上で5、DuckDBに対する実際のdshプラグインツールをエンドツーエンドで駆動する14(エージェントごとの分離を含む)、SDKのインメモリトランスポート上のプロトコルレベルMCPテスト9(スクリプト化されたstdioスモークテストを含む)。実行中のdsh webに対するライブ検証はscripts/mock-llm-scripted.mjs + scripts/verify-live.patch.ymlにスクリプト化されている — docs/VERIFICATION.mdを参照。
既知の制限
これらは実際の制限であり、これを基に構築する前に読む価値がある。
PTC 模式 (Code Mode) プリセットは直接のツール呼び出しを拒否する — モデルはそこでは
run_codeプログラムでラップする必要がある。Standardプリセットではツールは直接呼び出される。検証済みの動作であり、docs/VERIFICATION.mdに文書化されている。dshのエージェントごとのエンジンは境界付きであり、ライフサイクル追跡されない。 各dshエージェントセッションは独自のエンジンを取得する(エイリアス衝突なし)が、ハーネスはエージェント破棄時にプラグインに通知しないため、プラグインは最大32エンジンを保持し、最も最近使用されていないものを追い出す — そのセッションは次の呼び出しで透過的に再アタッチされる。
クライアントバンドルは約860 kB。 Vegaがインライン化されているのは、ハーネスがプラグインごとに正確に1ファイルを提供し、兄弟チャンクのルートがないためで、チャートなしのセッションでもそのコストを支払うことになる。
data_attachはホストプロセスが読み取れる任意のパスを受け取る。 まだワークスペースフェンシングはない。ハーネスサンドボックスが許可するものをそのまま継承する。XLSXはDuckDBの
read_xlsxに依存しており、初回使用時に拡張機能のダウンロードが必要になる場合がある。CSV、Parquet、JSONはテストでカバーされているが、XLSXはされていない。
dsh npmパッケージに関するメモ
ここで時間がかかった2つの点があり、ハーネスプラグインを構築する他の人のために記録する価値がある:
latestは壊れたラインを指している。npm view @deepseek-ai/dsh-tools versionは0.0.1-rc.1を報告するが、現在のラインは0.1.0-rc.8である。いくつかの0.0.1-rc.1パッケージはまったくインストールできない —@deepseek-ai/dsh-client-runtime@0.0.1-rc.1は@deepseek-ai/dsh-compactに依存し、@deepseek-ai/dsh-session@0.0.1-rc.1は@deepseek-ai/dsh-type-metaに依存するが、どちらも公開されていない。0.1.0-rc.8を固定すること。pnpmの
minimumReleaseAgeポリシーは、rcラインが新しい間はそれをブロックする。 このリポジトリはpnpm-workspace.yamlでそれを解除しており、dshが安定版リリースを持ったら復元するというメモ付きである。
ロードマップ
M1 | コア + dshプラグイン、会話内のチャート — 完了、ライブ検証済み |
M2 | MCPサーバー: Claude Code / Codex / Cursorで同じ機能 — 完了 ← 現在地 |
M3 | HTMLレポートエクスポート(PDF印刷)、PostgreSQL / MySQL / SQLite、エージェントごとの分離 — 完了 |
M4 | ワークベンチパネル: データソース、クリックでスクロールできるチャートギャラリー、レポートアーカイブ — 完了、ライブ検証済み |
ライセンス
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
Text-to-SQL MCP server: read-only queries on PostgreSQL, MySQL and SQL Server with your real schema
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
- OleanderOAuthdev.oleander
The all-in-one data stack for agents. Upload files, run SQL, evolve tables, and render charts.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn 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.1276MIT
- AlicenseAqualityCmaintenanceAn 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.7Apache 2.0
- AlicenseBqualityBmaintenanceA 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.3MIT
- FlicenseNot gradedqualityDmaintenanceAn 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.-