mcp-server-xlwings について
mcp-server-xlwingsは、xlwings COMを介して実行中のExcelを操作し、DRM保護やロック中のファイルにも対応します。ライブデータや数式、書式、VBAマクロを扱うExcelユーザー向けです。
主な機能
- 01アクティブなブックと選択範囲の読み取り
- 02セル範囲の読み書き
- 03VBAマクロの実行
- 04数式と計算結果の確認
- 05ブックとシートの管理
- 06書式設定とテキスト検索
活用シーン
- 01選択中の表データの要約
- 02数式を更新して計算結果を取得
- 03既存のVBAマクロの実行
- 04Excelで開けるブックの編集や書式設定
MCP 対応
ブック、セル、シート、数式、マクロ、書式を操作するExcel自動化ツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-server-xlwings
xlwings COM を介して Excel を自動化する MCP サーバーです。DRM で保護されたファイルにも対応しています。
xlwings を使う理由
openpyxl や pandas などのライブラリは、.xlsx ファイルをディスクから直接読み込みます。次のような場合には、これでは対応できません。
- DRM/ファイルレベルの暗号化が適用されている(企業環境では一般的です)
- 実行中の Excel セッション(数式、マクロ、アドイン)とやり取りする必要がある
- ファイルが別のプロセスによってロックされている
mcp-server-xlwings はCOM 自動化を使用して、実行中の Excel プロセスと通信します。そのため、DRM で保護されたドキュメントを含め、Excel 自体で開けるファイルならどれでも読み書きできます。
xlwings だけで実現できる機能
これらの機能は、openpyxl のようなファイルベースのライブラリでは実現できません。
- ユーザーの現在の選択範囲を読み取る — ユーザーが見ている内容をそのまま確認できます
- アクティブなブックを取得する — ファイルパスを指定する必要はありません
- VBA マクロを実行する — 既存のマクロを実行し、戻り値を取得できます
- 数式の計算結果をリアルタイムで取得する — 数式を設定して、計算結果をすぐに取得できます
- 再計算を強制する — Excel にすべての数式を再計算させます
インストール
uvx を使用する場合(推奨)
uvx mcp-server-xlwings
pip を使用する場合
pip install mcp-server-xlwings
設定
Claude Desktop
%APPDATA%\Claude\claude_desktop_config.json に追加します。
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}
Claude Code
claude mcp add xlwings -- uvx mcp-server-xlwings
Roo Code(VS Code)
Roo Code の MCP 設定に追加するか、<project-root>/.roo/mcp.json を作成します。
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}
Cursor
%USERPROFILE%\.cursor\mcp.json に追加します。
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}
Windsurf
%USERPROFILE%\.codeium\windsurf\mcp_config.json に追加します。
{
"mcpServers": {
"xlwings": {
"command": "uvx",
"args": ["mcp-server-xlwings"]
}
}
}
Continue(VS Code)
~/.continue/config.yaml に追加します。
mcpServers:
- name: xlwings
command: uvx
args:
- mcp-server-xlwings
利用可能なツール(11)
workbook を省略した場合、すべてのツールはデフォルトでアクティブなブックを対象にします。
| ツール | 説明 |
|---|---|
get_active_workbook | アクティブなブックの情報、シート、現在の選択範囲とそのデータを取得します |
manage_workbooks | ブックの一覧表示、オープン、保存、クローズ、再計算を行います |
read_data | merge_info、header_row、sheet="*" による一括読み取り、detail モードを使って範囲を読み取ります |
write_data | 2 次元配列(data)または単一セルの数式(formula)を書き込みます |
manage_sheets | シートの一覧表示、追加、削除、名前変更、コピー、有効化を行います。行と列の挿入・削除も可能です |
find_replace | テキストを検索し、必要に応じて置換します |
format_range | 書式(太字、斜体、色、罫線、配置、表示形式など)を適用します |
run_macro | VBA マクロを実行し、戻り値を取得します |
get_formulas | 範囲内のすべての数式を、必要に応じて計算結果とともに取得します |
get_cell_styles | 範囲内のセルの書式/スタイル情報(太字、色、罫線など)を取得します |
get_objects | シート上のグラフ、画像、図形を一覧表示します |
例
ユーザーが作業中の内容を確認する
「開いているスプレッドシートには何が入っていますか?」
エージェントは get_active_workbook() を呼び出して、ブック名、シート、選択範囲のデータを取得し、続いて read_data() を呼び出してシート全体を取得します。
選択したデータを要約する
「選択したデータを要約してください」
エージェントは get_active_workbook() を呼び出します。応答には選択範囲のデータが直接含まれます。
マクロを実行する
「UpdateReport マクロを実行してください」
エージェントは run_macro(macro_name="UpdateReport") を呼び出し、結果を返します。
集計行を作成する
「C10 に C2:C9 の合計を求める SUM 数式を追加してください」
エージェントは write_data(start_cell="C10", formula="=SUM(C2:C9)") を呼び出し、計算結果を取得します。
見出し行を書式設定する
「1 行目を太字、中央揃え、黄色の背景にしてください」
エージェントは format_range(cell_range="A1:D1", bold=true, alignment="center", bg_color="#FFFF00") を呼び出します。
すべてのシートを一度に読み込む
「すべてのシートの概要を教えてください」
エージェントは read_data(sheet="*") を呼び出し、1 回の呼び出しですべてのシートの概要を返します。
結合セルを正しく読み込む
「B6:C20 を読み込み、結合セルの値を補完してください」
エージェントは read_data(cell_range="B6:C20", merge_info=true) を呼び出します。結合セルには null ではなく、親セルの値が返されます。
すべての数式を検索する
「このシートのすべての数式を表示してください」
エージェントは get_formulas(cell_range="A1:Z100", values_too=true) を呼び出し、計算結果とともにすべての数式を取得します。
行を挿入する
「5 行目に空白行を 3 行挿入してください」
エージェントは manage_sheets(action="insert_rows", position=5, count=3) を呼び出します。
要件
- Windows(Excel COM の自動化は Windows 専用です)
- Microsoft Excel のインストール
- Python 3.10 以降
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。