---
title: MCP サーバー
description: >-
  Model Context Protocol サーバーをホストして、コーディングエージェントがドキュメントを直接検索・読み取りできるようにします — ツール、リソース、ディスカバリードキュメント、コンテンツタイプおよびファセットフィルター、そしてそれに必要なサーバー出力について。
---

[Model Context Protocol](https://modelcontextprotocol.io) サーバーをホストすると、コーディングエージェント（Claude Code、Cursor、VS Code、claude.ai コネクター）がスクレイピングなしでドキュメントを直接検索・読み取りできるようになります。これはオプトイン方式です。

```ts blume.config.ts lineNumbers
ai: {
  mcp: {
    enabled: true,
    route: "/mcp", // where the server is mounted
  },
}
```

| オプション | デフォルト | 説明 |
| --- | --- | --- |
| `enabled` | `false` | MCP サーバーを生成してホストします。 |
| `route` | `/mcp` | Streamable-HTTP エンドポイントをマウントするパスです。 |
| `name` | title | クライアントに表示されるサーバー名（デフォルトは title）です。 |
| `instructions` | — | 接続するエージェントに渡される任意のシステムヒントです。 |

## ツールとリソース [#tools-and-resources]

サーバーは読み取り専用のツール（`search_docs`、`get_page`、`list_pages`、`get_navigation`）と、すべてのページを MCP リソースとして公開します（`resources/list` は各ページを配信 URL 上で `text/markdown` タイプとして列挙し、`resources/read` はそのページの [エージェント向け Markdown](/docs/discoverability/markdown)（`get_page` と同じ出力）を返します）。そのため、URI でコンテキストを添付するクライアントは、ツールを呼び出さずにドキュメントを閲覧できます。また、ディスカバリードキュメントを `/.well-known/mcp.json` と `/.well-known/mcp/server-card.json` で公開します。サーバーカードは [SEP-2127](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127) Server Card 拡張スキーマ（逆 DNS 形式の `name`、`remotes` トランスポートエンドポイント）に準拠しており、提案の以前のリビジョンに対して構築されたスキャナー向けに initialize 形式の互換フィールド（`serverInfo`、`capabilities`、`transports`）も備えています。各ページの **Connect to MCP** メニューでは、Claude Code、Cursor、VS Code、Codex 向けのコピー＆実行式インストールを提供しています（[`deployment.site`](/docs/deployment) が設定されている場合に表示されます）。

`search_docs` は独自の全文検索インデックスを実行するため、[search](/docs/configuration/search) プロバイダーに関係なく動作します — 検索が `none` に設定されている場合でも同様です。MCP サーバーはページ内検索とは別の機能です。

MCP に対応していないフレームワーク向けに、同じツールが [JSON API](/docs/discoverability/json-api) としてプレーンな HTTP 経由でも利用できます。

## コンテンツタイプとファセットによるスコープ設定 [#scoping-by-content-type-and-facets]

`search_docs` と `list_pages` はどちらも任意の `contentTypes` フィルターを受け取り、指定したフロントマターの [`type`](/docs/reference/frontmatter)（`["rfc"]`、`["blog", "changelog"]` など）のページに結果を絞り込みます。そのため、ドキュメントと RFC、ランブック、ポリシーが混在するサイトを扱うエージェントは、必要な種類のページに取得範囲を限定できます。すべての結果はそのコンテンツタイプを示し、`list_pages` の出力では使用中のタイプが表示されます。

どちらのツールも、サイトがコンテンツタイプごとに宣言するファセット（[`content.types.<type>.facets`](/docs/configuration#frontmatter)）— 値がフィルター可能なメタデータになるカスタムフロントマターキー — と照合する `filters` オブジェクトも受け取ります。

```json
{
  "query": "OpenAPI request schemas",
  "contentTypes": ["rfc"],
  "filters": { "domain": "architecture", "status": "enforced" }
}
```

`filters` のすべてのエントリが一致する必要があります（結果にはそのファセット値が含まれ、`list_pages` は各ページの値を表示します）。そのため、ナレッジベースは独自のサーバーを一切用意せずに、段階的開示型のエージェントワークフロー（適用済みの標準を列挙し、その中だけを検索する）を実現できます。

## サーバー出力が必要です [#server-output-required]

MCP サーバーはライブエンドポイント（`/mcp`）であるため、静的ビルドでは実行できません。サーバー出力に切り替えて、アダプターを選択してください。

```ts blume.config.ts lineNumbers
deployment: {
  output: "server",
  adapter: "node", // or "vercel" | "netlify" | "cloudflare"
  site: "https://docs.example.com",
}
```

`ai.mcp.enabled` を有効にした静的ビルドは、`deployment.output` を `server` に設定するよう促すメッセージとともに即座に失敗します。アダプターについては [デプロイ](/docs/deployment) を参照してください。デプロイ後は、次のコマンドで Claude Code から接続できます。

```bash
claude mcp add --transport http my-docs https://docs.example.com/mcp
```
