mcpField
P
plots-mcp

plots-mcp

ローカル
github.com/MR901データ・分析455 週間前に更新

plots-mcp について

plots-mcpは、データをチャートに変換するMCPサーバーです。MCPクライアントでの可視化向けで、Mermaidを既定とし、PNG画像やテキストでも出力できます。

主な機能

  1. 01折れ線、棒、円、散布図などの生成
  2. 02Mermaid、PNG、テキストでの出力
  3. 03サンプルデータからフィールド対応を提案
  4. 04チャート種別とテーマの一覧表示
  5. 05テーマとチャート寸法の設定

活用シーン

  1. 01MCPチャットで売上データを可視化
  2. 02折れ線チャートで推移を確認
  3. 03表形式データからチャートを作成
  4. 04テスト画像で画像対応を確認

MCP 対応

チャート描画と設定のツールをMCPクライアントに提供し、stdioとstreamable HTTPに対応します。結果はMermaid、PNG画像、テキストで返せます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mr901-plots": {
"command": "uvx",
"args": [
"mcp-plots"
]
}
}
}
起動コマンドuvx mcp-plots

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-plots0.0.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Plots MCP サーバー

PyPI PyPI Downloads Smithery Glama Python Versions License

README の画像

データ可視化のための 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 ユーザー向け
  1. パッケージをインストールします:pip install mcp-plots
  2. Cursor の MCP 設定(~/.cursor/mcp.json)に追加します:
    {
      "mcpServers": {
        "plots": {
          "command": "mcp-plots",
          "args": ["--transport", "stdio"]
        }
      }
    }
    
    別の方法(uvx + PyPI を使ったインストール不要の方法):
    {
      "mcpServers": {
        "plots": {
          "command": "uvx",
          "args": ["mcp-plots", "--transport", "stdio"]
        }
      }
    }
    
  3. Cursor を再起動します
  4. 次のように依頼します:"売上を示す棒グラフを作成してください: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 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(従来のインストール方法)
  1. 依存関係をインストール
pip install -r requirements.txt
  1. サーバーを実行(HTTP トランスポート、デフォルトポート 8000)
python -m src --transport streamable-http --host 0.0.0.0 --port 8000 --log-level INFO
  1. 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. 統合を確認する

設定を追加した後:

  1. Cursor を再起動します
  2. Cursor の MCP パネルで MCP 接続を確認します
  3. 簡単なチャートでテストします:
    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-beta
  • funnel → カラーグラデーション付きのスタイル設定されたフローチャート
  • 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 を使用します

ドキュメント

その他のリソース
チャートの例

基本的な棒グラフ:

{
  "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 チャートが即座にレンダリングされ、最高のユーザー体験を実現します
  • ユーザー設定はセッションをまたいで保持され、デフォルトですべてのチャートに適用されます

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。