OffshoreVps
チュートリアル2026年10月6日読了時間 6 分執筆:OffshoreVps チーム

VPS で MCP サーバーをホストする方法

リモートの Model Context Protocol サーバーを動かす:ローカルとリモートの違い、Python の例、systemd サービス、トークン付き HTTPS、安全チェックリスト。

Model Context Protocol(MCP)を使うと、AI アシスタントが、自分で運用するサーバーのツールを呼び出したりデータを読み取ったりできます。多くの MCP サーバーはローカルで動作しますが、複数の人、ツール、エージェントが同じ機能を共有する必要がある場合は、VPS 上のリモートサーバーが役立ちます。このガイドでは、セットアップの選択肢と安全な基本構成を説明します。

MCP サーバーをホストするために使うコマンドを、「sudo adduser --disabled-password --gecos "" 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")
このガイドの手順(順番どおり):1. ローカルかリモートか;2. サーバーを準備する;3. サーバーを実行する;4. サービスとして実行する;5. HTTPS と認証;6. 安全チェックリスト
このガイドの手順(順番どおり)。

ステップ 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 にバインドしたままにし、公開するのはプロキシだけにしてください。