MCP ServerをPostmanでサクッとテストする(CloudRun x Pulumi x FastMCP)
はじめに
主要なAPI開発プラットフォームであるPostman に MCP (Model Context Protocol) サーバーをテストする機能が追加されました。これにより、自作のMCPサーバーの動作確認が格段に手軽になっています。
この記事では、Zennの記事を取得する簡単なMCPサーバーをFastMCPで作成し、Google Cloud Runにデプロイ、そしてPostmanでテストするまでの一連の流れをハンズオン形式で解説します。インフラの構築にはPulumiを使用し、IaC (Infrastructure as Code) を実践していきます。
今回作成したリポジトリは以下の通りです。
技術スタック
- クラウド環境: Google Cloud Run, API Gateway, Artifact Registry
 - IaC: Pulumi (TypeScript)
 - MCPサーバー: FastMCP (Python)
 - テストツール: Postman
 
MCPサーバー作成
今回は、FastMCPを使い、指定したZennユーザーやトピックの記事一覧を取得するMCPサーバーを開発します。
セットアップ
まず、MCPサーバーのプロジェクトディレクトリmcp-serverを作成し、uvを使用してPythonの仮想環境を構築します。
mkdir mcp-server
cd mcp-server
uv init
次に、以下のコマンドで必要なパッケージをインストールします。
uv add fastmcp ruff ty
MCPツールの作成
Zennの公開APIを利用して、以下の2つのMCPツールを作成します。
- get_zenn_posts_by_username:ユーザー名から投稿記事を取得する
 - get_zenn_posts_by_topic:トピックから投稿記事を取得する
 
動作確認
サーバーをローカルで起動し、動作を確認します。
uv run server/server.py
以下のような起動ログが表示されれば成功です。

 Dockerfile作成
Cloud Runにデプロイするため、サーバーをコンテナ化します。プロジェクトルートにDockerfileを作成してください。
環境作成
Pulumiを使い、GCP上にCloud RunやAPI Gatewayなどのリソースを構築します。
今回はAPIキーを作成してMCPサーバーを保護します。
Pulumiのセットアップ
Pulumiを初めて使用する場合は、公式サイトの手順に従ってインストールとセットアップを完了してください。
次に、IaCを管理するディレクトリ (packages/ops) を作成し、Pulumiプロジェクトを初期化します。
# IaC用のディレクトリを作成
mkdir -p packages/ops
cd packages/ops
# GCPのTypeScriptプロジェクトとして初期化
pulumi new gcp-typescript
# 必要パッケージの追加インストール
pnpm add @pulumi/command @pulumi/docker @pulumi/random zod
ウィザードに従って、プロジェクト名、スタック名、GCPプロジェクトID、リージョンを設定します。
IaC作成
コードの可読性と再利用性を高めるため、各リソースをPulumiのComponentResourceとして分割して定義します。
 1. ProjectServices
GCPプロジェクトで必要なAPIを有効化します。
 2. ContainerImage
Dockerfileをビルドし、Artifact Registryにコンテナイメージをプッシュします。
 3. BackendService
プッシュしたコンテナイメージを使用してCloud Runサービスを作成します。
 4. ApiGatewayForCloudRun
Cloud Runサービスを公開するためのAPI Gatewayと関連リソースを作成します。
API Configに設定するopenapi.yamlは、FastMCPで作成したパスに合わせて作成ます。
 5. ApiKey
API Gatewayを保護するためのAPIキーを作成します。
 6. packages/ops/index.ts メインファイル
これがPulumiプログラムのエントリポイントです。各コンポーネントを呼び出し、リソース間の依存関係を定義します。
各コンポーネントの詳細は、GitHubリポジトリを参照してください。
デプロイ
すべてのコードを準備したら、pulumi upコマンドでインフラをデプロイします。
# IaCディレクトリに移動
cd packages/ops
# Pulumiのパッケージをインストール
pnpm install
# デプロイを実行
pulumi up
プレビューが表示され、yesを選択するとデプロイが開始されます。完了すると、API GatewayのURLやAPIキーが出力されます。
Postmanでテスト
デプロイが完了したら、Postmanを使ってMCPサーバーをテストします。
APIキーの取得
GCPコンソールの「APIとサービス > 認証情報」から、デプロイされたAPIキーを取得してください。

動作テスト
1. Postmanで新しいHTTPリクエストを作成してMCPを選択
最新のPostmanのクライアントではMCPという選択肢が増えているので、MCPを選択します。

2. APIエンドポイントとAPIキーを入力して接続
まず、エンドポイントURLとヘッダーに必要なAPIキーを入力します。
ConnectボタンをクリックしてMCPサーバーと接続してください。

3. MCPツールの設定を入力して送信
まず、対象のMCPツールを選択して、設定値を入力します。
Runボタンをクリックしてリクエストを送信します。

MCPツールのorder引数に設定した選択肢も反映されてます
4. テスト結果
レスポンスにZennの記事一覧がJSON形式で返ってくれば、テストは成功です。

Claude Desktopで使ってみる
(2025年7月現在)Claude DesktopではリモートMCPサーバーを直接呼び出すことができないため、mcp-remote経由で呼び出す必要があります。
1. MCPサーバーの設定
Claude Desktopの設定ファイルに、ローカルで起動したmcp-remoteのアドレスを設定します。これにより、Claudeから自作のMCPサーバーを呼び出すことが可能になります。
{
  "mcpServers": {
    // ...
    "mcp-zenn-server": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://xxxxxxxxxxxxxxx.an.gateway.dev/mcp/",
        "--header",
        "X-Api-Key: ${MCP_API_KEY}"
      ],
      "env": {
        "MCP_API_KEY": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}
2. 投稿記事取得
まず、自分の投稿記事の取得を試してみました。

次に、PHP関連の投稿記事の取得を試してみました。

問題なくMCPサーバーとして機能していることが確認できました。
まとめ
この記事では、FastMCPで簡単なMCPサーバーを作成し、Pulumi (IaC) を使ってCloud RunとAPI Gatewayにデプロイ、最後にPostmanのMCP機能でテストするまでの一連の流れを解説しました。
MCPはまだ発展途上のプロトコルですが、Postmanのような主要なツールがサポートを始めたことで、今後の普及が期待されます。Cloud Runと組み合わせることで、スケーラブルかつ手軽に独自のツールサーバーを構築できるため、ぜひ皆さんも試してみてください。
Discussion