Skip to main content
Glama
private-technology

MCP Excel Workbook Processor

MCP Excel Workbook Processor for GitHub Copilot

このプロジェクトは、GitHub Copilotで使用できるExcelワークブック処理用のMCP(Model Context Protocol)サーバーです。Docker Composeを使用して簡単にセットアップ・実行できます。

機能

  • Excelファイル(.xlsx)の全シートを読み取り

  • シート名を指定して読み取り

  • シートインデックスを指定して読み取り

  • JSON形式でデータを返却

  • 空のセルやデータ型の変換を適切に処理

前提条件

  • Docker と Docker Compose がインストールされていること

  • Python 3.10以上(ローカルでサンプルファイルを作成する場合)

セットアップ

1. リポジトリのクローンまたはダウンロード

cd /path/to/your/workspace

2. サンプルExcelファイルの作成(オプション)

既に sample/ ディレクトリにサンプルファイルが含まれていますが、追加で作成する場合:

python3 create_sample_excel.py

3. Docker Composeでサーバーを起動

Makefileを使用する場合(推奨):

make build
make up

または直接Docker Composeを使用:

docker compose up -d --build

4. 動作確認

サーバーが正常に起動しているか確認:

make check
make logs

または直接Docker Composeを使用:

docker compose ps
docker compose logs mcp-excel-server

Makefileコマンド

便利なMakefileコマンドが利用できます:

make help          # 利用可能なコマンド一覧を表示
make build         # Dockerイメージをビルド
make up            # コンテナを起動
make down          # コンテナを停止
make restart       # コンテナを再起動
make logs          # ログを表示
make test          # テストスクリプトを実行
make sample        # サンプルExcelファイルを作成
make clean         # コンテナとイメージを削除
make shell         # コンテナ内でシェルを開く

GitHub Copilotでの設定

GitHub CopilotでこのMCPサーバーを使用するには、MCP設定ファイルに追加する必要があります。

設定ファイルの場所

GitHub CopilotのMCP設定ファイルは通常、以下の場所にあります:

  • macOS/Linux: ~/.config/github-copilot/mcp.json または ~/.config/github-copilot/hosts.json

  • Windows: %APPDATA%\GitHub Copilot\mcp.json または %APPDATA%\GitHub Copilot\hosts.json

設定例

mcp-config-example.json を参考に、実際のパスを設定してください:

{
  "mcpServers": {
    "excel-workbook-processor": {
      "command": "docker",
      "args": [
        "compose",
        "-f",
        "/home/toyoaki/workspace/private-technology/mcp-excel-server-docker-compose-for-copilot/docker-compose.yml",
        "run",
        "--rm",
        "-T",
        "mcp-excel-server",
        "python",
        "-m",
        "src.excel_reader_server"
      ],
      "cwd": "/home/toyoaki/workspace/private-technology/mcp-excel-server-docker-compose-for-copilot"
    }
  }
}

注意: パスは実際のプロジェクトのパスに置き換えてください。

設定の適用

  1. 設定ファイルを編集または作成

  2. GitHub Copilotを再起動

  3. MCPサーバーが利用可能になっているか確認

使用方法

利用可能なツール

1. load_workbook

ワークブック内のすべてのシートからデータを抽出します。

{
  "file_path": "sample.xlsx"
}

2. get_sheet_by_name

指定したシート名のシートからデータを抽出します。シート名が指定されない場合は、最初のシートを抽出します。

{
  "file_path": "sample.xlsx",
  "sheet_name": "Sales"
}

3. get_sheet_by_position

指定した位置(インデックス)のシートからデータを抽出します。位置が指定されない場合は、最初のシート(位置0)を抽出します。

{
  "file_path": "sample.xlsx",
  "sheet_position": 0
}

ファイルパス

ファイルパスは以下のいずれかで指定できます:

  • /app/sample/ ディレクトリからの相対パス(例: sample.xlsx

  • /app/data/ ディレクトリからの相対パス(例: data.xlsx

  • 絶対パス

ディレクトリ構造

.
├── docker-compose.yml          # Docker Compose設定
├── Dockerfile                  # Dockerイメージ定義
├── Makefile                    # ビルド・実行用Makefile
├── requirements.txt            # Python依存関係
├── create_sample_excel.py      # サンプルExcelファイル作成スクリプト
├── test_server.sh              # テストスクリプト
├── mcp-config-example.json     # GitHub Copilot設定例
├── README.md                   # このファイル
├── sample/                     # サンプルExcelファイル(マウント用)
│   ├── sample.xlsx
│   └── simple.xlsx
├── data/                       # 追加のExcelファイル用(オプション)
└── src/
    └── excel_reader_server/
        ├── __init__.py
        ├── __main__.py         # MCPサーバーメインコード
        └── file_handler.py     # Excelファイル処理ユーティリティ

テスト

自動テストスクリプト

提供されているテストスクリプトを実行:

make test
# または
./test_server.sh

このスクリプトは以下をテストします:

  • すべてのシートの抽出

  • シート名を指定した抽出

  • シート位置を指定した抽出

手動テスト

Makefileを使用:

make test-interactive

またはDockerコンテナ内で直接テスト:

# コンテナをビルド
make build

# サンプルファイルの抽出テスト
docker compose run --rm mcp-excel-server python -c "
import sys
sys.path.insert(0, '/app')
from src.excel_reader_server.file_handler import ExcelFileResolver, WorkbookParser
import json
path = ExcelFileResolver.locate_file('sample.xlsx')
result = WorkbookParser.extract_all_sheets(path)
print(json.dumps(result, indent=2, ensure_ascii=False))
"

サンプルファイルの確認

# コンテナ内のファイル一覧を確認
docker compose run --rm mcp-excel-server ls -la /app/sample/

トラブルシューティング

サーバーが起動しない

# ログを確認
docker compose logs mcp-excel-server

# コンテナを再ビルド
docker compose down
docker compose up -d --build

ファイルが見つからない

  • ファイルパスが正しいか確認

  • sample/ または data/ ディレクトリにファイルが存在するか確認

  • ファイル名の大文字小文字を確認

GitHub Copilotで認識されない

  • 設定ファイルのパスが正しいか確認

  • Docker Composeが起動しているか確認

  • GitHub Copilotを再起動

ライセンス

このプロジェクトは、mcp-excel-reader-serverを参考に作成されています。

Apache 2.0 License

参考リポジトリ

Related MCP Connectors