Skip to main content
Glama
Corvalon
by Corvalon

mcp-excel

License: MIT Model Context Protocol

Model Context Protocol サーバーで、Claude Code(または任意の MCP クライアント)に Excel ワークブックへの完全な読み書きアクセスを提供します。シート、セル範囲、構造化テーブル、数式、書式、およびワークブック間参照に対応しています。実際の .xlsx ファイルを ExcelJS を使用してディスク上で読み書きします。Excel のコピー、Microsoft アカウント、クラウドサービスは不要です。

ローカルの stdio サブプロセスとして、または HTTP/SSE サービスとして実行できます(Docker 経由で LAN 上のデスクトップクライアントとインスタンスを共有するのに便利です)。

ステータス: 11 個のツール、stdio + SSE トランスポート、npm 以外の外部依存関係なし。ライセンス: MIT。

ツール

ツール

機能

list_sheets

ワークブック内のすべてのシートを行数・列数とともに一覧表示

read_range

セル範囲を読み取り、値・数式・型を返す

write_cells

特定のセルに値または数式を書き込む(ファイル/シートがなければ作成)

write_rows

開始セルから複数行のデータを書き込む(一括データセット構築用)

create_table

ヘッダー、データ、オプションの列数式を持つ構造化 Excel テーブル(ListObject)を作成

create_workbook

1 つ以上の名前付きシートを持つ新しい空のワークブックを作成

add_sheet

既存のワークブックに新しいシートを追加

delete_sheet

ワークブックからシートを削除

format_cells

範囲にフォント、塗りつぶし、数値書式、配置、罫線を適用

cross_workbook_reference

1 つのワークブックから読み取り、別のワークブックに値(またはリンク数式)を書き込む

get_defined_names

ワークブック内の名前付き範囲とテーブル名を一覧表示

すべてのファイルパス引数は、サーバーの作業ディレクトリに対して path.resolve() で解決されるため、絶対パスが最も安全です。Docker(SSE)モードでは、パスはコンテナ内のマウントされた /data ボリュームに対して解決されます(下記参照)。

Related MCP server: mcp-xlsx-server

要件

  • Node.js 18 以降(stdio モード)、または

  • Docker(SSE / 共有インスタンスモード)

セットアップ: Claude Code(stdio、ローカル)

クローンしてインストール:

git clone https://bitbucket.org/corvalon/mcp-excel.git
cd mcp-excel
npm ci

サーバーを登録します。CLI で追加するか:

claude mcp add excel -- node /absolute/path/to/mcp-excel/index.js

または、Claude Code の設定(~/.claude.json)に手動で追加します:

{
  "mcpServers": {
    "excel": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-excel/index.js"]
    }
  }
}

Claude Code を再起動します。ツールは mcp__excel__* プレフィックスの下に表示されます。

セットアップ: Claude Desktop(stdio、ローカル)

同じブロックを Claude Desktop の設定(Settings > Developer > Edit Config で claude_desktop_config.json が開きます)に追加します:

{
  "mcpServers": {
    "excel": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-excel/index.js"]
    }
  }
}

保存して再起動します。ハンマー/ツールアイコンが表示されたら、サーバーは接続されています。

セットアップ: Docker(SSE、共有インスタンス)

ネットワーク上の任意の MCP クライアントが SSE 経由で到達できるコンテナを 1 つ実行します。これは、Node.js がインストールされていないマシンから Excel ファイルを操作する場合に便利です。

  1. ワークブックを格納するフォルダをコンテナにマウントして起動します:

    MCP_EXCEL_DATA_DIR=/path/to/your/spreadsheets docker compose up -d --build

    compose ファイルはそのフォルダをコンテナ内の /data としてマウントし、ポート 3001 で待ち受けます。

  2. SSE エンドポイントをクライアント設定に追加します(クライアントが別のマシンにある場合は、ホストをコンテナホストの LAN IP に置き換えます):

    {
      "mcpServers": {
        "excel": {
          "url": "http://localhost:3001/sse"
        }
      }
    }
  3. パスはコンテナ内で解決されるため、ファイルは /data マウントを基準に指定します。MCP_EXCEL_DATA_DIR が ~/spreadsheets の場合、ツール呼び出しでは ~/spreadsheets/2025/Budget.xlsx は /data/2025/Budget.xlsx になります。

別のホストのクライアントが SSE 経由で接続する場合は、サーバーがリクエストを受け入れるように MCP_ALLOWED_HOSTS を設定します。docker-compose.yml の隣に .env ファイルを作成します:

MCP_ALLOWED_HOSTS='localhost,127.0.0.1,::1,192.168.1.50,my-host.local'

コンテナ管理:

docker compose up -d --build   # start / rebuild after code changes
docker compose down            # stop
docker compose logs -f         # tail logs

ヘルスチェックは http://<host>:3001/health で利用できます。

設定

変数

デフォルト

目的

MCP_TRANSPORT

stdio

ローカルサブプロセス用の stdio、HTTP/SSE サービス用の sse

MCP_PORT

3000

SSE モードのポート(Docker compose ファイルは 3001 を使用)

MCP_ALLOWED_HOSTS

localhost,127.0.0.1,::1

SSE モードの Host ヘッダー許可リスト(カンマ区切り)

MCP_EXCEL_DATA_DIR

./data

Docker コンテナで /data としてマウントされるホストフォルダ

セキュリティ

このサーバーは実際のファイルを読み書きし、SSE モードではネットワークポートを開きます。信頼できるローカルツールとして扱い、インターネットに公開するサービスとしては扱わないでください。

  • ファイルアクセス。 ツール呼び出しは、サーバープロセスが到達できる任意の .xlsx パスを読み書きできます。stdio モードではそれはファイルシステム全体です。Docker(SSE)モードではマウントされた /data ボリュームに限定されるため、アクセスを制限するには Docker がより安全な方法です。

  • SSE には認証がありません。 HTTP/SSE エンドポイントは 0.0.0.0 で待ち受け、呼び出し元を認証しません。信頼できる LAN 上でのみ実行し、MCP_ALLOWED_HOSTS(Host ヘッダー許可リスト)と独自のファイアウォールで到達可能な範囲を制限してください。ポート 3001 をパブリックインターネットに公開しないでください。

  • 数式はデータであり、コードではありません。 ExcelJS は数式文字列を書き込みます。マクロや VBA は実行しないため、生成されたワークブックを開いてもこのサーバーからのコードは実行されません。

プロンプト例

  • "カテゴリ、予算、実績、差異の列を持つ新しい予算ワークブックを作成して。"

  • "Sales.xlsx のデータを読んで、地域別の合計をまとめて。"

  • "Q1 シートの列 B の下部に SUM 数式を追加して。"

  • "このデータから合計行付きの書式付きテーブルを作成して。"

  • "Budget.xlsx の月次合計を Report.xlsx の Summary シートに取り込んで。"

注意点と落とし穴

権限。 1 つのワイルドカードで 11 個すべてのツールをカバーできます: mcp__<key>__* を許可します。ここで <key> はサーバーを登録した名前です。excel として登録した場合、mcp__excel__* になります。ツールを個別に列挙する必要はありません。

不明なパラメータは拒否されます(1.1.0 以降)。引数名を誤って入力すると、キーを指定した -32602 unrecognized_keys で失敗します。また、すべてのツールは additionalProperties: false を公開します。以前のバージョンでは、タイプミスを黙って無視してデフォルトで実行され、誤ったデータを自信を持って返していました。

数式は保存され、評価されません。 このサーバーは数式テキストを書き込みます。結果は計算しません。数式セルを読み戻すと、ファイルが Excel または LibreOffice で開かれて保存されるまで =SUM(A1:A2) (result: not calculated) が返されます。これによりキャッシュされた結果が入力されます。計算された合計が必要な場合は、ソースセルを読み取って自分で合計するか、最初にスプレッドシートアプリケーションでファイルを往復させてください。

制限事項

現在どのツールでも公開されていないもの:

  • シートの途中での行/列の挿入または削除

  • 定義名の作成または編集

  • テーブルと定義名の区別

これらについては、スプレッドシートライブラリでファイルを直接操作してください。Python では openpyxl が 3 つすべてをカバーします。数式を保持するには load_workbook(path, data_only=False) で読み込んでください。data_only=True はキャッシュされた値を返しますが、上記の理由で None になる場合があります。

ライセンス

MIT (c) 2026 Corvalon.

Related MCP Connectors

Related MCP Servers