Sharepoint Mcp について
Sharepoint Mcpは、AIエージェントをMicrosoft SharePointに接続するMCPサーバーです。Office365 RESTまたはMicrosoft Graphを使い、ファイル操作、コンテンツ抽出、検索、メタデータ管理を行えます。
主な機能
- 01PDF、Word、Excel、テキストの読み取りと解析
- 02フォルダーの一覧表示、作成、削除
- 03ドキュメントのアップロード、ダウンロード、更新、削除
- 04SharePoint KQLによる検索
- 05ファイルメタデータの読み取りと更新
- 06stdioとHTTPのトランスポート
活用シーン
- 01SharePoint内のドキュメントを要約
- 02提案書を翻訳して保存
- 03SharePointフォルダー内のファイルを検索
- 04AIエージェント経由でSharePointドキュメントを管理
MCP 対応
MCPクライアントにSharePointのフォルダー、ドキュメント、検索、メタデータ操作のツールを提供します。stdioとHTTPのトランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx sharepoint-mcpSHP_ID_APPAzure AD application (client) IDSHP_ID_APP_SECRETシークレットAzure AD client secretSHP_TENANT_IDMicrosoft Entra (Azure AD) tenant IDSHP_SITE_URLSharePoint site URL (e.g. https://tenant.sharepoint.com/sites/MySite)SHP_DOC_LIBRARYSharePoint document library pathローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🗂️ sharepoint-mcp
AI エージェントに Microsoft SharePoint の知識をもたらす MCP サーバー
Microsoft SharePoint 向けの、本番環境対応の Model Context Protocol(MCP)サーバーです。
Claude Desktop、VS Code Copilot、Cursor、Continue、または MCP 対応の AI エージェントを
SharePoint に接続すれば、ファイルの読み取り、フォルダーの管理、組織のナレッジの活用が可能になります。
📑 目次
- sharepoint-mcp を使う理由
- エージェントにできること
- 機能
- クイックスタート
- Docker
- トランスポートモード
- 連携 — Claude Desktop · VS Code Copilot · Cursor
- 14 のツール
- 設定リファレンス
- 制限事項
- トラブルシューティング
- 開発
- ドキュメント
- コントリビューション
- セキュリティ
🧠 sharepoint-mcp を使う理由
多くの AI エージェントが知っているのは、学習データに含まれる情報だけです。
sharepoint-mcp を使えば、エージェントは組織の実際のナレッジに リアルタイムでアクセス できます。
| sharepoint-mcp がない場合 | sharepoint-mcp がある場合 |
|---|---|
| 🤷 エージェントが推測したり、誤った情報を生成したりする | エージェントが実際のドキュメントを読み取る |
| 📋 コンテンツを手作業でコピー&ペーストする | エージェントがファイルを自動で取得する |
| 🔒 ナレッジが SharePoint に閉じ込められている | ナレッジを AI ワークフローで活用できる |
| 🐌 静的で一度きりの回答 | エージェントが推論し、書き換え、保存し直す |
🚀 エージェントにできること
📖 あらゆるドキュメントを理解する
You: "Summarise the Q3 report in the Finance folder"
Agent: → Get_Document_Content("Finance", "Q3_Report.pdf")
→ Reads full extracted text
→ Returns a sharp, accurate summary
✏️ 読み取り → 推論 → 書き込み
You: "Translate the proposal to French and save it"
Agent: → Get_Document_Content → translate → Upload_Document
🗂️ ライブラリをナビゲートする
You: "What files are in the Legal/Contracts folder?"
Agent: → List_SharePoint_Documents("Legal/Contracts")
📊 対応ファイル形式
| 📄 形式 | 🤖 エージェントが取得する内容 |
|---|---|
| すべてのページの全文 | |
Word .docx .doc | ドキュメント全体のコンテンツ |
Excel .xlsx .xls | すべてのシートを構造化テキストとして取得 |
| テキスト、JSON、Markdown、HTML、YAML、Python | そのままの生データ |
| 画像、ZIP、バイナリ | ファイル形式と Base64 |
✨ 特長
| 特長 | 説明 | |
|---|---|---|
| 🔀 | デュアル API 対応 | Office365 REST または Microsoft Graph API を選択できます |
| 📁 | フォルダー管理 | 一覧表示、作成、削除、再帰的なツリー全体の取得ができます |
| 📄 | ドキュメント管理 | アップロード、ダウンロード、更新、削除、検索、コンテンツの読み取りができます |
| 🏷️ | メタデータ管理 | SharePoint リスト項目のフィールドを読み取り、更新できます |
| 🔍 | スマート解析 | PDF/Word/Excel/テキストを自動検出します |
| 🔎 | KQL 検索 | SharePoint 標準の KQL 検索で意味に基づいてファイルを検索できます |
| 📂 | 柔軟なライブラリ範囲 | サブフォルダーに範囲を限定することも、ライブラリのルート全体にアクセスすることもできます |
| 🔁 | 自動リトライ | SharePoint の 429/503 スロットリング時に指数バックオフを適用します |
| 🚀 | デュアルトランスポート | デスクトップには stdio、Docker/リモートには http を使用します |
| 🪵 | 構造化ログ | 本番環境では JSON、開発環境では色付きコンソールを使用します |
| 🐳 | Docker 対応 | コマンド 1 つで起動できます:docker compose up -d |
| 🛡️ | 非 root コンテナー | Docker 内で非特権ユーザーとして実行します |
| 🩺 | ヘルスチェック | SharePoint の実際の状態を確認する /health エンドポイントを提供します |
| 🤖 | CI/CD | Python 3.10・3.11・3.12・3.13 でテスト済み |
⚡ クイックスタート
1️⃣ インストール
pip install sharepoint-mcp
またはソースからインストールします:
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp && pip install -e .
2️⃣ 設定
cp .env.example .env
# Open .env and fill in your Azure AD credentials
SHP_ID_APP=your-azure-app-client-id
SHP_ID_APP_SECRET=your-azure-app-secret
SHP_TENANT_ID=your-tenant-id
SHP_SITE_URL=https://your-tenant.sharepoint.com/sites/your-site
SHP_API_TYPE=office365 # or "graph" / "graphql" for Microsoft Graph API
🔑 Azure AD を初めてお使いですか? ステップごとのガイド →をご覧ください
🔀 API を選択:SharePoint MCP はOffice365 REST API(デフォルト)と Microsoft Graph APIの両方に対応しています。API 設定ガイド →をご覧ください
オプション:サブフォルダーに範囲を限定する
デフォルトでは、サーバーはドキュメントライブラリのルート全体にアクセスします。操作対象を特定のサブフォルダーに制限するには:
# Only operate within this subfolder (omit for full library access)
SHP_DOC_LIBRARY=mcp_server
# Library name (only needed if your org renamed "Shared Documents")
# Graph API auto-detects the default drive — this is only for Office365 REST API
# SHP_LIBRARY_NAME=Shared Documents
3️⃣ 実行
# 🔍 Interactive testing with MCP Inspector
npx @modelcontextprotocol/inspector -- sharepoint-mcp
# ▶️ Run directly
sharepoint-mcp
🐳 Docker
リモート環境やクラウドで使用する場合に、最も手軽なデプロイ方法です。
📋 使用シナリオ
シナリオ A:DockerHub から最新バージョンを取得する(推奨)
最新の安定版を使用した本番環境へのデプロイに適しています:
# Step 1: Clone repository
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
# Step 2: Create .env file with your SharePoint credentials
cp .env.example .env
# Edit .env and fill in:
# SHP_ID_APP=your-app-id
# SHP_ID_APP_SECRET=your-secret
# SHP_TENANT_ID=your-tenant-id
# SHP_SITE_URL=https://yourcompany.sharepoint.com/sites/yoursite
# Step 3: Start container (pulls from DockerHub automatically)
docker compose up -d
# Step 4: Verify it's running
docker compose ps
curl http://localhost:8000/health
# View logs
docker compose logs -f
# Stop container
docker compose down
実行内容: アーキテクチャ(Intel/ARM)を自動検出し、DockerHub から ravikant1918/sharepoint-mcp:latest を取得します。
シナリオ B:特定のバージョンを使用する
安定性の確保やテストのために、特定のバージョンに固定します:
# Step 1: Set version via environment variable
SHAREPOINT_MCP_VERSION=v1.0.1 docker compose up -d
# Or add to .env file
echo "SHAREPOINT_MCP_VERSION=v1.0.1" >> .env
docker compose up -d
実行内容: latest ではなく、ravikant1918/sharepoint-mcp:v1.0.1 を取得します。
シナリオ C:ソースからローカルでビルドする
開発時や、ローカルでコードを変更した場合に使用します:
# Step 1: Clone and setup
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
cp .env.example .env
# Edit .env with your credentials
# Step 2: Build from local Dockerfile and start
docker compose up -d --build
# Step 3: Rebuild after code changes
docker compose down
docker compose up -d --build
実行内容: ローカルの Dockerfile からイメージをビルドし、ravikant1918/sharepoint-mcp:latest としてタグ付けして、コンテナーを起動します。
シナリオ D:カスタムイメージ/フォークを使用する
リポジトリをフォークし、自分の DockerHub に公開した場合:
# Use your custom image
SHAREPOINT_MCP_IMAGE=myusername/sharepoint-mcp \
SHAREPOINT_MCP_VERSION=dev \
docker compose up -d
# Or add to .env
echo "SHAREPOINT_MCP_IMAGE=myusername/sharepoint-mcp" >> .env
echo "SHAREPOINT_MCP_VERSION=dev" >> .env
docker compose up -d
実行内容: 独自のレジストリ/リポジトリから取得します。
🔧 よく使うコマンド
# Start in detached mode
docker compose up -d
# Start with live logs
docker compose up
# View logs
docker compose logs -f
# Stop container
docker compose down
# Restart container
docker compose restart
# Pull latest image
docker compose pull
# Rebuild and restart
docker compose up -d --build
# Remove everything (including volumes)
docker compose down -v
Podman を使用していますか?
dockerをpodmanに置き換えるだけで使用できます。完全に互換性があります。
Docker の環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
TRANSPORT | http | stdio または http |
HTTP_HOST | 0.0.0.0 | バインドアドレス |
HTTP_PORT | 8000 | ポート |
LOG_FORMAT | json | json または console |
🔌 トランスポートモード
| モード | 適した用途 | 設定方法 |
|---|---|---|
stdio | Claude Desktop、Cursor、MCP Inspector | TRANSPORT=stdio (デフォルト) |
http | Docker、リモートエージェント、VS Code Copilot、REST クライアント | TRANSPORT=http |
🔗 インテグレーション
🤖 Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json に追加します:
{
"mcpServers": {
"sharepoint": {
"command": "sharepoint-mcp",
"env": {
"SHP_ID_APP": "your-app-id",
"SHP_ID_APP_SECRET": "your-app-secret",
"SHP_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
"SHP_TENANT_ID": "your-tenant-id",
"SHP_DOC_LIBRARY": "my-subfolder"
}
}
}
}
💡 ライブラリのルート全体にアクセスするには、
SHP_DOC_LIBRARYを省略します。組織で Office365 REST API を使用していて、既定のライブラリ名を変更している場合は、SHP_LIBRARY_NAMEも設定してください。
💻 VS Code Copilot(エージェントモード)
- Docker 経由または
TRANSPORT=http sharepoint-mcpでサーバーを起動します - ワークスペースに
.vscode/mcp.jsonを作成します:
{
"servers": {
"sharepoint": {
"url": "http://localhost:8000/mcp/",
"type": "http"
}
}
}
- Copilot Chat を開き、エージェントモードに切り替えると、14 個の SharePoint ツールを利用できます。
⚠️ 末尾のスラッシュが重要です — URL の末尾は
/mcp/でなければなりません(/mcpではありません)。
⌨️ Cursor / Continue
MCP 設定に追加します(stdio トランスポートを使用):
{
"mcpServers": {
"sharepoint": {
"command": "sharepoint-mcp",
"env": {
"SHP_ID_APP": "your-app-id",
"SHP_ID_APP_SECRET": "your-app-secret",
"SHP_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
"SHP_TENANT_ID": "your-tenant-id"
}
}
}
}
🛠️ 14 個のすべてのツール
📁 フォルダー管理
| ツール | 機能 |
|---|---|
List_SharePoint_Folders | 📋 ディレクトリ内のすべてのサブフォルダーを一覧表示します |
Get_SharePoint_Tree | 🌳 フォルダーとファイルの完全な再帰ツリーを取得します |
Create_Folder | ➕ 新しいフォルダーを作成します |
Delete_Folder | 🗑️ 空のフォルダーを削除します |
📄 ドキュメント管理
| ツール | 機能 |
|---|---|
List_SharePoint_Documents | 📋 メタデータ付きですべてのファイルを一覧表示します |
Search_SharePoint | 🔎 KQL クエリを使用してドキュメントを検索します |
Get_Document_Content | 📖 ファイルの内容を読み取り、解析します(PDF/Word/Excel/テキスト) |
Upload_Document | ⬆️ 文字列または Base64 としてファイルをアップロードします |
Upload_Document_From_Path | 📂 ローカルファイルを直接アップロードします |
Update_Document | ✏️ 既存のファイルの内容を上書きします |
Delete_Document | 🗑️ ファイルを完全に削除します |
Download_Document | ⬇️ ファイルをローカルファイルシステムにダウンロードします |
🏷️ メタデータ管理
| ツール | 機能 |
|---|---|
Get_File_Metadata | 🔍 SharePoint リスト項目のすべてのフィールドを取得します |
Update_File_Metadata | ✏️ メタデータフィールドを更新します |
⚙️ 完全な設定リファレンス
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SHP_ID_APP | ✅ | Azure AD アプリのクライアント ID | |
SHP_ID_APP_SECRET | ✅ | Azure AD クライアントシークレット | |
SHP_TENANT_ID | ✅ | Microsoft テナント ID | |
SHP_SITE_URL | ✅ | SharePoint サイトの URL | |
SHP_API_TYPE | office365 | office365、graph、または graphql | |
SHP_LIBRARY_NAME | Shared Documents | ライブラリ名(Office365 REST のみ。Graph は自動検出) | |
SHP_DOC_LIBRARY | (空 = ライブラリ全体) | サブフォルダーの範囲(例:mcp_server)。空の場合はライブラリ全体 | |
SHP_MAX_DEPTH | 15 | ツリーの最大深度 | |
SHP_MAX_FOLDERS_PER_LEVEL | 100 | 1 回のバッチで取得するフォルダー数 | |
SHP_LEVEL_DELAY | 0.5 | ツリーの各階層間の遅延(秒) | |
TRANSPORT | stdio | stdio または http | |
HTTP_HOST | 0.0.0.0 | HTTP のバインド先ホスト | |
HTTP_PORT | 8000 | HTTP ポート | |
LOG_LEVEL | INFO | DEBUG、INFO、WARNING、ERROR | |
LOG_FORMAT | console | console または json |
⚠️ 制限事項
| 制限事項 | 詳細 |
|---|---|
| 単一サイト | サーバーインスタンスごとに 1 つの SharePoint サイトに接続します(v2.0 で複数サイトに対応予定) |
| 同期クライアント | 同期型の SharePoint REST API 呼び出しを使用します(非同期クライアントは v1.3 で対応予定) |
| 共有なし | 共有リンクはまだ作成できません(v1.1 で対応予定) |
| 大容量ファイル | 非常に大きなファイルでは、コンテンツ抽出中にメモリ制限に達する場合があります |
| レート制限 | SharePoint のスロットリング(429/503)には自動再試行で対応しますが、大量の操作が継続すると遅くなる場合があります |
🔧 トラブルシューティング
認証エラー
問題: Missing or invalid SharePoint credentials
解決方法: 必須の環境変数 4 つがすべて設定されていることを確認します。
echo $SHP_ID_APP $SHP_ID_APP_SECRET $SHP_TENANT_ID $SHP_SITE_URL
接続の問題(HTTP トランスポート)
問題: エージェントが MCP サーバーに接続できない
解決方法:
- サーバーが実行中であることを確認します:
curl http://localhost:8000/mcp/ - URL の末尾が
/mcp/であることを確認します(末尾のスラッシュが必要です) - ポートがファイアウォールによってブロックされていないことを確認します
Docker コンテナが正常でない
問題: podman ps / docker ps に (unhealthy) と表示される
解決方法: コンテナのログでエラーを確認します。
docker logs sharepoint-mcp
デバッグログ
LOG_LEVEL=DEBUG を設定して、詳細な出力を有効にします。
LOG_LEVEL=DEBUG sharepoint-mcp
Docker の場合は、.env ファイルまたは docker-compose.yml に追加します。
LOG_LEVEL=DEBUG
LOG_FORMAT=console
権限エラー
問題: SharePoint から Access denied が返されます
解決策:
- Azure AD アプリに必要な API 権限が付与されていることを確認します
- (組織で必要な場合)管理者の同意が付与されていることを確認します
SHP_SITE_URLが、アプリにアクセス権のあるサイトを指していることを確認します
🧪 開発
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
pip install -e ".[dev]"
make test # run all tests
make inspect # 🔍 launch MCP Inspector
make check # quick import sanity check
make clean # 🧹 remove caches
📚 ドキュメント
| 📄 ドキュメント | 📝 説明 |
|---|---|
| ⚡ はじめに | セットアップの完全ガイド |
| ⚙️ 設定 | すべての環境変数 |
| 🛠️ ツールリファレンス | ツールのパラメーターの詳細 |
| 🏛️ アーキテクチャ | 設計とレイヤー図 |
| 🔑 Azure のセットアップ | Azure AD アプリ登録ガイド |
| 🗺️ ロードマップ | 今後予定されている機能 |
| 📅 変更履歴 | バージョン履歴 |
🤝 コントリビューション
コントリビューションを歓迎します!docs/contributing.md と 行動規範 をお読みください。
- 🍴 リポジトリをフォークします
- 🌿 ブランチを作成します:
git checkout -b feat/my-tool - ✅ テストを追加します:
make test - 📬 プルリクエストを作成します
🔒 セキュリティ
脆弱性を発見しましたか?公開の Issue は作成しないでください。
GitHub Security Advisories から非公開で報告するか、SECURITY.md をご覧ください。
MIT ライセンス © 2026 Ravi Kant
⭐ このプロジェクトが役に立ったら、GitHub でスターを付けてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。