🐕

Postman AI Agent Builder でOpenAIと会話するMCPを作成してClaude Desktopから呼び出す

に公開

今日は、Postman AI Agent Builder を使って、Claude Desktopでの作業中にOpenAIを呼び出せるMCPを作成します。

なんのためにわざわざそんなMCPを?

最新情報をLLM側は学習しきれていないため、古い知識をもとに回答が作成されるケースはしばしばあります。本来このような最新情報は外部データソースとAPI連携してリアルタイムで情報を収集し、最終的な回答はLLMが文脈を正しく把握したうえで回答を作成する、というのが本来のMCPの使い方です。

皆さんはLLMとの対話の中でもっともらしい嘘をつかれたことはないでしょうか?LLMやRAGで使われるベクトル検索などの技術は、情報が近しくない場合でも、もっともらしい回答を返すよう動作する技術特性を持っているため、似た方な情報が内部にあればそれで回答を行います。回答の中にはスコアリングという信頼度が出力されていますが、ChatGPTやClaude Desktopなどではデフォルトでその信頼度が見えないようになっています。このため、新しい情報じゃなくてももっともらしい嘘をつくケースは結構あります。

私はAnthropicとOpenAI2つの有償プランを契約しているため、回答が怪しい場合その回答を別のLLMにコピーしてチェックしています。MCPを使ってこの2つを連携させることができれば、コピペの手間が省けるな、と思った次第です。

Postman AI Agent Builder

https://zenn.dev/kameoncloud/articles/b827e97997e0dc
こちらで紹介した通りPostmanは公開されているAPIのドキュメント情報をもとに、MCPサーバーを自動で
生成してくれる機能が備わっています。自動で生成されたものの品質はAPIドキュメントの品質によるところが大きく上記の記事で試したNew York Timesから最新ニュースを読み込むMCPは90%程度の完成度で自動生成されたため、少し手直しをするだけで利用可能でした。

**OpenAI用のMCPをこの機能で自動生成させてClaude Desktopで使えばコピペをなくせるのか?**というのがこの記事の趣旨です。これを実現させるためには、OpenAI用とチャットを行うMCPが作成されるだけでは不十分で、Claudeとの対話情報をそのままシームレスにOpenAI用MCPに流し込んでくれる動作をClaude Desktopが行ってくれるか?というのもポイントです。

さっそくやってみる

0. ClaudeDesktopの準備

https://zenn.dev/kameoncloud/articles/7b663daf3c4fad
この記事を参考に準備しておきます。

0. OpenAI 用APIキーの作成

https://openai.com/ja-JP/api/
からログインしてAPIキーを発行します。クレジットカード情報が必要ですが、初回登録時はボーナストークンがもらえるので、この記事の手順レベルであれば無償で利用可能なはずです。

1. Postman AI Agent Builder で OpenAI用MCPサーバーの自動作成

以下のサイトにアクセスします。
https://www.postman.com/explore/mcp-generator
MCP Generatorをクリックしてopenaiで検索を行います。

Postman上で公開されているOpenAIのAPIはPostman Dev Relチームによりメンテナンスされておりかなりドキュメントが充実している(ほかのお手本となるよう作成されている)ため自動生成されるOpenAI用MCPサーバーもかなり期待できます。

Chat Completionsを選択しAdd Requestsをクリックします。

Generateをクリックします。

数十秒待つとZIPがダウンロード可能となりますので、ローカルに保存して展開しておきます。

2. MCPサーバーのビルドとClaude Desktopへの組み込み

Zipを解答したらnpm installで必要モジュールをインストールしておきます。Postman AI Agent BuilderはTypescriptではなくJavascriptで生成されますのでbuildは必要ありません。

claude_desktop_config.jsonを以下の様に修正します。<api key>は皆さんの値に置き換えます。

{
  "mcpServers": {
    "openai": {
      "command": "node",
      "args": [
        "C:\\Users\\h.kameda\\postmanopenaimcp\\mcpServer.js"
      ],
      "env": {
        "OPENAI_API_KEY": "<api key>"
      }
    }
  }
}

3. Claude Desktop の再起動とテスト

ではテストしてみます。
なんと!!!コピペなしでプロンプトをやり取りしてくれています。

MCPとやり取りしているjsonをいかに転記すると確かにプロンプト自体が自動生成されていることがわかります。

Request
{
  `model`: `gpt-4`,
  `messages`: [
    {
      `role`: `user`,
      `content`: `横浜について以下の情報が正確かどうか確認してください:

1. 横浜は神奈川県にある都市
2. 東京の南西約30キロメートルに位置
3. 東京湾に面している
4. 日本で2番目に人口の多い都市
5. 約370万人が住んでいる
6. 1859年に開港
7. みなとみらい21地区、中華街、赤レンガ倉庫が有名な観光地

これらの情報の正確性を教えてください。`
    }
  ]
}
Response
{
  "id": "chatcmpl-BdXnRNOLGD6mUiE0uGngBesdcZfoQ",
  "object": "chat.completion",
  "created": 1748764405,
  "model": "gpt-4-0613",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "1. 横浜は神奈川県にある都市:【正確】\n2. 東京の南西約30キロメートルに位置:【正確】。横浜は東京から南西へ約30キロメートルの場所に位置しています。\n3. 東京湾に面している:【正確】。横浜は東京湾に面した港湾都市です。\n4. 日本で2番目に人口の多い都市:【正確】。横浜は東京都に次ぐ人口を持つ都市です。\n5. 約370万人が住んでいる:【ほぼ正確】。横浜の人口は約370万人ですが、年によって微妙に変動しますので注意が必要です。\n6. 1859年に開港:【正確】。横浜は1859年に日本で初めて外国との貿易港として開港しました。\n7. みなとみらい21地区、中華街、赤レンガ倉庫が有名な観光地:【正確】。これら3つの地区は横浜市でよく知られた観光地で、多くの人々に親しまれています。",
        "refusal": null,
        "annotations": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 188,
    "completion_tokens": 371,
    "total_tokens": 559,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default",
  "system_fingerprint": null
}

4. 注意点

ただしClaudeからの回答がそのまま正確にMCPのプロンプトに使われるわけではないです。以下の通り回答がサマリーされたり訳されたりするケースもあるため、詳細のチェックにはコピペは必要そうです。

MCP Clientを作成すれば、そのままResponseをMCPサーバへのプロンプトに使うことはできそうです。
https://modelcontextprotocol.io/quickstart/client
時間があればまたやってみたいと思います。

Discussion