こんにちは。エンジニアのための記録習慣化サービス「Bochi」を開発しています。
Bochiは、日々の機能開発やプロダクトの挑戦、失敗、そして「今日やったこと」を記録するためのサービスです。
今回はBochiにAIによる自然言語の記事検索機能を実装しようとした時の話です。
この記事は、AIと自作サービスを接続するためのMCPサーバ構築の過程を記録します。
そもそもMCPって何
MCP(Model Context Protocol)とは、AIが他のデータやツール(今回の場合はBochi)を直接操作できるようにするためのプロトコル(通信ルール)です。 (詳細: Model Context Protocol 公式ドキュメント)
このサーバーを構築することで、claude,chatgpt等のAIツールからBochiの記事を取得することができます。
将来的には様々なサービスがAIツールを介すことで、AIツール上で買い物をして、ホテルの予約をとり、音楽をかける世界が可能になります。
実装
まずは、MCP公式ドキュメントを参考にMCPサーバを作成し、Claude(Anthropic)に接続しました。
こちらは、公式ドキュメントや先人たちが残してくれた記事が充実しており、参考にしながら進めたところ、特に困ることもなくスムーズに接続に成功しました。
意気揚々と、Claudeで接続確認ができたサーバーをそのままChatGPT(OpenAI)に接続しようとしました。 すると、無情にも画面にはこう表示されました。
「connector is not safe」 (このコネクタは安全ではない)
Claudeでは動いたものが、ChatGPTでは拒否されてしまいました。
なぜ拒否されたの
この「安全ではない」というエラーメッセージは、範囲が広すぎます。 CORSポリシー違反なのか、Vercelで自動設定されるSSL証明書に問題があるのか、あるいはChatGPTが要求する特定の認証ヘッダーが不足しているのか……。
正直なところ、現時点では「これだ!」という明確な原因は特定できていません。
1つだけ分かったことは、**「同じmcpというプロトコルに対応していても、AI(ClaudeとChatGPT)によって要求されるレベル、特にセキュリティ要件が異なる」**ということです。
今後のタスクとしては以下の2つです。
- セキュリティ関連の再調査
- 「安全ではない」というからには、やはりセキュリティ周りが怪しい考えています。SSL証明書やCORSの設定を重点的に見直します。
- 公式ドキュメントとコミュニティの深掘り
- mcpの公式サンプルと、OpenAIのサンプルコードを見比べ、設定に違いがないかを確認します。
- 公式の開発者コミュニティで、同じエラーに直面している人がいないかを探してみます。
おわりに
もし、この記事を読んで「私も同じ問題にハマった!」という方がいらっしゃいましたら、ぜひ情報交換させてください。(現在Bochiにコメント機能がないため、お問い合わせフォームからご連絡いただけると嬉しいです)