MCPサーバーを自作すると、Claudeに自分専用のツール(社内API・DB・自作スクリプト)を生やせます。やることはシンプルで、Python(FastMCP)かTypeScriptでサーバーを書き、Claude DesktopかClaude Codeに登録するだけ。この記事では最小のMCPサーバーを作って動かし、リモート常時稼働まで、インフラエンジニア視点の実践Tipsを添えて解説します。
MCPサーバーとは?Claudeがツールを使える仕組み
MCP(Model Context Protocol)は、LLMアプリと外部機能をつなぐ標準規格です。Web APIのLLM版と考えると分かりやすいです。サーバーが公開できる機能は3種類あります。
| 機能 | 役割 | 例 |
|---|---|---|
| Tools | Claudeが呼び出せる関数(実行前に承認あり) | API呼び出し・DB操作・ファイル生成 |
| Resources | クライアントが読めるデータ | 設定情報・APIレスポンスのキャッシュ |
| Prompts | 事前定義のプロンプトテンプレート | 定型レポート生成・コードレビュー指示 |
通信方式(Transport)は2つ。ローカルや Claude Desktop は Stdio、リモート本番は Streamable HTTPです。旧来のHTTP+SSEは2025年3月の仕様改定で非推奨になったので、新規はStreamable HTTPを使います。
最小のMCPサーバーを作る(Python版)
個人開発で一番手早いのはPythonです。公式SDKに同梱されたFastMCPを使うと、型ヒントとdocstringからツール定義が自動生成されます。
# uv add "mcp[cli]" (または pip install "mcp[cli]")
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-tools")
@mcp.tool()
def add(a: int, b: int) -> int:
"""2つの整数を足す"""
return a + b
if __name__ == "__main__":
mcp.run() # 既定はstdio
これだけで add ツールを持つMCPサーバーが完成します。筆者が最初に作ったのもこんな数行のツールでしたが、Claudeが自前の関数を呼んでくれた瞬間は「APIを生やした」感覚で素直に感動しました。動作確認は mcp dev server.py で起動するMCP Inspectorが便利で、Claudeに繋ぐ前にツールの入出力をブラウザで試せます。TypeScript派は公式の @modelcontextprotocol/sdk パッケージで同じことができ、Zodでスキーマを定義します。
迷ったらPythonを選ぶのが無難です。FastMCPの記述量が圧倒的に少なく、データ処理系ライブラリも揃っています。フロントエンドと同じ言語で統一したい人だけTypeScriptにしましょう。
Claude DesktopとClaude Codeに登録する
作ったサーバーは、使うクライアントごとに登録方法が違います(Claude CodeとCopilot・Cursorの使い分けに迷う人はAIコーディングツール3つの比較もどうぞ)。
Claude Desktopは設定ファイル claude_desktop_config.json(Macは ~/Library/Application Support/Claude/、Windowsは %APPDATA%\Claude\)に追記します。
{
"mcpServers": {
"my-tools": {
"command": "uv",
"args": ["run", "python", "server.py"]
}
}
}
Claude Codeは設定ファイルを手で編集せず、claude mcp add コマンドで登録するのが現行の推奨です。
claude mcp add --transport stdio my-tools -- uv run python server.py
チーム開発なら、プロジェクト直下に .mcp.json を置いてリポジトリにコミットすれば、メンバー全員が同じMCP設定を共有できます。登録後は /mcp でツール一覧に表示されるか確認しましょう。普段からClaude Codeのコスト削減設定と合わせて使うと、自作ツールでさらに作業が速くなります。
本番運用:リモートMCPサーバーをVPSで常時稼働する
Stdioはローカル専用なので、チームで共有したり24時間動かしたりするならStreamable HTTPでリモート公開します。インフラ目線で効く構成はシンプルです。
- MCPサーバーをDockerコンテナ化し、VPS上で常時起動する
- APIキーやトークンは環境変数かSecret Managerで渡す(コードに直書きしない)
- GitHub ActionsでテストとデプロイをCI/CD化する
常時稼働の土台には、月数百円〜の安価なVPSが現実的です。Discordボットを24時間動かすのと同じ要領で、VPSでの常駐運用に慣れておくと応用が効きます。これから契約するなら国内で扱いやすいVPSを選ぶと、SSHやDockerの情報も豊富で詰まりにくいです。
MCPサーバーの常駐先にConoHa VPSを見る(最小プランから)
![]()
よくあるトラブルと解決策
再起動してもツールが表示されない
claude mcp list で登録状態とエラーを確認します。ツール呼び出しでタイムアウトする
StdioとHTTP、どちらで作るべき?
まとめ:まずStdioで1つ作ってみる
MCPサーバーは、FastMCPで関数に @mcp.tool() を付け、Claude Desktopか claude mcp add で登録するだけで動き出します。最初は足し算のような小さなツールで一連の流れを掴み、慣れたら社内Wikiや自作APIをClaudeに繋いでいきましょう。
体系立てて一気に習得したいなら、PythonとTypeScript両方のMCPサーバー構築をハンズオンで追える講座を使うと近道です。

コメント