plots-mcp について
plots-mcpは、データをチャートに変換するMCPサーバーです。MCPクライアントでの可視化向けで、Mermaidを既定とし、PNG画像やテキストでも出力できます。
主な機能
- 01折れ線、棒、円、散布図などの生成
- 02Mermaid、PNG、テキストでの出力
- 03サンプルデータからフィールド対応を提案
- 04チャート種別とテーマの一覧表示
- 05テーマとチャート寸法の設定
活用シーン
- 01MCPチャットで売上データを可視化
- 02折れ線チャートで推移を確認
- 03表形式データからチャートを作成
- 04テスト画像で画像対応を確認
MCP 対応
チャート描画と設定のツールをMCPクライアントに提供し、stdioとstreamable HTTPに対応します。結果はMermaid、PNG画像、テキストで返せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
データ可視化のための Model Context Protocol(MCP)サーバーです。データからグラフ(折れ線、棒、円、散布図、ヒートマップなど)を描画するツールを提供し、プロットを画像/Base64 テキスト/Mermaid ダイアグラムとして返します。
MCP Plots を選ぶ理由
- Mermaid を使った即時表示の、ビジュアルを重視したグラフ(Cursor などの MCP クライアントで直接レンダリングされます)
- 通常のデータからグラフを生成するためのシンプルなプロンプト
- uvx を使ったセットアップ不要の方法、または PyPI/Docker からのインストール
- 柔軟な出力形式:Mermaid(デフォルト)、PNG 画像、またはテキスト
すぐに使う
- MCP クライアントに「売上を示す棒グラフを作成してください:A=100、B=150、C=80」と依頼します
- デフォルトの出力は Mermaid なので、Cursor ですぐにダイアグラムがレンダリングされます
クイックスタート
PyPI からインストール(推奨)
pip install mcp-plots
mcp-plots # Start the server
Cursor ユーザー向け
- パッケージをインストールします:
pip install mcp-plots - Cursor の MCP 設定(
~/.cursor/mcp.json)に追加します:
別の方法(uvx + PyPI を使ったインストール不要の方法):{ "mcpServers": { "plots": { "command": "mcp-plots", "args": ["--transport", "stdio"] } } }{ "mcpServers": { "plots": { "command": "uvx", "args": ["mcp-plots", "--transport", "stdio"] } } } - Cursor を再起動します
- 次のように依頼します:"売上を示す棒グラフを作成してください:A=100、B=150、C=80"
開発環境へのインストール
uvx --from git+https://github.com/mr901/mcp-plots.git run-server.py
ドキュメント → | クイックスタート → | API リファレンス →
MCP レジストリ
このサーバーは MCP レジストリ識別子 io.github.MR901/mcp-plots で公開されています。公式レジストリ API から検索/検証できます:
curl "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.MR901/mcp-plots"
このプロジェクトのレジストリメタデータは server.json で管理されています。
Smithery でインストール
このリポジトリには、Smithery で簡単にセットアップできる smithery.yaml が含まれています。
- ファイル:
smithery.yaml - ドキュメント:https://smithery.ai/docs/config#smitheryyaml
Smithery CLI を使ったインストール例(必要に応じて --client を変更してください。例:cursor、claude):
npx -y @smithery/cli install \
https://raw.githubusercontent.com/mr901/mcp-plots/main/smithery.yaml \
--client cursor
インストール後、MCP クライアントは smithery.yaml で定義されたコマンドを使い、stdio 経由でサーバーを起動できるようになります。
プロジェクト構成
src/
app/ # Server construction and runtime
server.py
capabilities/ # MCP tools and prompts
tools.py
prompts.py
visualization/ # Plotting engines and configurations
chart_config.py
generator.py
要件
- Python 3.10 以降
requirements.txtを参照してください
セットアップ方法
uvx(推奨)
Python 環境を管理せずに MCP サーバーを実行する最も簡単な方法です:
# Run directly with uvx (no installation needed)
uvx --from git+https://github.com/mr901/mcp-plots.git run-server.py
# Or install and run the command
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots
# With custom options
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --port 8080 --log-level DEBUG
uvx を使う理由
- 環境管理不要:Python の依存関係を自動的に処理します
- 分離実行:専用の仮想環境で実行します
- 常に最新版:リポジトリから最新のコードを取得します
- セットアップ不要:pip install なしですぐに使えます
- クロスプラットフォーム:Windows、macOS、Linux で同じコマンドを使えます
PyPI(従来のインストール方法)
- 依存関係をインストール
pip install -r requirements.txt
- サーバーを実行(HTTP トランスポート、デフォルトポート 8000)
python -m src --transport streamable-http --host 0.0.0.0 --port 8000 --log-level INFO
- stdio で実行(プロセスを起動する MCP クライアント向け)
python -m src --transport stdio
ローカル開発(ソースから)
git clone https://github.com/mr901/mcp-plots.git
cd mcp-plots
pip install -e .
python -m src --transport stdio --log-level DEBUG
Docker
docker build -t mcp-plots .
docker run -p 8000:8000 mcp-plots
環境変数(任意):
MCP_TRANSPORT(streamable-http|stdio)MCP_HOST(デフォルトは 0.0.0.0)MCP_PORT(デフォルトは 8000)LOG_LEVEL(デフォルトは INFO)
ツール
list_chart_types()→ 利用可能なチャートタイプを返しますlist_themes()→ 利用可能なテーマを返しますsuggest_fields(sample_rows)→ データサンプルに基づいてフィールドの役割を提案しますrender_chart(chart_type, data, field_map, config_overrides?, options?, output_format?)→ MCP コンテンツを返しますgenerate_test_image()→ MCP の画像サポートを確認するためのテスト画像(赤い円)を生成します
Cursor との統合
この MCP サーバーは、Cursor の画像サポートと完全に互換性があります。render_chart ツールを使用すると、次のことができます。
- チャートがチャットに直接表示されます - ファイルを保存したり、別のウィンドウを開いたりする必要はありません
- AI がチャートを分析できます - ビジョン対応モデルが、可視化について議論し、解釈できます
- MCP 形式に完全対応しています - Cursor が想定する正確な base64 PNG 形式を使用します
サーバーは、Cursor が要求する MCP 形式で画像を返します。
{
"content": [
{
"type": "image",
"data": "<base64-encoded-png>",
"mimeType": "image/png"
}
]
}
呼び出し例(疑似コード):
render_chart(
chart_type="bar",
data=[{"category":"A","value":10},{"category":"B","value":20}],
field_map={"category_field":"category","value_field":"value"},
config_overrides={"title":"Example Bar","width":800,"height":600,"output_format":"MCP_IMAGE"}
)
戻り値の形式(PNG):
{
"status": "success",
"content": [{"type":"image","data":"<base64>","mimeType":"image/png"}]
}
設定
サーバーは、環境変数またはコマンドライン引数で設定できます。
サーバー設定
MCP_TRANSPORT- トランスポートタイプ:streamable-httpまたはstdio(デフォルト:streamable-http)MCP_HOST- ホストアドレス(デフォルト:0.0.0.0)MCP_PORT- ポート番号(デフォルト:8000)LOG_LEVEL- ログレベル:DEBUG、INFO、WARNING、ERROR、CRITICAL(デフォルト:INFO)MCP_DEBUG- デバッグモードを有効にします:trueまたはfalse(デフォルト:false)
チャート設定
CHART_DEFAULT_WIDTH- デフォルトのチャート幅(ピクセル単位)(デフォルト:800)CHART_DEFAULT_HEIGHT- デフォルトのチャートの高さ(ピクセル単位)(デフォルト:600)CHART_DEFAULT_DPI- デフォルトのチャート DPI(デフォルト:100)CHART_MAX_DATA_POINTS- チャートあたりの最大データポイント数(デフォルト:10000)
コマンドラインでの使用方法
uvx を使用する場合(推奨):
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --help
# Examples:
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --port 8080 --log-level DEBUG
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --chart-width 1200 --chart-height 800
従来の Python を使用する場合:
python -m src --help
# Examples:
python -m src --transport streamable-http --host 0.0.0.0 --port 8000
python -m src --log-level DEBUG --chart-width 1200 --chart-height 800
Docker
イメージをビルドします:
docker build -t mcp-plots .
カスタム設定でコンテナを実行します:
docker run --rm -p 8000:8000 \
-e MCP_TRANSPORT=streamable-http \
-e MCP_HOST=0.0.0.0 \
-e MCP_PORT=8000 \
-e LOG_LEVEL=INFO \
-e CHART_DEFAULT_WIDTH=1000 \
-e CHART_DEFAULT_HEIGHT=700 \
-e CHART_DEFAULT_DPI=150 \
-e CHART_MAX_DATA_POINTS=5000 \
mcp-plots
Cursor MCP との統合
Cursor のクイックセットアップ
Plots MCP Server は、Cursor の MCP サポートとシームレスに連携するよう設計されています。統合方法は次のとおりです。
1. Cursor の MCP 設定に追加する
次の内容を Cursor の MCP 設定ファイル(~/.cursor/mcp.json など)に追加します。
{
"mcpServers": {
"plots": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/mr901/mcp-plots.git@main",
"mcp-plots",
"--transport",
"stdio"
],
"env": {
"LOG_LEVEL": "INFO",
"CHART_DEFAULT_WIDTH": "800",
"CHART_DEFAULT_HEIGHT": "600"
}
}
}
}
2. 別の方法:HTTP トランスポート
HTTP ベースで統合する場合:
{
"mcpServers": {
"plots-http": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/mr901/mcp-plots.git@main",
"mcp-plots",
"--transport",
"streamable-http",
"--host",
"127.0.0.1",
"--port",
"8000"
]
}
}
}
3. ローカル開発環境のセットアップ
ローカルで開発する場合(コードをクローン済みの場合):
{
"mcpServers": {
"plots-dev": {
"command": "python",
"args": ["-m", "src", "--transport", "stdio"],
"cwd": "/path/to/mcp-plots",
"env": {
"LOG_LEVEL": "DEBUG"
}
}
}
}
4. 統合を確認する
設定を追加した後:
- Cursor を再起動します
- Cursor の MCP パネルで MCP 接続を確認します
- 簡単なチャートでテストします:
Create a bar chart showing sales data: A=100, B=150, C=80
MERMAID を優先するアプローチ
このサーバーは、デフォルトでMERMAID 出力を優先します。その理由は次のとおりです。
- ✅ Cursor ですぐにレンダリングされます - 外部ビューアーは必要ありません
- ✅ インタラクティブです - Cursor が図を分析し、議論できます
- ✅ 軽量です - 生成と表示が高速です
- ✅ 拡張性に優れています - ベクターベースのため、どのズームレベルでも使用できます
MERMAID をネイティブサポートするチャートタイプ:
line、bar、pie、area→xychart-beta形式histogram→ 自動ビニング機能付きのxychart-betafunnel→ カラーグラデーション付きのスタイル設定されたフローチャートgauge→ 値に応じて色分けされたインジケーター付きのフローチャートsankey→ ソース/ターゲットをスタイル設定したフロー図
利用可能なツール
render_chart
MERMAID を優先するアプローチのメインチャート生成ツールです。
パラメーター:
chart_type- チャートタイプ(line、bar、pie、scatter、heatmapなど)data- データオブジェクトのリストfield_map- フィールドのマッピング(x_field、y_field、category_fieldなど)config_overrides- チャート設定の上書きoutput_format- 出力形式(mermaid[デフォルト]、mcp_image、mcp_text)
特殊モード:
chart_type="help"- 利用可能なチャートタイプとテーマを表示しますchart_type="suggest"- データを分析し、フィールドのマッピングを提案します
configure_preferences
ユーザー設定を行うための対話型設定ツールです。
パラメーター:
output_format- デフォルトの出力形式(mermaid、mcp_image、mcp_text)theme- デフォルトのテーマ(default、dark、seaborn、minimal)chart_width- デフォルトのチャート幅(ピクセル単位)chart_height- デフォルトのチャートの高さ(ピクセル単位)reset_to_defaults- すべての設定をシステムのデフォルトにリセットします
機能:
- 設定の永続化 -
~/.plots_mcp_config.jsonに保存されます - ライブプレビュー - 現在の設定でサンプルチャートを表示します
- 上書きのサポート - 一時的な変更には
config_overridesを使用します
ドキュメント
その他のリソース
- ドキュメント全文 - 技術ドキュメントのハブ
- クイックスタート - 5 分で完了するセットアップガイド
- 統合ガイド - MCP クライアントのセットアップと設定
- API リファレンス - ツールの仕様と使用例の全文
- 高度なガイド - アーキテクチャ、デプロイ、開発
- プロンプトのサンプル - すぐに使えるテスト例
チャートの例
基本的な棒グラフ:
{
"chart_type": "bar",
"data": [
{"category": "Sales", "value": 120},
{"category": "Marketing", "value": 80},
{"category": "Support", "value": 60}
],
"field_map": {
"category_field": "category",
"value_field": "value"
}
}
時系列の折れ線グラフ:
{
"chart_type": "line",
"data": [
{"date": "2024-01", "revenue": 1000},
{"date": "2024-02", "revenue": 1200},
{"date": "2024-03", "revenue": 1100}
],
"field_map": {
"x_field": "date",
"y_field": "revenue"
}
}
ファネルチャート:
{
"chart_type": "funnel",
"data": [
{"stage": "Awareness", "value": 1000},
{"stage": "Interest", "value": 500},
{"stage": "Purchase", "value": 100}
],
"field_map": {
"category_field": "stage",
"value_field": "value"
}
}
🔧 設定
環境変数
MCP_TRANSPORT- トランスポートの種類(streamable-http|stdio)MCP_HOST- ホストアドレス(デフォルト:0.0.0.0)MCP_PORT- ポート番号(デフォルト:8000)LOG_LEVEL- ログレベル(デフォルト:INFO)MCP_DEBUG- デバッグモードを有効にします(true|false)CHART_DEFAULT_WIDTH- デフォルトのチャート幅(ピクセル単位)(デフォルト:800)CHART_DEFAULT_HEIGHT- デフォルトのチャートの高さ(ピクセル単位)(デフォルト:600)CHART_DEFAULT_DPI- デフォルトのチャート DPI(デフォルト:100)CHART_MAX_DATA_POINTS- チャートあたりのデータポイントの最大数(デフォルト:10000)
ユーザー設定
個人設定は ~/.plots_mcp_config.json に保存されます。
{
"defaults": {
"output_format": "mermaid",
"theme": "default",
"chart_width": 800,
"chart_height": 600
},
"user_preferences": {
"output_format": "mcp_image",
"theme": "dark"
}
}
🚀 高度な使い方
カスタムテーマ
使用できるテーマ:default、dark、seaborn、minimal、whitegrid、darkgrid、ticks
高解像度チャート
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots \
--chart-width 1920 \
--chart-height 1080 \
--chart-dpi 300
パフォーマンスの最適化
- 大規模なデータセットを制限するには、
max_data_pointsを使用します - すばやく可視化する場合は、MERMAID 出力が最も高速です
- 高品質な静止画像には PNG 出力を使用します
- 拡大縮小可能なベクター画像には SVG 出力を使用します
🐛 トラブルシューティング
よくある問題
問題:Cursor でチャートがレンダリングされない
- 解決策:
output_format="mermaid"(デフォルト)になっていることを確認します - 確認事項:Cursor での MCP サーバー接続
問題:uvx コマンドが見つからない
- 解決策:uv をインストールします:
curl -LsSf https://astral.sh/uv/install.sh | sh
問題:ポートがすでに使用されている
- 解決策:別のポートを使用します:
--port 8001
問題:大規模なデータセットの処理が遅い
- 解決策:データをサンプリングするか、
--max-data-pointsを増やします
デバッグモード
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots \
--debug \
--log-level DEBUG
📝 注意事項
- コンテナー内では Matplotlib はヘッドレスモード(Agg バックエンド)で動作します
- 大規模なデータセットでは、応答性を保つためにデータをサンプリングしてください
- チャートのデフォルト設定は、リクエストごとに
config_overridesで上書きできます - Cursor では MERMAID チャートが即座にレンダリングされ、最高のユーザー体験を実現します
- ユーザー設定はセッションをまたいで保持され、デフォルトですべてのチャートに適用されます
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。