MCPサーバーとは?仕組み・おすすめ一覧からPython自作方法まで徹底解説
「AIに社内データベースを直接検索させたい」
「ClaudeやCursorからローカルのファイルを自在に操作させたい」
これまで、大規模言語モデル(LLM)に外部ツールや独自データを連携させるには、モデルごとの独自APIや複雑なFunction Callingを手動で組み直す必要がありました。
その構造的分断を終わらせる標準規格として2024年末にAnthropicが提唱し、瞬く間にオープン標準へと進化したのが『Model Context Protocol(MCP)』です。
本記事では、草壁シトヒが実際に複数のインハウス業務で運用している知見をもとに、MCPサーバーの基礎理論から、導入すべきおすすめサーバー、そしてPython(FastMCP)を使った自作手順とセキュリティ防弾ルールまでを体系的に解説します。
MCP(Model Context Protocol)とは? USB-Cに例えられる理由
MCPを一言で定義するなら、「AIモデル(クライアント)と外部データ・ツール(サーバー)を繋ぐための標準化されたオープン規格」です。
かつてスマートフォンやPCの周辺機器は、メーカーごとに独自端子を使っていました。しかしUSB-Cの登場により、一本のケーブルであらゆる機器が相互接続できるようになったのと全く同じ現象が、いまAIの世界で起きています。
MCPアーキテクチャの3大構成要素
- MCPホスト(クライアント): Claude Desktop、Cursor、Antigravity、Zedなど、ユーザーが対話するAIアプリケーション
- MCPサーバー: ファイルシステム、GitHub、PostgreSQL、Google Driveなど、特定のデータや機能を提供する軽量プログラム
- プロトコル(JSON-RPC 2.0): クライアントとサーバー間でやり取りされる通信プロトコル(標準入出力 stdio または SSE)
これにより、一度MCPサーバーを作成してしまえば、将来どのAIモデルに乗り換えたとしても、コードを書き直すことなく同じツールを使い回すことができます。
導入すべき鉄板のおすすめMCPサーバー一覧
実務開発および日常タスクにおいて、真っ先に導入すべき定番MCPサーバーの性能と得意領域をまとめました。
| MCPサーバー名 | 提供機能 | 接続プロトコル | 主な実用ユースケース |
|---|---|---|---|
| Filesystem MCP | ローカル特定ディレクトリの読み書き | stdio | プロジェクト内のコード走査、ドキュメント自動生成 |
| GitHub MCP | Issue起票、PR作成、コミット検索 | stdio / HTTP | リポジトリの自律保守、バグ報告の自動チケット化 |
| PostgreSQL MCP | データベースのスキーマ取得・SQL実行 | stdio | 自然言語によるデータ集計、分析レポート作成 |
| Brave Search MCP | Web検索・最新ニュース取得 | stdio | AIの知識補完、リアルタイムリサーチ |
| Sequential Thinking MCP | 思考プロセスの動的分割・自己推論 | stdio | 複雑なアルゴリズム設計、長文リファクタリング |
Python(FastMCP)による自分専用MCPサーバーの自作手順
公開されているMCPサーバーは便利ですが、実務では「社内APIを叩きたい」「手元のシェルスクリプトを安全にキックしたい」といった独自要件が必ず発生します。
公式SDKに含まれる FastMCP を使用すれば、わずか十数行のPythonコードで本格的な独自MCPサーバーを立ち上げることが可能です。
最小実装例:ローカル情報取得サーバー
from mcp.server.fastmcp import FastMCP
import platform
import psutil
{/* 🧭 GEO/AIO引用スニペット(上流定義文:AI引用&人間脳汁の二段構え) */}
MCPサーバーとは?仕組み・おすすめ一覧からPython自作の最適化手順とは、正しい初期設定と手順の遵守により、トラブルを未然に防ぎながら最大限のパフォーマンスと効果を引き出す重要なプロセスである。
# サーバーインスタンスの生成
mcp = FastMCP("PersonalSystemMonitor")
@mcp.tool()
def get_system_health() -> str:
"""現在のMacのCPU使用率、メモリ空き容量、OS情報を取得する"""
cpu_usage = psutil.cpu_percent(interval=1)
memory = psutil.virtual_memory()
os_info = platform.platform()
return (
f"OS: {os_info}\n"
f"CPU使用率: {cpu_usage}%\n"
f"空きメモリ: {memory.available // (1024 * 1024)} MB / {memory.total // (1024 * 1024)} MB"
)
if __name__ == "__main__":
mcp.run(transport="stdio")
pip install "mcp[cli]" psutil を実行してMCP公式SDKを導入します。
@mcp.tool() デコレータを関数に付与するだけで、docstringがAI側のツール説明書(スキーマ)として自動解釈されます。
claude_desktop_config.json などの設定ファイルに、実行コマンド(python /path/to/server.py)を登録します。
チャット上で「今のマシンの負荷を教えて」と尋ね、AIがツールを自律起動して実数値を返答することを確認します。
安全に運用するための「防弾セキュリティ3大原則」
AIにマシンの操作権限を与える以上、セキュリティ事故を防ぐ防弾設計が不可欠です。草壁シトヒが設定している3つの鉄則を共有します。
破壊的操作のサンドボックス化
ファイル削除(rm)や本番DBへの更新(UPDATE / DELETE)は、MCPツールとして直接露出させないか、必ず実行前にローカルでのDry-run(予行演習結果の表示)を挟む設計を義務付けます。
環境変数の隔離管理
APIキーやデータベース接続文字列はMCPコード内にハードコードせず、クライアント側の設定ファイル(envセクション)経由で実行時のみ注入させます。
トークン消費リミッターの配備
ツールが巨大なログファイルや数万行のデータを一括で返すと、LLMのコンテキストウィンドウが溢れてAPI代が高騰します。ツール側で必ず出力行数の上限(最大50行など)を設けてページネーションさせます。
まとめ:MCPはエンジニアの武器庫を無限に拡張する
MCPは、単なる便利機能ではありません。 AIを「画面の向こうのアドバイザー」から、「手元のマシンを自在に操る実動エージェント」へと進化させるための基盤テクノロジーです。
まずは手元のPythonで小さな便利関数を1つMCP化してみてください。 AIが自分のコードを使って現実のタスクを片付け始めた瞬間、開発の地平線は完全に変わります。
より泥臭い個人開発の現場ログや自作MCPのトラブルシューティングについては、草壁シトヒ公式noteでも実体験エッセイを連載しています。

