必ず自分でサーバーを書く必要がありますか、既製品は?
多くの一般的サービス(クラウドドライブ、プロジェクト管理、メッセージング)には公式やコミュニティ製のMCPサーバーがあり、自作せず直接つなげます。自作すべきは、社内専用で既製の選択肢がないシステム——自社DB、社内API、独自ツール——をつなぐ場合です。
原則:標準的な外部サービスは既製品を優先(速く実証済み)。要件が特殊で既存品が合わないときだけ自作の価値があります。既製で解ける問題に車輪の再発明をしないこと。
stdioとSSE/HTTPのどちらのトランスポートを選ぶ?
単純な分け方:サーバーがClaudeと同じマシン(例:ローカルのデスクトップアプリ)で動くならstdio。別の場所にあり、ネットワーク経由で接続(例:クラウドに配置しチーム共用)ならSSE/HTTP。
決め手は「誰がどこから使うか」。一人のローカル開発・テストならstdioが最も簡単で、ネットワークも認証も不要。チーム全体やリモートのClaudeから到達させるならHTTPが必要で、認証を忘れないこと。オンラインになれば到達できる誰もがサーバーを呼べるため、権限と本人確認がより重要になります。
ツールを読み取り専用にする以外、権限で注意すべきことは?
読み取り専用は第一層ですが不十分。さらに数層を考えます。一つ目「データ範囲」:読み取り専用でも照会できる範囲を限定——例えば特定部門のデータのみ、DB全体を開放しない。二つ目「入力検証」:Claudeが渡す引数が必ず清浄と仮定せず、あらゆる外部入力同様に検査・フィルタする。
三つ目「監査ログ」:誰がいつどのツールを呼び何を照会したかを記録し、問題時に追跡できるように。これらを重ねても核心は同じ:サーバーは要求が誤りや悪意かもしれないと仮定し、善良と既定しないことです。
上級:Claudeが正しく呼ぶには、ツール説明をどう書く?
これはサーバーの使い勝手を左右する見えない鍵で、過小評価されがちです。Claudeはあなたのツール説明を頼りに「いつ使い、何の引数を渡すか」を判断します。曖昧に書けば推測し、誤れば「引数が変」という問題が出ます。
良いツール説明の三要点:一つ目、ツールの用途と適用場面を明確にし、いつ選ぶべきかをClaudeに分からせる。二つ目、各引数が何で、どの形式で、必須か任意かを注記し、闇雲に埋めさせない。三つ目、引数に制約(日付形式、数値範囲)があれば説明に直接書く。
実用的な心得:ツール説明を「社内システムを見られない人向けのAPI文書」として書くこと。相手は文字だけで理解します。明確に書くほど、Claudeは正確に使います。
「MCPサーバーを構築する際の鉄則:外部からのリクエストを信頼しない門番として設計すること。権限はサーバーコードに書く。『Claudeにデータを削除しないでください』はリクエストであって、制限ではない。」
多くの一般的なサービス(クラウドストレージ、プロジェクト管理、メッセージング)はすでに公式またはコミュニティのMCPサーバーが存在し、自分で書かなくても接続できる。自作が必要になるのは、既製オプションのない社内専用システム——自社のデータベース、内部API、プライベートツール——に接続する場合だ。
原則:標準化された外部サービスには既製品を優先する。速く、実績もある。既存のオプションがニーズに合わない場合のみ自作する価値がある。
stdioとSSE/HTTPの違い
シンプルな判断基準:サーバーがClaudeと同じマシン上で動く場合(ローカルデスクトップアプリなど)はstdioを使う。サーバーが別の場所にあってネットワーク経由で接続する場合(クラウドにデプロイしてチームで共有するなど)はSSE/HTTPを使う。
判断の軸は「誰がどこから使うか」だ。個人のローカル開発とテストならstdioが最もシンプルで、ネットワークや認証の問題がない。チーム全体に提供したり、リモートのClaudeからアクセスさせたりするにはHTTPが必要で、その場合は認証も忘れずに。一度オンラインになると、アクセスできる人なら誰でもサーバーを呼び出せるため、権限と本人確認がより重要になる。
読み取り専用は最初の層であって、十分ではない。さらに考慮すべき点:
これらの層を重ねる核心的な考え方は同じだ:サーバーはリクエストが間違っているかもしれない、あるいは悪意があるかもしれないと前提にする。デフォルトで信頼しない。
Chainは:Claude → あなたのMCPサーバー → 社内システム、そして同じ経路で戻る。ClaudeはデータベースにはアクセスせずClaudeに「query_customerツールをこのパラメータで使って」と伝えるだけだ。サーバーはそれを受け取り、まずリクエストを許可すべきか検証し、通過すれば社内システムをクエリし、Claudeが読める形式にフォーマットして返す。
この設計の利点:機密情報(データベースパスワード、APIキー)はサーバー内にのみ存在し、Claudeには渡されない。 ClaudeはあなたがDefineしたツールを通じてのみアクセスし、基盤レイヤーには直接届かない。
ツール説明はサーバーが使いやすいかどうかを左右する隠れた鍵で、よく過小評価される。Claudeはツール説明を頼りに「いつ使うか、どんなパラメータを渡すか」を判断する。曖昧に書けば推測し、推測が外れれば「おかしなパラメータで呼ばれた」問題が発生する。
良いツール説明の3つのポイント:
実用的な原則:社内システムを見ることができない人向けに書くAPIドキュメントとしてツール説明を扱う。読者はあなたの言葉からのみツールを理解できる——明確に書けば書くほど、Claudeは正確に使う。
よくある3つのMCPデバッグ問題:
実際には、まずサーバー側ですべてのリクエストとレスポンスをログに記録する。10件中9件の問題はログを読むだけで特定できる。