excel-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@excel-mcp-serverGet the sheet names in Book1.xlsx"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Excel MCP Server
Windows環境で起動中のExcelインスタンスに対して、VBAモジュールの追加・編集・実行を可能にするMCPサーバーです。
機能
コアツール
get_workbooks: 現在起動しているExcelの全ワークブック一覧を取得
list_modules: ワークブック内の全VBAモジュール一覧を取得
get_module_code: 指定したモジュールのVBAコードを取得
add_module: 新しいVBAモジュールを追加
edit_vba: 既存のVBAモジュールのコードを編集
run_macro: 指定したマクロを実行
get_sheet_names: ワークブック内のシート名一覧を取得
get_range_values: 指定した範囲のセル値を2次元配列で取得
get_cell_value: 指定したセルの値・数式を取得
read_immediate_window: VBAイミディエイトウィンドウの内容を読み取り(Debug.Print出力の確認)⚠️
write_immediate_window: VBAイミディエイトウィンドウで式を評価(変数値の確認やテストコード実行)⚠️
AIアシスタント向けガイドライン(Prompts機能)
Excel MCP Serverは、AIアシスタントに対して使用方法のガイドラインを提供します:
excel-vba-guidelines: エラーキャプチャパターン、イミディエイト操作の許可プロトコルなどの詳細なガイドライン
このガイドラインはMCPサーバー自体が提供するため、ユーザーによる追加設定は不要です。
⚠️ 注意が必要なツール
以下のツールはVBEウィンドウをアクティブにし、キーボード操作を送信するため、実行中は他の作業が中断される可能性があります。AIアシスタントは使用前にユーザーに確認します:
read_immediate_window: VBEウィンドウをアクティブにし、Ctrl+G、Ctrl+A、Ctrl+Cのキー操作を送信し、クリップボードを使用します
write_immediate_window: VBEウィンドウをアクティブにし、Ctrl+Gのキー操作、式の入力、Enterキーを送信します
Related MCP server: Excel MCP Server
前提条件
システム要件
Windows OS
Node.js 18以上
Microsoft Excel(起動している必要があります)
Excelのセキュリティ設定
VBAプロジェクトにアクセスするには、Excelで以下の設定を有効にする必要があります:
Excelを開く
ファイル → オプション → トラストセンター → トラストセンターの設定
「マクロの設定」を選択
「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」 にチェックを入れる
OKをクリック
インストール
方法1: npx で直接使用(推奨・最も簡単)
クローン不要で、すぐに使えます:
Claude Desktop の設定ファイル(%APPDATA%\Claude\claude_desktop_config.json)に追加:
{
"mcpServers": {
"excel": {
"command": "npx",
"args": ["github:prizmPrograms/excel-mcp-server"]
}
}
}メリット:
✅ インストール不要(ローカルにファイルを残さない)
✅ 常に最新版を使用
✅ 最も簡単
注意: 初回起動時は npx がパッケージをダウンロードするため少し時間がかかりますが、2回目以降はキャッシュが使われて高速になります。
方法2: ローカルにクローンして使用
より高速な起動やオフライン使用が必要な場合:
1. リポジトリをクローン
git clone https://github.com/prizmPrograms/excel-mcp-server.git
cd excel-mcp-serverまたは、ReleasesからZIPファイルをダウンロードして展開することもできます。
2. 依存関係をインストール
npm install3. ビルド
npm run build使い方
方法1を使用した場合(npx)
設定ファイルに追加後、Claude Desktop を再起動するだけです。自動的に起動します。
方法2を使用した場合(ローカルクローン)
MCPサーバーとして実行
node dist/index.jsMCP クライアント設定
Claude Desktop や他のMCPクライアントの設定ファイル(通常は %APPDATA%\Claude\claude_desktop_config.json)に以下を追加します:
{
"mcpServers": {
"excel": {
"command": "node",
"args": [
"C:\\path\\to\\excel-mcp-server\\dist\\index.js"
]
}
}
}注意: パスは絶対パスで指定してください。
ツールの使用例
ワークブック一覧の取得
get_workbooksVBAモジュール一覧の取得
list_modules
- workbook: "Book1.xlsx"VBAコードの取得
get_module_code
- workbook: "Book1.xlsx"
- module_name: "Module1"新しいモジュールの追加
add_module
- workbook: "Book1.xlsx"
- module_name: "MyModule"
- module_type: 1 # 1=標準モジュール、2=クラスモジュールVBAコードの編集
edit_vba
- workbook: "Book1.xlsx"
- module_name: "Module1"
- code: |
Sub HelloWorld()
MsgBox "Hello, World!"
End Subマクロの実行
run_macro
- workbook: "Book1.xlsx"
- macro_name: "Module1.MyMacro"エラーキャプチャパターン(デバッグ時)
AIアシスタントは、マクロのデバッグ時に自動的にエラーキャプチャパターンを使用します。このパターンは、一時的なVBAラッパー関数を生成してエラー情報をキャプチャします。
パターンの仕組み:
一時モジュール(例:
_ErrorCapture_1234567890)を作成エラーキャプチャ用のラッパー関数を追加
run_macroでラッパー関数を実行JSON形式でエラー情報を取得:
{"status":"error","number":13,"description":"Type mismatch"...}エラー情報を基にコードを修正
一時モジュールをクリーンアップ
主なVBAエラー番号:
5: 無効なプロシージャ呼び出し6: オーバーフロー9: インデックスが有効範囲にありません(配列)11: 0で除算13: 型が一致しません91: オブジェクト変数が設定されていません424: オブジェクトが必要です1004: アプリケーション定義またはオブジェクト定義のエラー
詳細な使用方法は、AIアシスタントが提供するexcel-vba-guidelinesプロンプトに記載されています。
シート名一覧の取得
get_sheet_names
- workbook: "Book1.xlsx"レスポンス例:
[
{"Name": "Sheet1", "Index": 1, "Visible": -1},
{"Name": "Sheet2", "Index": 2, "Visible": -1},
{"Name": "Hidden", "Index": 3, "Visible": 0}
]セル範囲の値取得
get_range_values
- workbook: "Book1.xlsx"
- sheet: "Sheet1"
- range: "A1:C3"レスポンス例:
{
"WorkbookName": "Book1.xlsx",
"SheetName": "Sheet1",
"RangeAddress": "A1:C3",
"RowCount": 3,
"ColumnCount": 3,
"Values": [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
}単一セルの値取得
get_cell_value
- workbook: "Book1.xlsx"
- sheet: "Sheet1"
- cell: "A1"レスポンス例:
{
"WorkbookName": "Book1.xlsx",
"SheetName": "Sheet1",
"Address": "$A$1",
"Value": 100,
"Text": "100",
"Formula": "=SUM(B1:B10)",
"HasFormula": true
}イミディエイトウィンドウでの式評価
write_immediate_window
- workbook: "Book1.xlsx"
- expression: "arrFrom(1, 2, 3)"この機能は、VBA関数の戻り値を確認したり、変数の内容を確認したりするのに便利です。
式は ? プレフィックス付きで評価され、結果がイミディエイトウィンドウに表示されます。
イミディエイトウィンドウの内容読み取り
read_immediate_window
- workbook: "Book1.xlsx"レスポンス例:
{
"Success": true,
"Content": "Array 1: dim=1 size=(3) lbs=(0) data=[1,2,3]\nArray 2: dim=1 size=(3) lbs=(0) data=[4,5,6]",
"LineCount": 2
}AIによるVBA自動デバッグ
AIアシスタントは、マクロのエラー時に自動的にデバッグと修正を行います:
エラーキャプチャパターンによる自動修正フロー:
1. エラーキャプチャパターン実行 → 詳細なエラー情報取得(ErrorNumber + ErrorDescription)
2. get_module_code → 問題のVBAコードを取得
3. AI がエラーを解析して修正コードを生成
4. edit_vba → 修正コードをモジュールに書き込む
5. エラーキャプチャパターン再実行 → 成功するまでループ詳細な実装方法は、AIアシスタントが利用するexcel-vba-guidelinesプロンプトに記載されています。
移行ガイド(v2.0.0)
🔄 run_macro_safe の削除について
v2.0.0で変更: run_macro_safeツールは削除されました。
代替方法: AIアシスタントは、MCPのPrompts機能で提供されるexcel-vba-guidelinesプロンプトに基づき、エラーキャプチャパターンを実装します。
このパターンは以下のツールを組み合わせて実現されます:
add_module: 一時モジュール_ErrorCapture_<timestamp>の作成edit_vba: エラーキャプチャラッパー関数の追加run_macro: ラッパー関数の実行でJSON形式のエラー情報を取得
変更の利点:
✅ 透明性: 何が起きているか明確(一時モジュールが作成される)
✅ 柔軟性: 必要に応じてカスタマイズ可能
✅ 保守性: ガイドラインはMCPサーバーに含まれ、自動更新される
✅ 拡張性: 将来的に他のガイドラインも追加可能
ユーザーへの影響:
既存のツール(add_module, edit_vba, run_macro)はすべて引き続き利用可能
AIアシスタントの動作は変わらず、より明確になります
追加の設定は不要(
npx excel-mcp-serverで自動的に利用可能)
トラブルシューティング
Excelが認識されない
症状: get_workbooks が空の配列を返す、または "Excel is not running" エラー
解決方法:
Excelが実際に起動しているか確認
管理者権限でExcelを起動している場合、MCPサーバーも管理者権限で実行する必要があります
PowerShellの実行ポリシーを確認:
Get-ExecutionPolicy(RemoteSignedまたはUnrestrictedが必要)
VBAプロジェクトにアクセスできない
症状: "Programmatic access to Visual Basic Project is not trusted"
解決方法:
Excelを開く
ファイル → オプション → トラストセンター → トラストセンターの設定
「マクロの設定」を選択
「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェック
イミディエイトウィンドウ操作が失敗する
症状: read_immediate_window または write_immediate_window がタイムアウトまたはエラー
解決方法:
Excelウィンドウが他のウィンドウに隠れていないか確認
VBEエディタが既に開いている場合は閉じる
実行中に他のキーボード操作を行わない
セキュリティソフトがキーボード操作をブロックしていないか確認
ビルドエラー
症状: npm run build がエラーを出す
解決方法:
Node.jsのバージョン確認:
node --version(18以上が必要)node_modulesを削除して再インストール:rm -r node_modules; npm installTypeScriptのグローバルインストール:
npm install -g typescript
ライセンス
MIT License - 詳細は LICENSE ファイルを参照してください。
作者
prizmPrograms
貢献
バグ報告や機能リクエストは Issues でお願いします。
プルリクエストも歓迎します!
シート名一覧の取得
get_sheet_names
- workbook: "Book1.xlsx"セル範囲の値を取得(VBA実行結果の読み出しに活用)
get_range_values
- workbook: "Book1.xlsx"
- sheet: "Sheet1"
- range: "A1:C10"単一セルの値・数式を取得
get_cell_value
- workbook: "Book1.xlsx"
- sheet: "Sheet1"
- cell: "A1"VBAからAIへのデータ受け渡しパターン
パターン1: VBA Functionの戻り値を使う(単純な値)
Function GetSummary() As String
GetSummary = "処理完了: " & Cells(1,1).Value
End Functionrun_macro
- workbook: "Book1.xlsx"
- macro_name: "Module1.GetSummary"→ Result フィールドに戻り値が入る
パターン2: VBAがセルに書き込み → AIが読み取る(複雑なデータ)
Sub CalcAndWrite()
Dim result As Double
result = 複雑な計算...
Worksheets("Output").Cells(1, 1).Value = result
End Sub1. run_macro → Module1.CalcAndWrite
2. get_cell_value → sheet: "Output", cell: "A1"デバッグ機能
AIが自律的にVBAコードをテスト・デバッグできる機能を提供します。
イミディエイトウィンドウの読み取り
VBAのDebug.Print出力やテスト結果を確認できます。
read_immediate_window
- workbook: "Book1"使用例:
Sub TestFunction()
Debug.Print "Test 1: "; AddNumbers(2, 3)
Debug.Print "Test 2: "; AddNumbers(-1, 1)
End Subマクロ実行後にread_immediate_windowを呼び出すと、Debug.Print出力を取得できます。
イミディエイトウィンドウで式を評価
変数の値を確認したり、テスト式を実行したりできます。
write_immediate_window
- workbook: "Book1"
- expression: "AddNumbers(10, 20)"式の例:
myVariable- 変数の値を確認1+1- 簡単な計算MyFunction(5)- 関数を呼び出して結果を確認Cells(1,1).Value- セルの値を確認
仕組み: 一時マクロを生成して式を評価し、結果をDebug.Printで出力します。
制限事項
複数のExcelプロセスについて
このMCPサーバーは、単一のExcelプロセス内のすべてのワークブックにアクセスできます。
ただし、複数のExcel.exeプロセスが同時に起動している場合(Excelを複数の独立したウィンドウで起動した場合)、Windows COMの制限により、通常は最初に起動したExcelプロセスのみがアクセス可能です。
推奨される使用方法
すべてのExcelファイルを同じExcelインスタンス(同じプロセス)で開いてください
通常、Excelファイルをダブルクリックして開くと、既存のExcelプロセスで開かれます
新しいExcelプロセスは、明示的に「新しいウィンドウ」を開いた場合のみ起動します
複数プロセスが起動している場合
もし複数のExcelプロセスが起動していて、特定のブックにアクセスできない場合:
対象のブックを閉じる
既存のExcelウィンドウから「ファイル → 開く」で再度開く
これにより、同じプロセス内で開かれ、アクセス可能になります
AIによる自律的なテスト/デバッグワークフロー
これらの機能を組み合わせて、AIが自動的にVBAコードをテスト・検証できます:
パターン1: 自動テスト実行
1. edit_vba → テスト対象の関数を作成
2. edit_vba → テストマクロを作成(Debug.Printで結果を出力)
3. run_macro → テストマクロを実行
4. read_immediate_window → テスト結果を読み取り
5. AIが結果を解析して成功/失敗を判定
6. 失敗している場合は修正して再テスト(ステップ1に戻る)テストマクロの例:
Sub TestAddNumbers()
Debug.Print "Test 1: "; (AddNumbers(2, 3) = 5)
Debug.Print "Test 2: "; (AddNumbers(-1, 1) = 0)
Debug.Print "Test 3: "; (AddNumbers(0, 0) = 0)
End Subパターン2: 式の評価によるテスト
1. edit_vba → 関数を作成
2. write_immediate_window → 関数を呼び出して結果を確認
3. read_immediate_window → 結果を読み取り
4. AIが期待値と比較して判定
5. 必要に応じて修正例:
write_immediate_window -expression: "AddNumbers(5, 10)"
read_immediate_window → "15" が出力されていることを確認技術詳細
アーキテクチャ
このMCPサーバーは以下のコンポーネントで構成されています:
excel-com.ps1: PowerShellスクリプトでExcel COMオブジェクトを直接操作
excel-wrapper.ts: PowerShellスクリプトを呼び出すTypeScriptラッパー
index.ts: MCPサーバーのメインエントリーポイント
なぜPowerShellを使用するのか?
Node.jsから直接Windows COM オブジェクトを操作するには、ネイティブモジュール(winaxなど)が必要ですが、これらはVisual Studio Build Toolsを必要とします。PowerShellを使用することで、追加のビルドツールなしでCOM操作が可能になります。
モジュールタイプ
1: 標準モジュール(VBAコード用)2: クラスモジュール3: ユーザーフォーム
トラブルシューティング
Excelが認識されない
症状: get_workbooks が空の配列を返す、または "Excel is not running" エラー
解決方法:
Excelが実際に起動しているか確認
管理者権限でExcelを起動している場合、MCPサーバーも管理者権限で実行する必要があります
PowerShellの実行ポリシーを確認:
Get-ExecutionPolicy(RemoteSignedまたはUnrestrictedが必要)
VBAプロジェクトにアクセスできない
症状: "Programmatic access to Visual Basic Project is not trusted"
解決方法:
Excelを開く
ファイル → オプション → トラストセンター → トラストセンターの設定
「マクロの設定」を選択
「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェック
イミディエイトウィンドウ操作が失敗する
症状: read_immediate_window または write_immediate_window がタイムアウトまたはエラー
解決方法:
Excelウィンドウが他のウィンドウに隠れていないか確認
VBEエディタが既に開いている場合は閉じる
実行中に他のキーボード操作を行わない
セキュリティソフトがキーボード操作をブロックしていないか確認
ビルドエラー
症状: npm run build がエラーを出す
解決方法:
Node.jsのバージョン確認:
node --version(18以上が必要)node_modulesを削除して再インストール:rm -r node_modules; npm installTypeScriptのグローバルインストール:
npm install -g typescript
PowerShell実行ポリシーエラー
スクリプトは -ExecutionPolicy Bypass で実行されるため、通常は問題ありませんが、エラーが発生する場合は管理者権限でPowerShellを開き:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser制限事項
Windows専用(COM経由のため)
Excelが既に起動している必要がある
VBAプロジェクトへのアクセスにはセキュリティ設定の変更が必要
ライセンス
MIT License - 詳細は LICENSE ファイルを参照してください。
作者
prizmPrograms
貢献
バグ報告や機能リクエストは Issues でお願いします。
プルリクエストも歓迎します!
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/prizmPrograms/excel-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server