Model Context Protocol(MCP)を使うと、AI アシスタントが、自分で運用するサーバーのツールを呼び出したりデータを読み取ったりできます。多くの MCP サーバーはローカルで動作しますが、複数の人、ツール、エージェントが同じ機能を共有する必要がある場合は、VPS 上のリモートサーバーが役立ちます。このガイドでは、セットアップの選択肢と安全な基本構成を説明します。
ローカルかリモートか
- ローカル(stdio)。クライアントが、自分のマシン上の子プロセスとしてサーバーを起動します。シンプルでプライベートですが、そのマシンでしか動作しません。
- リモート(HTTP)。サーバーは VPS 上で動作し、クライアントは HTTPS で接続します。これがホストする対象です。共有ツール、長時間実行されるジョブ、固定 IP が必要なツールに向いています。
お使いのクライアントが対応するトランスポートについては、最新の MCP 仕様を確認してください。リモートサーバーでは、Streamable HTTP が一般的な選択です。一般的なワークロード向けのサイズは、MCP サーバーホスティングのページをご覧ください。
ステップ 1:サーバーを準備する
新しい Ubuntu LTS サーバーを使い、新しい VPS を保護する方法の手順に従います。サービス用のユーザーを作成します。
sudo adduser --disabled-password --gecos "" mcp
ステップ 2:サーバーを実行する
公式 SDK か既存のサーバーを使います。この Python の例では、MCP SDK の FastMCP ヘルパーを使っています。
sudo -iu mcp
python3 -m venv ~/venv && . ~/venv/bin/activate
pip install "mcp[cli]"
# server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo", host="127.0.0.1", port=8000)
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
if __name__ == "__main__":
mcp.run(transport="streamable-http")
ステップ 3: サービスとして実行する
[Unit]
Description=MCP server
After=network-online.target
[Service]
User=mcp
WorkingDirectory=/home/mcp
ExecStart=/home/mcp/venv/bin/python server.py
Restart=always
[Install]
WantedBy=multi-user.target
/etc/systemd/system/mcp.service として保存し、sudo systemctl enable --now mcp を実行します。
ステップ 4: HTTPS と認証
MCP サーバーはコードを実行しデータを読み取れるため、絶対に公開したままにしないでください。TLS 付きのリバースプロキシの背後に置き、トークンを必須にします。
mcp.example.com {
@noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
respond @noauth 401
reverse_proxy 127.0.0.1:8000
}
本番環境では、1つの共有トークンではなく、MCP 認可仕様に記載されている OAuth を使用してください。
安全チェックリスト
- ツールには、必要最小限のアクセスだけを与えてください。それが目的でない限り、ツールにシェルアクセスを与えないでください。
- シークレットは、
chmod 600を設定した環境ファイルに保管してください。 - 何が起きたか確認できるよう、ツールの呼び出しをログに記録してください。
- ポートは 127.0.0.1 にバインドしたままにし、公開するのはプロキシだけにしてください。