mcpField
M
ms-sharepoint-mcp

ms-sharepoint-mcp

ローカル
github.com/0xka13bファイル・ストレージ020 週間前に更新

ms-sharepoint-mcp について

ms-sharepoint-mcpは、Microsoft Graph v1.0を通じてSharePointの操作を提供するMicrosoft 365向けMCPサーバーです。stdioとStreamable HTTPに対応し、Microsoftのサインインまたはリクエストごとのトークンで認証します。

主な機能

  1. 01SharePoint用ツールを23個提供
  2. 02Microsoft Graph v1.0をラップ
  3. 03stdioとStreamable HTTPに対応
  4. 04サインイントークンをキャッシュして更新
  5. 05読み取り専用と変更操作を注釈

活用シーン

  1. 01MCPクライアントからSharePointにアクセス
  2. 02HTTP経由でリモートMCPサーバーを稼働
  3. 03キャッシュ済みサインインでGraphを利用
  4. 04読み取り専用操作と変更操作を区別

MCP 対応

stdioまたはStreamable HTTPで、SharePointツールをMCPクライアントに公開します。HTTPリクエストはBearerトークンで認証します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"0xka13b-ms-sharepoint": {
"command": "npx",
"args": [
"-y",
"ms-sharepoint-mcp"
],
"env": {
"MICROSOFT_CLIENT_ID": "<MICROSOFT_CLIENT_ID>"
}
}
}
}
起動コマンドnpx -y ms-sharepoint-mcp
設定が必要な環境変数
MICROSOFT_CLIENT_IDEntra ID application (client) ID for the public client app used to sign in. Run `npx -y ms-sharepoint-mcp login` once to cache a refresh token.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmms-sharepoint-mcp1.0.1

ツール

23

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
topintegerいいえ返すサイトの最大数(既定値は 50)。
skipintegerいいえページネーションでスキップする結果の数(デフォルトは 0)。
searchstringいいえサイトを表示名で絞り込むキーワード。省略するか '*' を使用すると、アクセス可能なすべてのサイトが一覧表示されます。

詳細

Outlook  カレンダー  OneDrive  SharePoint  連絡先

Microsoft MCP

Microsoft 365 向けの Model Context Protocol サーバーです。
カレンダー · 連絡先 · OneDrive · Outlook · SharePoint — 公式の @modelcontextprotocol/sdk を使用し、stdio または Streamable HTTP で動作します。

CI coverage license: MIT node MCP SDK

各サーバーは実際の MCP プロトコルを使用し、次のいずれかのトランスポートで動作します。

  • stdio — サーバーをサブプロセスとして起動するローカル MCP クライアント向けです(Claude Desktop、IDE、MCP Inspector)。
  • Streamable HTTP — リモート/ホスト環境向けです。Microsoft Graph アクセストークンは、リクエストごとに Authorization: Bearer を介して渡します。

サーバー

サーバーnpm パッケージ(およびバイナリ)ツール
README の画像カレンダーms-calendar-mcp9
README の画像連絡先ms-contacts-mcp7
README の画像OneDrivems-onedrive-mcp9
README の画像Outlookmicrosoft-outlook-mcp14
README の画像SharePointms-sharepoint-mcp23

すべてのツールは、Microsoft Graph v1.0 API を薄くラップしたものです。

構成

microsoft-mcp/
├── apps/                       # one MCP server per Microsoft 365 product
│   ├── calendar/
│   ├── contacts/
│   ├── onedrive/
│   ├── outlook/
│   └── sharepoint/
│       └── src/
│           ├── tools.ts        # declarative tool definitions (schema + handler)
│           └── index.ts        # run({ name, version }, tools)
└── packages/                   # shared building blocks
    ├── core/                   # MCP server bootstrap + dual transport (stdio / HTTP)
    ├── graph/                  # Microsoft Graph HTTP client
    ├── validation/             # id / path / query sanitizers
    └── logger/                 # structured JSON logging (stderr-only — stdio-safe)

サーバーは、run() に渡すツールのリストだけで構成されています。

// apps/calendar/src/index.ts
import { run } from "@microsoft-mcp/core";
import { tools } from "./tools.js";

void run({ name: "microsoft-calendar", version: "1.0.0", title: "Microsoft Calendar" }, tools);
// a single tool
defineTool({
  name: "get_event",
  description: "Get a single calendar event by ID.",
  inputSchema: { event_id: z.string().describe("Event ID") },
  confirmationPolicy: "never",
  handler: ({ graph }, { event_id }) => {
    validateId(event_id, "event_id");
    return graph.request("GET", `/me/events/${event_id}`);
  },
});

confirmationPolicy(変更/破壊的なツールでは "always"、読み取り専用では "never")は、MCP の readOnlyHint/destructiveHint アノテーションとしてクライアントに公開されます。

必要条件

  • Node.js >= 20
  • pnpm 10(corepack enable)

セットアップ

pnpm install
pnpm build        # build all servers (turbo) -> apps/*/dist/index.js
pnpm check-types  # typecheck everything

テストと CI

pnpm test            # run the vitest suite once
pnpm test:watch      # watch mode
pnpm test:coverage   # run with a v8 coverage report (-> coverage/)

テストはコードと同じ場所に *.test.ts として置かれ、TypeScript ソースを直接実行します(ビルド手順は不要です)。共有の packages/* は、稼働中のサーバーに対する Streamable HTTP の完全なラウンドトリップを含め、ユニットテストと統合テストでカバーされており、CI ではカバレッジの最低基準を適用しています。各 apps/* サーバーには、不変条件を検証するテストスイートが含まれ、ツールの構成(重複のない snake_case 名、有効なスキーマと確認ポリシー)を固定しています。

master へのプッシュとプルリクエストのたびに、CI が実行されます。内容は、型チェック → ビルド → カバレッジ付きテストです。カバレッジバッジは実行結果から再生成されます。

認証

Microsoft アカウントで一度だけサインインすれば、以降サーバーがリフレッシュトークンをキャッシュし、アクセストークンをバックグラウンドで取得します。トークンを貼り付ける必要も、1 時間で期限切れになることもありません。サインインには、独自の Microsoft Entra ID アプリ登録(無料)を使用するため、サーバーはユーザーに代わって動作します。

1. Entra ID アプリを登録する(初回のみ)
  1. Azure ポータル → Microsoft Entra ID → アプリの登録 → 新規登録。任意の名前を付け、用途に合ったサポートされているアカウントの種類(シングルテナント、マルチテナント、個人用アカウントなど)を選択します。

  2. 認証 → プラットフォームの追加 → モバイル アプリケーションとデスクトップ アプリケーション → リダイレクト URI http://localhost を追加し、パブリック クライアント フローを許可するをはいに設定します(--device-code によるフォールバックを有効にします)。

  3. API のアクセス許可 → アクセス許可の追加 → Microsoft Graph → 委任されたアクセス許可 → 使用するサーバーのスコープを追加します(テナントで必要な場合は、管理者の同意を与えます)。

    サーバー委任されたスコープ
    CalendarCalendars.ReadWrite
    ContactsContacts.ReadWrite
    OneDriveFiles.ReadWrite.All
    OutlookMail.ReadWrite、Mail.Send
    SharePointSites.ReadWrite.All

    すべてのサーバーで User.Read も使用します(更新用の offline_access は自動的に要求されます)。

  4. アプリケーション(クライアント)ID をコピーします。

2. サインインする(マシンごとに初回のみ)

MICROSOFT_CLIENT_ID を設定し、サーバーの login コマンドを実行します。ブラウザーが開くので、同意すると、トークンが ~/.config/microsoft-mcp/ にキャッシュされます。

export MICROSOFT_CLIENT_ID=<your-client-id>

npx -y ms-calendar-mcp login           # opens the browser
npx -y ms-calendar-mcp login --device-code   # headless: shows a code to enter

以降、サーバーがトークンを自動的に更新します。既定以外のテナントを使用するには、MICROSOFT_TENANT_ID を設定します(既定値は common)。

詳細設定:独自のトークンを指定する

組み込みのフローを使わず、事前に取得した Graph トークンを直接指定できます。

  • stdio: MICROSOFT_ACCESS_TOKEN を設定します(キャッシュされたサインインより優先されます)。簡単なテストに便利です。az account get-access-token --resource https://graph.microsoft.com --query accessToken -o tsv を使ってトークンを取得できます。
  • HTTP: 各 POST /mcp リクエストに Authorization: Bearer <token> を指定します。各リクエストは個別のトークンを使用するステートレスな処理のため、呼び出し元の間で認証情報が共有されることはありません。これは、独自の認証処理を行うホスト型/リモート環境向けの方式です。

実行方法

stdio(例:Claude Desktop)

各サーバーは npm で公開されており、npx で実行できます。リポジトリのクローンやビルドは不要です。先に一度サインインしてから(npx -y ms-calendar-mcp login。[認証](#authentication)を参照)、次を実行します。

// claude_desktop_config.json
{
  "mcpServers": {
    "microsoft-calendar": {
      "command": "npx",
      "args": ["-y", "ms-calendar-mcp"],
      "env": { "MICROSOFT_CLIENT_ID": "<your-client-id>" }
    }
  }
}

npm の代わりにローカルのビルドを指定することもできます。

{
  "command": "node",
  "args": ["/abs/path/microsoft-mcp/apps/calendar/dist/index.js"],
  "env": { "MICROSOFT_CLIENT_ID": "<your-client-id>" }
}

開発中は、ビルドを省略して TypeScript を直接実行できます。

MICROSOFT_ACCESS_TOKEN=<token> pnpm --filter ms-calendar-mcp dev
Streamable HTTP
# build first, then:
PORT=3000 node apps/calendar/dist/index.js --http
# or, in dev:
pnpm --filter ms-calendar-mcp dev -- --http --port 3000

サーバーは POST /mcp(MCP エンドポイント)と GET /healthz を公開します。任意の Streamable HTTP 対応 MCP クライアントから、Authorization: Bearer ヘッダーを指定して http://localhost:3000/mcp に接続します。

トランスポートの選択

次の優先順位で決定されます:--stdio / --http フラグ → MCP_TRANSPORT=stdio|http → 既定値の stdio。 HTTP ポート:--port <n> → PORT → 3000。

環境変数

変数使用対象説明
MICROSOFT_CLIENT_IDstdioサインイン用の Entra ID アプリ(クライアント)ID。login フローに必須です。
MICROSOFT_TENANT_IDstdioサインインするテナント:common(既定値)、organizations、consumers、またはテナント ID。
MICROSOFT_ACCESS_TOKENstdio事前に取得した Graph トークン。設定すると、キャッシュされたサインインより優先されます。
MICROSOFT_MCP_CACHE_DIRstdioトークンキャッシュのディレクトリを上書きします(既定値 ~/.config/microsoft-mcp)。
MCP_TRANSPORT両方stdio(既定値)または http。
PORThttpリッスンするポート(既定値 3000)。
MCP_HTTP_BODY_LIMIThttpリクエスト本文の最大サイズ(既定値 50mb)。Base64 アップロードに使用します。
MCP_DEBUG両方空でない値を設定すると、デバッグログを有効にします(stderr に出力)。

コメント

MCP は初めてですか?

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

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