mcpField
M
MCP-Excel

MCP-Excel

ローカル
nife.ioビジネス・マーケティング04 日前に更新

MCP-Excel について

MCP-Excelは、Google Sheetsを4種類のエンティティを扱うCRMとして使うステートレスなMCPサーバーです。リード、組織、連絡先、活動を管理するチームやアプリ向けで、HTTPとstdioに対応し、既存シートに不足するタブや列を追加します。

主な機能

  1. 01リード、組織、連絡先、活動の管理
  2. 02レコードの追加、検索、一覧、更新、論理削除
  3. 03レコードの絞り込みと関連レコードの参照
  4. 04リードパイプラインの分析
  5. 05重複ヘッダーの検出と統合
  6. 06名刺画像から連絡先項目を抽出

活用シーン

  1. 01Google Sheetsで営業リードと活動を追跡
  2. 02組織に関連する連絡先を検索
  3. 03ステータスやセグメント別にパイプラインを確認
  4. 04名刺画像から連絡先情報を抽出

MCP 対応

ストリーミングHTTPまたはstdio経由で、MCPクライアントにCRM操作を提供します。各ツール呼び出しでGoogle SheetのIDまたはURLを指定し、共有のアクティブシート状態は持ちません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP-Excel — Google Sheets CRM MCP サーバー

任意の Google Sheet を 4 エンティティの CRM(Lead、Organization、Contact、Activity)に変換する、ステートレスな MCP サーバーです。スタンドアロンの HTTP サービス(FastMCP streamable-HTTP、デフォルトポート 5002)として、または Claude Desktop などのローカル MCP ホスト向けに stdio 経由で動作します。ゲートウェイ、ngrok、サブプロセスの起動は不要です。


アーキテクチャ

Any MCP host (Claude Desktop, your backend, an agent framework)
  │  HTTP POST /mcp  (JSON-RPC) — or stdio
  ▼
MCP-Excel :5002  (FastMCP streamable-HTTP)
  │  gspread
  ▼
Google Sheets API

すべてのツール呼び出しには明示的な sheet_id が含まれます。セッション状態や「アクティブなシート」変数はありません。リクエスト間で共有されるものがないため、複数のチームが同じ稼働中のインスタンスを安全に使用できます。


シートスキーマ(自動管理)

4 つのタブは、接続時に存在しない場合に作成されます。既存のタブはそのまま使用され、不足している列は既存データに影響を与えずに追加されます。

タブ主キー主な列
LeadLead IDOrganization ID, Status, Segment, Opportunity Details, Last Contact Date
OrganizationOrganization IDOrganization Name, Industry Domain, Sub Domain, Company Type, Website
ContactContact IDFirst Name, Last Name, Organization ID, Designation, Mobile, Email, LinkedIn Profile
ActivityActivity IDLead ID, Organization ID, Contact ID, Activity Type, Activity Sub-Type, Subject, Discussion Summary, Outcome

ID は既存のパターンを引き継いで自動採番されます(LD001 → LD002、ACT010 → ACT011)。一貫したパターンが見つからない場合は UUID にフォールバックします。

各タブには、まだ存在しない場合、監査用の Created At、Updated At、Deleted 列も追加されます。

ヘッダーはあいまい一致で照合されるため(同義語や類似した列名を解決します)、列名が多少異なる既存のシートでも動作します。実際に重複している列を統合するには、まずドライランで tool_dedupe_headers を実行してください。


セットアップ

1. Google サービスアカウント

Google Sheets API と Google Drive API を有効にした creds.json サービスアカウントキーが必要です。

このディレクトリ(デフォルトのパス)に配置するか、GOOGLE_APPLICATION_CREDENTIALS にフルパスを設定してください。

creds.json を git にコミットしないでください。 .gitignore で除外されています。ローカルに保管するか、シークレットとしてマウントしてください。

2. シートを共有する

接続する Google Sheet ごとに、シートを開き → Share → サービスアカウントのメールアドレスを Editor として追加 → Done をクリックします。

サービスアカウントのメールアドレスは起動時に表示され、権限エラー時には get_sheet_info によって返されます。また、creds.json からも確認できます。

python3 -c "import json; print(json.load(open('creds.json'))['client_email'])"
3. 依存関係をインストールする
pip install -r requirements.txt

オプション — 名刺の OCR(Claude Vision)サポート:

pip install anthropic
export ANTHROPIC_API_KEY=...

実行方法

ローカル開発(HTTP、:5002)
GOOGLE_APPLICATION_CREDENTIALS=creds.json python mcp_excel_server.py

正常に動作していることを確認します:

curl -s -X POST http://localhost:5002/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
  | python3 -m json.tool
Docker(ステージング/本番環境)
docker build -t mcp-excel .
docker run -p 5002:5002 \
  -v /path/to/creds.json:/secrets/creds.json \
  -e GOOGLE_APPLICATION_CREDENTIALS=/secrets/creds.json \
  mcp-excel
Claude Desktop(stdio トランスポート)

HTTP の代わりに stdio を使用するには、MCP_TRANSPORT=stdio を設定します。

{
  "mcpServers": {
    "crm": {
      "command": "python",
      "args": ["/path/to/mcp-excel/mcp_excel_server.py"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/mcp-excel/creds.json",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

環境変数

変数デフォルト説明
GOOGLE_APPLICATION_CREDENTIALScreds.jsonサービスアカウント JSON のパス
MCP_TRANSPORThttpサーバーモードでは http、Claude Desktop では stdio
MCP_PORT5002HTTP のリッスンポート
ANTHROPIC_API_KEY—tool_extract_business_card 専用

ツール

すべてのツールはステートレスです。呼び出しごとに sheet_id(Google Sheets の完全な URL またはスプレッドシート ID のみ)が必要です。

ツール説明
tool_get_sheet_infoアクセスを検証し、4 つすべてのタブが存在することを確認して、書き込み権限を確認します
tool_add_recordLead/Organization/Contact/Activity にレコードを追加します
tool_list_records任意の列ベースのフィルターを適用してレコードを一覧表示します(ページ分割)
tool_search_recordsすべての列を対象にキーワード検索します
tool_update_record主キー ID を指定して既存のレコードのフィールドを更新します
tool_delete_recordレコードを論理削除します(Deleted を true に設定します)
tool_get_related_records外部キーを使ってレコードを検索します(例:Lead に関連するすべての Activity)
tool_get_pipeline_analyticsLead パイプラインの分析:合計、ステータス別内訳、セグメント別内訳
tool_dedupe_headers重複する列を検索して統合します(最初にドライランのレポートを表示します)
tool_extract_business_cardClaude Vision を使って名刺画像から連絡先フィールドを抽出します(ANTHROPIC_API_KEY が必要です)

開発

pip install pytest
pytest test_mcp_excel.py test_crm_local.py -v

テストは完全にオフラインで実行されます(Google 呼び出しはモック化されています)。認証情報は不要です。


トラブルシューティング

問題対処方法
status: failure, message: ""シートが見つかりません。サービスアカウントを編集者として共有してください
Permission denied on sheetサービスアカウントと再共有してください。権限は閲覧者ではなく編集者にしてください
Cannot connect to MCP-Excel serviceMCP-Excel が起動していません。:5002 で起動してください
sheet_id is required and was empty必ず sheet_id を渡してください。暗黙的に選択されるアクティブシートはありません
タブが見つからない/列が正しくないget_sheet_info が不足しているタブを自動作成し、不足している列を追加します

ライセンス

MIT — LICENSE を参照してください。Nife が作成しました。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。