AI時代の開発を語るだけでなく、実際に作る。AI駆動開発の実践・つまずき・判断を、一次情報で記録するメディア。
ホーム › エージェント・MCP › MCPサーバーの作り方を4手順で解説|接続・本番運用まで完全ガイド
エージェント・MCP

MCPサーバーの作り方を4手順で解説|接続・本番運用まで完全ガイド

わくてか / 更新:2026-06-20
MCPサーバーの作り方を4手順で解説|接続・本番運用まで完全ガイド
「MCPサーバーって難しそう」と身構えている人ほど、最初の1台は1時間で動きます。結論から言うと、雛形生成から数えて4つの手順で、Claude Desktopから呼び出せる自作サーバーは作れます。この記事では私が実際に手を動かした流れを、つまずきポイント込みで全部出します。
  • MCPサーバーはツール・リソース・プロンプトの3要素で構成され、AIに「できること」を増やす仕組み。
  • 最初の1台は無料で作れる。必要なのはNode.jsかPython、もしくは.NET環境だけ。
  • 作成手順は「インスタンス生成→ツール定義→リソース公開→実行確認」の4ステップ。
  • 標準入出力型サーバーでは標準出力にログを書くと通信が壊れるため、ログは標準エラー出力へ。
  • 本番運用ではDocker化・APIキー管理・ロギング設計が事故防止の要になる。

MCPサーバーとは何か:仕組みと作る前の基礎知識

【9分で分かる】MCPサーバーとは?PythonでのMCPサーバーの作り方とClaudeとの連携方法を解説!
【9分で分かる】MCPサーバーとは?PythonでのMCPサーバーの作り方とClaudeとの連携方法を解説!

MCP(Model Context Protocol)とは、AIモデルに外部のツールやデータを安全につなぐための共通規格です。

AnthropicがオープンソースとしてMCPを公開したのが2024年11月。私が触り始めたのもこの頃で、正直、最初は「また新しいプロトコルか」と思いました。でも触ると分かる。これは関数呼び出しの規格を標準化した、地味だけど効くやつです。

MCPの3つの主要概念(ツール・リソース・プロンプト)

MCPサーバーが提供できるのは、ツール・リソース・プロンプトの3種類です。

MCPの3要素の役割
要素役割主導権
ツール(Tools)AIが実行する処理・機能AIモデル天気を取得する、計算するリソース(Resources)AIが読み込むデータアプリ側ファイルの中身、DBのレコード
プロンプト(Prompts)定型の指示テンプレートユーザー「このコードをレビューして」

最初に作るなら、迷わずツールから入るのがいい。一番分かりやすく、効果を実感しやすいからです。

なぜREST APIではなくMCPを使うのか

REST APIとの最大の違いは、MCPがAIモデルにとって「自己説明的」である点です。

REST APIは人間が仕様書を読んで叩くもの。一方MCPは、サーバーが「自分はこういうツールを持っている」とAIに自己申告します。AIはその情報を見て、自分でどのツールを使うか判断する。仕様書を渡さなくても勝手に使ってくれる、ここが決定的に違います。

だからAIエージェントに新機能を足すなら、MCPで包むのが圧倒的に楽です。

通信方式(標準入出力とHTTP/SSE)とJSON-RPC 2.0

MCPの通信は、データ形式にJSON-RPC 2.0を使い、トランスポートは大きく2種類に分かれます。

MCPの主なトランスポート
方式用途特徴
標準入出力(stdio)ローカルで動かす設定が簡単。Claude Desktopが直接起動するHTTP/SSEリモートで動かす複数クライアントから接続可能。サーバーとして常駐

最初のうちはstdioで十分。リモート公開したくなったらHTTP/SSEへ、という順番でいい。

標準入出力サーバーで標準出力を使ってはいけない理由

標準入出力型のMCPサーバーでは、標準出力(println、console.log、printなど)にログを書いてはいけません。

stdio型では標準出力がそのままJSON-RPCの通信路です。ここにログを混ぜると通信が壊れ、クライアントが「接続できません」と言い出します。ログは必ず標準エラー出力(stderr)へ。

これ、初心者が9割ハマります。私も最初、デバッグのつもりでconsole.logを仕込んで接続不能になり、30分溶かしました。

作り始める前の準備:所要時間・難易度・必要な道具

最初のMCPサーバーは、環境が整っていれば30分〜1時間で動かせます。

作り始める前の準備:所要時間・難易度・必要な道具
作成の所要時間と難易度の目安
項目目安
難易度★★☆☆☆(プログラミング初級者向け)所要時間(初回)30分〜1時間費用0円(ローカル実行・無料SDKのみ)必要なものNode.js または Python、もしくは.NET SDK

前提条件と開発環境の確認

まず使う言語のランタイムが入っているかを確認します。

TypeScriptならNode.js 18以上、Pythonなら3.10以上、C#なら.NET 8以上が目安です。ターミナルで「node --version」「python --version」「dotnet --version」を叩いて、バージョンが返ってくればOK。

ここまでできていれば、開発環境の準備は完了です。

空のプロジェクト作成とパッケージ導入

次に空のプロジェクトを作り、MCP用のSDKを入れます。

C#なら「dotnet new console」で空のコンソールプロジェクトを作成し、「dotnet add package ModelContextProtocol」のようにMCPのSDKパッケージを追加します。TypeScriptなら「npm init -y」のあと「npm install @modelcontextprotocol/sdk」です。

パッケージがエラーなく入れば、ここまで正しく進んでいます。

クイックスタート(雛形の生成)

ゼロから書かず、公式の雛形を使うのが一番速い道です。

TypeScriptなら「npx @modelcontextprotocol/create-server」で対話的にプロジェクトの骨組みが生成されます。中にサンプルのツール定義が入っているので、これを書き換えるのが実質の近道です。

手順で作る:シンプルな自作MCPサーバーの構築

ここでは「2つの数を足し算するツール」を持つ最小のサーバーを、4手順で完成させます。

手順で作る:シンプルな自作MCPサーバーの構築

言語はTypeScriptで進めます。計算ツールは外部APIがいらず、動作確認が一目で分かるからです。

手順1:サーバーインスタンスを生成する

最初にサーバー本体のインスタンスを作ります。

SDKのMcpServerクラスに、サーバー名とバージョンを渡して生成します。「new McpServer({ name: "calc-server", version: "1.0.0" })」のような1行です。これが全機能を載せる土台になります。

エディタでエラーが出なければ、土台は完成です。

手順2:ツール(機能)を定義する

作ったインスタンスに、足し算ツールを1つ登録します。

ツールには「名前」「説明文」「入力スキーマ」「実行する処理」を渡します。説明文はAIがツールを選ぶ判断材料になるので、「2つの数値を足し算して返す」のように具体的に書く。ここを雑にすると、AIがツールを呼んでくれません。

入力にaとbという数値を受け取り、a+bの結果を返す関数を中身に書けば、手順2は完了です。

手順3:リソース(データ)を公開する

必要なら、AIに読ませたいデータをリソースとして公開します。

たとえば「計算の使い方ガイド」というテキストをリソースに登録すると、AIがそれを参照できます。ツールだけのサーバーならこの手順は省いてもかまいません。最初は飛ばしてOKです。

私は最初の1台ではリソースを入れませんでした。まずツールだけ動かして、感覚をつかむのを勧めます。

手順4:サーバーを実行して動作を確認する

最後にトランスポートをstdioに接続し、サーバーを起動します。

「server.connect(new StdioServerTransport())」で標準入出力につなぎ、ビルドして実行します。エラーなく起動し、プロセスが待ち受け状態になれば成功です。

ここまでで「足し算ツールを1つ持つMCPサーバー」が完成しました。あとはこれをAIクライアントにつなぐだけです。

テストとClaude Desktopとの接続

【入門編】MCPサーバーの作り方解説|fastmcp + Docker + Claude で環境構築
【入門編】MCPサーバーの作り方解説|fastmcp + Docker + Claude で環境構築

完成したサーバーは、MCPインスペクターで単体テストし、Claude Desktopの設定ファイルに登録して接続します。

MCPインスペクターでデバッグする

クライアントにつなぐ前に、MCPインスペクターで単体動作を確認するのが鉄則です。

「npx @modelcontextprotocol/inspector node build/index.js」のように起動すると、ブラウザでツール一覧が表示され、手動でツールを叩けます。足し算ツールに2と3を入れて5が返れば、サーバーは正常。ここで通っていれば、接続トラブルはほぼ設定ファイル側の問題に絞れます。

設定ファイルの記述と保存場所(OS別)

Claude DesktopにはJSON形式の設定ファイルでサーバーを登録します。

Claude Desktop 設定ファイルの保存場所
OSパス
macOS~/Library/Application Support/Claude/claude_desktop_config.jsonWindows%APPDATA%\Claude\claude_desktop_config.json

ファイルが無ければ、同じ名前で新規作成します。中身は「mcpServers」の下に、起動コマンドと引数を書くだけです。パスは必ず絶対パスで書く。相対パスにすると、まず動きません。

設定ファイルを編集したら、Claude Desktopを完全に終了して再起動します。再起動しないと設定は読み込まれません。

Claude Desktopから自作サーバーを呼び出す

再起動後、入力欄付近にツールのアイコンが出れば接続成功です。

チャットで「3と4を足して」と頼むと、Claudeが足し算ツールを使うか確認を出し、実行して7と返します。AIが自分でツールを選んで叩く、あの瞬間が一番気持ちいい。ここまで来たら、自作MCPサーバーの完成です。

接続できないときのトラブルシューティング

接続できないときは、原因の8割が「設定ファイル」か「標準出力へのログ混入」です。

よくある接続不能の原因と対処
症状原因対処
ツールが表示されない設定ファイルのパス間違い絶対パスに直して再起動起動直後に切断される標準出力にログを書いているログをstderrに変更JSONエラーが出る設定ファイルの記法ミスカンマやカッコをチェック

インスペクターで動いてClaude Desktopで動かないなら、犯人は設定ファイルです。サーバーのコードは疑わなくていい。

Python・TypeScript版の作り方と他クライアント対応

MCPサーバーはPython・TypeScript・C#などで作れ、Claude Desktop以外にCursorやClineからも使えます。

Python・TypeScript版の作り方と他クライアント対応

言語ごとの実装の違いと選び方

考え方はどの言語も同じで、違うのは書き方の作法だけです。

主要言語のMCP実装の比較
言語SDK向いている人
Pythonmcp(公式SDK)データ処理・AI連携を多用する人TypeScript@modelcontextprotocol/sdkWeb開発者・Node環境の人C#ModelContextProtocol業務システム・.NET資産がある人

正直、迷うなら好きな言語でいい。私はWeb寄りなのでTypeScriptを使いますが、Pythonのデコレータでツールを定義する書き方も直感的で好きです。

Cursor・Cline・VS Code拡張での利用

作ったサーバーは、CursorやClineなど他のMCP対応クライアントでもそのまま使えます。

Cursorなら設定画面のMCP項目に、Claude Desktopと同じ形式でサーバーを登録します。設定ファイルの場所と書式が違うだけで、サーバー本体は1行も変えなくていい。これがプロトコルを標準化した恩恵です。

リモートMCPサーバー(HTTP/SSE)の構築手順

チームで共有したり常時稼働させたいなら、stdioではなくHTTP/SSEトランスポートに切り替えます。

やることは、トランスポートをStdioからHTTP/SSE用のものに差し替え、Webサーバーとしてポートを開くだけです。ツール定義はそのまま流用できます。ただしネット越しに公開する瞬間、認証が必須になる。ここから先は次章の本番設計の話です。

本番運用のための設計:デプロイ・認証・監視

本番運用では、Docker化での永続稼働・APIキーやトークンによる認証・ロギングの3点が事故を防ぐ柱になります。

本番運用のための設計:デプロイ・認証・監視

ここは競合記事が薄い領域なので、私の実運用の判断を込めて書きます。

クラウドやDockerでの永続稼働とデプロイ

リモートMCPサーバーは、Dockerでコンテナ化してクラウドに置くのが定番です。

Dockerfileでランタイムとコードを固め、Cloud RunやFly.io、ECSなどに載せます。プロセスが落ちても自動再起動する構成にしておくこと。MCPサーバーは常駐前提なので、落ちたまま気づかないのが一番こわい。ヘルスチェックは必ず入れます。

認証・認可(APIキー管理・トークン処理)の実装

リモート公開するなら、認証なしで出すのは絶対にやめてください。

この記事について質問できますAIが記事をもとに答えます
こんにちは。この記事について、下の候補から選ぶか、自由に質問できます。
わくてか

わくてか

株式会社CIVIQ 代表 ・ AI駆動開発の実践者・Udemy講師
運営者本人(AI駆動開発の実践者)

株式会社CIVIQ代表。AI時代の開発組織論を講演で語りつつ、自分でもAIをフル活用して開発する実践者。このメディアを動かすCMS(ほぼ一人で100規模のメディアを運用)もAI駆動開発で構築した。抽象論で終わらせず、実装・つまずき・判断を一次情報で書くことにこだわる。Udemyで『AI駆動開発』講座を運営。

メルマガ登録

わくてか
わくてか
株式会社CIVIQ代表。AI時代の開発組織論を講演で語りつつ、自分でもAIをフル活用して開発する実践者。このメディアを動かすCMS(ほぼ一人で100規模のメディアを運用)もAI駆動

記事には書ききれない現場のリアルや最新の動きを、わたしから直接メルマガでお届けします。よかったら登録してください。

登録は無料・いつでも解除できます。