MCP Server(エムシーピーサーバー)とは?Model Context Protocolサーバーの仕組み・実装・Claude連携を徹底解説

MCP Serverとは|IT用語辞典プラス

MCP Server(エムシーピーサーバー)とは

MCP Server(エムシーピーサーバー)とは、Model Context Protocol(MCP)においてAIモデル(Claude等)に対してツール・リソース・プロンプトを提供する側のサーバー実装を指す。Anthropicが2024年11月に発表したMCPは、AIアシスタントを外部システムと安全に接続するためのオープン標準であり、MCP Serverはその「機能提供側」を担う。

身近なたとえで言えば、MCP Serverは「AIモデル専用のUSB-Cポート」である。MCPプロトコルという共通の差込口を実装しておけば、Claude Desktop・Cursor・VS Code・Claude Codeなど、さまざまなMCPクライアントから同じサーバーを利用できる。データベース・ファイルシステム・GitHub・Slackなど、あらゆるサービスをMCP Serverとしてラップすれば、AIに統一された方法で「触らせる」ことができる。

MCP Serverの読み方

エムシーピーサーバー

モデルコンテキストプロトコルサーバー

MCP Serverの仕組み

MCPは JSON-RPC 2.0 をベースにした双方向プロトコルで、Language Server Protocol(LSP)の設計思想を継承している。MCP ClientとMCP Serverが起動時に「ケイパビリティ・ハンドシェイク」を行い、お互いにサポートする機能を交換する。これにより、クライアントは自分が知らないサーバーでも安全に機能を発見・利用できる。

MCPサーバーが提供する3つのプリミティブ

MCP Serverの3プリミティブ

Tools
AIが呼び出せる関数(read_file、search_db等)
Resources
AIが参照できるデータ(ファイル、APIレスポンス等)
Prompts
再利用可能なプロンプトテンプレート

このうち Tools が最もよく使われる。例えば「GitHubのIssueを取得」「SQLクエリを実行」「Slackにメッセージ送信」などの操作を関数として登録すると、Claudeなどのモデルがそれを呼び出せるようになる。重要なポイントは、サーバー側がスキーマを宣言し、クライアントが動的に機能を発見することだ。

トランスポート層(stdio / HTTP+SSE)

MCPは現在、主に2種類のトランスポートをサポートしている。stdioはローカルプロセスとして起動し標準入出力で通信する方式で、Claude Desktop等で多用される。一方 HTTP+SSE(Server-Sent Events)はリモートサーバー向けで、2025年11月公開の仕様(2025-11-25版)では Streamable HTTP も加わった。実務では、ローカル開発はstdio、本番リモート公開はHTTPと使い分ける。

MCP Serverの使い方・実例

基本的な使い方(Quick Start)

Pythonの公式SDK(mcpパッケージ)を使うと、最小コードでMCP Serverが書ける。

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("weather-server")

@mcp.tool()
def get_weather(city: str) -> str:
    # 指定都市の天気を返す
    return f"{city}は晴れ、気温22℃"

if __name__ == "__main__":
    mcp.run()  # stdioモードで起動

このサーバーをClaude Desktopの設定ファイル(claude_desktop_config.json)に登録するだけで、Claudeが「東京の天気は?」と聞かれた際にこの関数を自動で呼び出す。実務ではここに認証・ロギング・エラーハンドリングを追加する。

よくある実装パターン

パターンA: ローカルファイルアクセス(stdio)

from mcp.server.fastmcp import FastMCP
import pathlib

mcp = FastMCP("local-fs")

@mcp.tool()
def read_file(path: str) -> str:
    p = pathlib.Path(path).expanduser()
    if not p.is_file():
        return f"ファイル {path} は存在しません"
    return p.read_text()

mcp.run()

向いているケース: 個人開発環境のファイル横断・スクリプト実行・ローカルDB問い合わせ

避けるべきケース: 複数ユーザーが共有するサーバー(stdioは1プロセス1セッション)

パターンB: リモートAPIラッパー(HTTP+SSE)

from mcp.server.fastmcp import FastMCP
import os, requests

mcp = FastMCP("github-issues")
TOKEN = os.environ["GITHUB_TOKEN"]

@mcp.tool()
def list_issues(repo: str, state: str = "open") -> list:
    # 指定リポジトリのIssueを一覧取得
    r = requests.get(
        f"https://api.github.com/repos/{repo}/issues",
        headers={"Authorization": f"Bearer {TOKEN}"},
        params={"state": state}
    )
    return r.json()

向いているケース: 社内SaaS・チーム共用ツール・Webサービス連携

避けるべきケース: 認可ロジック未整備の状態で公開(漏洩リスク)

アンチパターン: シェルコマンドを無検証で実行する

# ⛔ 絶対NG
@mcp.tool()
def run_shell(cmd: str) -> str:
    import subprocess
    return subprocess.check_output(cmd, shell=True).decode()

AIが任意のシェルコマンドを実行できる状態は、プロンプトインジェクション経由でホスト全体を乗っ取られる。MCP Serverを書く際は許可リスト方式で操作を限定するのが鉄則。実務では、ファイル削除・ネットワーク送信・OSコマンド実行のような副作用の大きい操作は、別途ユーザー確認を挟むべきだ。

MCP Serverのメリット・デメリット

メリット: ① 一度書いたサーバーがClaude Desktop・Cursor・他のMCPクライアントで共通利用できる。② JSON-RPC+スキーマ駆動なので型安全で、AIがツール仕様を誤解しにくい。③ オープン標準(2025年12月にAgentic AI Foundationへ移管)であり、ベンダーロックインを避けられる。

デメリット: ① プロトコルが新しいため、ライブラリの破壊的変更が時々ある。② 認証・認可・監査ログは仕様の範囲外で、実装者が用意する必要がある。③ stdio版はリモートサーバー化に追加の作業が必要。覚えておきたいポイントは、MCP Server自体は「機能提供レイヤー」であり、セキュリティは別途設計しないといけないという点だ。

MCP ServerとMCP Clientの違い

MCPではサーバーが機能を提供し、クライアントがそれを利用する。Claude DesktopやCursor自体はMCP Clientであり、ユーザーが書いたMCP Serverを起動して使う構造になっている。下記の比較表で違いを整理する。

観点 MCP Server MCP Client REST APIサーバー
役割 AI向けにツール・リソースを提供 AIモデルを動かしツールを呼ぶ 汎用クライアント向けにエンドポイント提供
プロトコル JSON-RPC 2.0(stdio/HTTP) JSON-RPC 2.0でServer呼び出し HTTP(REST/GraphQL等)
利用者 クライアント(=AIアプリ) エンドユーザー 開発者・他システム
スキーマ tools/resources/promptsのJSONスキーマで宣言 サーバーから動的に取得 OpenAPI等で別途記述
代表例 filesystem-mcp、github-mcp、slack-mcp Claude Desktop、Cursor、Claude Code Express、FastAPI、Spring Boot

つまり「MCP Serverは機能側、MCP Clientは利用側、REST APIは汎用Webインタフェース」と整理できる。重要なポイントは、MCP ServerはAIアシスタントから呼ばれることを前提に設計されており、スキーマや説明文がそのままAIへの「使い方ガイド」になる点だ。

MCP Serverに関するよくある誤解

誤解1: 「MCP ServerはWebサーバーの一種である」

なぜそう誤解されるのか: 「Server」という単語からHTTPサーバーを連想しやすいうえ、サンプル実装の多くがPythonの`mcp.run()`という見慣れない呼び出しなので、Flaskのような従来型Webフレームワークと混同されやすい。実際にはMCPはstdioトランスポートが標準で、ローカルでは1対1のプロセスペアとして動く。

正しい理解: MCP Serverは「AIアシスタント向けの機能提供プロセス」であり、ローカル運用のstdio版ではポート公開すら不要。HTTP+SSEを使う場合のみWebサーバーに近い構成になる。

誤解2: 「MCPはAnthropic専用の規格である」

なぜそう誤解されるのか: 命名がClaude Desktopの設定ファイルに登場する文脈で初めて目にする人が多く、Anthropic独自と誤解されがち。背景としてAnthropicが提案しドキュメント整備を主導した経緯がある。

正しい理解: MCPはオープン仕様で、2025年12月にLinux Foundation傘下のAgentic AI Foundationへ移管された。OpenAIやBlockなど他社も参加しており、CursorやVS CodeのGitHub Copilot拡張など複数のクライアントが対応している。

誤解3: 「MCP ServerはRAGの代わりになる」

なぜそう誤解されるのか: どちらも「AIに外部知識を渡す手段」として比較されることが多く、混同されやすい。検索系ブログでも両者を等価に扱う記事が散見される。

正しい理解: RAGはベクトル検索でドキュメントの断片をプロンプトに挿入する手法、MCP Serverは「機能呼び出し」と「リソース取得」を提供するインタフェースである。両者は補完関係で、MCP ServerからRAG検索エンジンを呼び出す構成も普通にある。

MCP Serverの実務での活用シーン

典型的な活用例として、エンジニア向けには「Gitリポジトリ操作をMCP化してClaude Codeから呼ぶ」「社内DBへのSQL実行をラップ」「Jenkins・GitHub ActionsのジョブをMCPツールとして公開」などがある。非エンジニア向けには「Notionページ更新」「Google Driveファイル検索」「カレンダー予約作成」をMCP Serverにすることで、Claude Desktopから自然言語で社内ツールを操作できるようになる。実務では、社内独自システムをMCP化することで「AIに業務を任せる」ハードルが下がる。

MCP Serverに関するよくある質問(FAQ)

Q1. MCP Serverを書くのに使える言語は何ですか?

公式SDKはPython・TypeScript・C#・Java・Kotlin・Swiftが提供されています。コミュニティ実装ではGoやRustもあります。プロトコル自体はJSON-RPC 2.0なので、JSON-RPCを扱える言語ならどれでも実装可能です。

Q2. MCP Serverを公開するのは安全ですか?

stdio方式のローカルMCP Serverはユーザー権限内でしか動かないため安全度は高めですが、HTTP公開する場合は別途認証・認可・レートリミットを実装する必要があります。プロンプトインジェクション経由で意図しない操作を呼ばれるリスクもあるため、副作用のあるツールは確認ステップを設けるのが推奨されます。

Q3. MCP ServerはClaude以外でも使えますか?

使えます。MCPはオープン仕様で、Cursor、VS Code(GitHub Copilot Chat)、Continue、Cline、Zedなど多数のクライアントが対応しています。同じMCP Serverを複数のAIツールから利用できるのが大きな利点です。

Q4. MCP ServerとAPIサーバーは何が違うのですか?

APIサーバーは汎用クライアント向けですが、MCP ServerはAIアシスタント向けに特化しています。スキーマ宣言・自然言語の説明・プロンプトテンプレートなど、AIが理解しやすい構造になっている点が大きな違いです。

まとめ

  • MCP ServerはModel Context Protocolにおける機能提供側で、AIアシスタントにツール・リソース・プロンプトを公開するサーバー実装
  • JSON-RPC 2.0をベースにしたケイパビリティ駆動設計で、stdio/HTTP+SSE/Streamable HTTPの3つのトランスポートを持つ
  • Anthropicが2024年11月に発表し、2025年12月にAgentic AI Foundationへ移管されたオープン仕様
  • Python・TypeScript・C#・Java・Kotlin・Swift公式SDKがあり、Claude Desktop・Cursor・VS Code等から共通利用できる
  • セキュリティは仕様外で、認証・認可・許可リスト・確認ステップは実装者の責任で設計する必要がある

参考文献・出典

📚 参考文献・出典