Excel Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Excel Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Windows環境で起動中のExcelインスタンスに対して、VBAモジュールの追加・編集・実行を可能にするMCPサーバーです。
Excel MCP Serverは、AIアシスタントに対して使用方法のガイドラインを提供します:
このガイドラインはMCPサーバー自体が提供するため、ユーザーによる追加設定は不要です。
以下のツールはVBEウィンドウをアクティブにし、キーボード操作を送信するため、実行中は他の作業が中断される可能性があります。AIアシスタントは使用前にユーザーに確認します:
VBAプロジェクトにアクセスするには、Excelで以下の設定を有効にする必要があります:
クローン不要で、すぐに使えます:
Claude Desktop の設定ファイル(%APPDATA%\Claude\claude_desktop_config.json)に追加:
{
"mcpServers": {
"excel": {
"command": "npx",
"args": ["github:prizmPrograms/excel-mcp-server"]
}
}
}メリット:
注意: 初回起動時は npx がパッケージをダウンロードするため少し時間がかかりますが、2回目以降はキャッシュが使われて高速になります。
より高速な起動やオフライン使用が必要な場合:
#### 1. リポジトリをクローン
git clone https://github.com/prizmPrograms/excel-mcp-server.git
cd excel-mcp-serverまたは、ReleasesからZIPファイルをダウンロードして展開することもできます。
#### 2. 依存関係をインストール
npm install#### 3. ビルド
npm run build設定ファイルに追加後、Claude Desktop を再起動するだけです。自動的に起動します。
#### MCPサーバーとして実行
node dist/index.js#### MCP クライアント設定
Claude Desktop や他のMCPクライアントの設定ファイル(通常は %APPDATA%\Claude\claude_desktop_config.json)に以下を追加します:
{
"mcpServers": {
"excel": {
"command": "node",
"args": [
"C:\\path\\to\\excel-mcp-server\\dist\\index.js"
]
}
}
}注意: パスは絶対パスで指定してください。
get_workbookslist_modules
- workbook: "Book1.xlsx"get_module_code
- workbook: "Book1.xlsx"
- module_name: "Module1"add_module
- workbook: "Book1.xlsx"
- module_name: "MyModule"
- module_type: 1 # 1=標準モジュール、2=クラスモジュールedit_vba
- workbook: "Book1.xlsx"
- module_name: "Module1"
- code: |
Sub HelloWorld()
MsgBox "Hello, World!"
End Subrun_macro
- workbook: "Book1.xlsx"
- macro_name: "Module1.MyMacro"AIアシスタントは、マクロのデバッグ時に自動的にエラーキャプチャパターンを使用します。このパターンは、一時的なVBAラッパー関数を生成してエラー情報をキャプチャします。
パターンの仕組み:
_ErrorCapture_1234567890)を作成run_macroでラッパー関数を実行{"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アシスタントは、マクロのエラー時に自動的にデバッグと修正を行います:
エラーキャプチャパターンによる自動修正フロー:
1. エラーキャプチャパターン実行 → 詳細なエラー情報取得(ErrorNumber + ErrorDescription)
2. get_module_code → 問題のVBAコードを取得
3. AI がエラーを解析して修正コードを生成
4. edit_vba → 修正コードをモジュールに書き込む
5. エラーキャプチャパターン再実行 → 成功するまでループ詳細な実装方法は、AIアシスタントが利用するexcel-vba-guidelinesプロンプトに記載されています。
v2.0.0で変更: run_macro_safeツールは削除されました。
代替方法: AIアシスタントは、MCPのPrompts機能で提供されるexcel-vba-guidelinesプロンプトに基づき、エラーキャプチャパターンを実装します。
このパターンは以下のツールを組み合わせて実現されます:
add_module: 一時モジュール _ErrorCapture_<timestamp> の作成edit_vba: エラーキャプチャラッパー関数の追加run_macro: ラッパー関数の実行でJSON形式のエラー情報を取得変更の利点:
ユーザーへの影響:
npx excel-mcp-serverで自動的に利用可能)症状: get_workbooks が空の配列を返す、または "Excel is not running" エラー
解決方法:
Get-ExecutionPolicy(RemoteSignedまたはUnrestrictedが必要)症状: "Programmatic access to Visual Basic Project is not trusted"
解決方法:
症状: read_immediate_window または write_immediate_window がタイムアウトまたはエラー
解決方法:
症状: npm run build がエラーを出す
解決方法:
node --version(18以上が必要)node_modules を削除して再インストール: rm -r node_modules; npm installnpm install -g typescriptMIT License - 詳細は LICENSE ファイルを参照してください。
prizmPrograms
バグ報告や機能リクエストは Issues でお願いします。
プルリクエストも歓迎します!
get_sheet_names
- workbook: "Book1.xlsx"get_range_values
- workbook: "Book1.xlsx"
- sheet: "Sheet1"
- range: "A1:C10"get_cell_value
- workbook: "Book1.xlsx"
- sheet: "Sheet1"
- cell: "A1"Function GetSummary() As String
GetSummary = "処理完了: " & Cells(1,1).Value
End Functionrun_macro
- workbook: "Book1.xlsx"
- macro_name: "Module1.GetSummary"→ Result フィールドに戻り値が入る
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で出力します。
このMCPサーバーは、単一のExcelプロセス内のすべてのワークブックにアクセスできます。
ただし、複数のExcel.exeプロセスが同時に起動している場合(Excelを複数の独立したウィンドウで起動した場合)、Windows COMの制限により、通常は最初に起動したExcelプロセスのみがアクセス可能です。
#### 推奨される使用方法
#### 複数プロセスが起動している場合
もし複数のExcelプロセスが起動していて、特定のブックにアクセスできない場合:
これらの機能を組み合わせて、AIが自動的にVBAコードをテスト・検証できます:
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 Sub1. 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サーバーは以下のコンポーネントで構成されています:
Node.jsから直接Windows COM オブジェクトを操作するには、ネイティブモジュール(winaxなど)が必要ですが、これらはVisual Studio Build Toolsを必要とします。PowerShellを使用することで、追加のビルドツールなしでCOM操作が可能になります。
1: 標準モジュール(VBAコード用)2: クラスモジュール3: ユーザーフォーム症状: get_workbooks が空の配列を返す、または "Excel is not running" エラー
解決方法:
Get-ExecutionPolicy(RemoteSignedまたはUnrestrictedが必要)症状: "Programmatic access to Visual Basic Project is not trusted"
解決方法:
症状: read_immediate_window または write_immediate_window がタイムアウトまたはエラー
解決方法:
症状: npm run build がエラーを出す
解決方法:
node --version(18以上が必要)node_modules を削除して再インストール: rm -r node_modules; npm installnpm install -g typescriptスクリプトは -ExecutionPolicy Bypass で実行されるため、通常は問題ありませんが、エラーが発生する場合は管理者権限でPowerShellを開き:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserMIT License - 詳細は LICENSE ファイルを参照してください。
prizmPrograms
バグ報告や機能リクエストは Issues でお願いします。
プルリクエストも歓迎します!
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.