
4,822 文字

世界中のすべての開発者が今MCPに夢中になっているようです。モデルコンテキストプロトコルは、APIを構築するための最新のホットな方法であり、これが何かわからないならあなたはついていけないでしょう。人々はこれで信じられないようなことをしています。例えば、ある人はClaudeに「雰囲気だけ」で動作するBlenderで3Dアートをデザインさせました。そして数日前、これはOpenAIのエージェントSDKで公式標準となりました。
このチャンネルの古参の購読者なら、RESTful APIが何かをご存知でしょう。GraphQLやRPC、あるいは何年も前に使っていたSOAPについても知っているかもしれません。私が子供の頃、ソフトウェアエンジニアリングの門番たちは、これらのアーキテクチャとプロトコルの違いを説明できなければウェブ開発者になれないと言っていました。しかし今や立場は逆転しました。これらの門番たちは完全に打ち負かされました。なぜなら私たちは今や皆、単なる「バイブコーダー」となり、指数関数的な進化を受け入れ、コードなど存在しないかのように振る舞い、求める結果が得られるまでLLMとくつろいでいるからです。
とはいえ、モデルコンテキストプロトコルを知らなければ、真の「バイブコーダー」とは呼べません。これは基本的に、AIアプリケーション用のUSB-Cポートのように考えられるAPIを構築するための新しい標準です。これはClaudeの背後にあるチームであるAnthropicによって設計され、大規模言語モデルにコンテキストを提供する標準的な方法を提供します。彼らはこのテクノロジーに非常に自信を持っており、AnthropicのCEOは年内にほぼすべてのコードがAIによって書かれるようになると予想しています。
今日の動画では、実際にMCPサーバーを構築し、それがホワイトカラーの仕事をすべて排除することで本当に世界をより良くできるかどうかを検証します。
今は2025年3月31日、そしてあなたは「The Code Report」を視聴しています。一般的な見解に反して、FireShipは今でもチュートリアルチャンネルです。今日の動画では、ストレージバケット、PostgreSQLデータベース、そして通常のRESTful APIを取り上げ、それらをすべてモデルコンテキストプロトコルで接続します。これによりClaudeはこれまで持っていなかったデータにアクセスできるだけでなく、データベースへの書き込みやファイルのアップロードなど、サーバー上でコードを実行することもできます。
インターネットの人々はすでにこれを使って、自動化された株式取引や仮想通貨トレード、産業規模のウェブスクレイピング、そしてKubernetesクラスターなどのクラウドインフラを管理するツールとして、驚くべきことをしています。
MCPサーバーを構築するには、クラウドインフラが必要になりますが、そのための最適な場所の一つがSavolaです。Savolaは内部的にGoogle Kubernetes EngineとCloudflareによって支えられています。彼らはこの動画を後援してくれましたが、私がこのプラットフォームを気に入っている理由は、AWSのような他のサービスよりはるかに使いやすく、他のアプリケーションやデータベースのホスティングスタートアップとは異なり、線形で予測可能な価格設定を提供しているからです。また、無料で始められるため、このプロジェクトには最適です。
他のAPIアーキテクチャと同様に、MCPにはクライアントとサーバーがあります。私たちのケースでは、クライアントはClaude Desktopとなり、そしてクライアントとの接続を維持するサーバーを開発し、トランスポート層を通じて情報をやり取りできるようにします。RESTful APIでは、異なるURLに対してさまざまなHTTPメソッドでリクエストを送信しますが、モデルコンテキストプロトコルでは、主に2つのことだけを考慮します。リソースとツールです。
リソースはファイルやデータベースクエリ、あるいはモデルがコンテキストとして使用できるその他の情報かもしれません。概念的には、RESTにおけるGETリクエストのように考えることができます。一方、ツールは、データベースに何かを書き込むなど、実行できるアクションです。これはRESTにおけるPOSTリクエストのようなものです。開発者として私たちがやることは、LLMがプロンプトに必要なときに自動的に識別して使用できるように、サーバー上のツールとリソースを定義することです。
私の人生で取り組んできたアプリの中で、「Horse Tender」と呼ぶ私の最高傑作があります。しかし、左右にスワイプする機能は、馬には指がないため、良いアイデアではありませんでした。そこで、シリコンバレーの他の多くの失敗しつつあるスタートアップと同様に、人工知能へとピボットすることにしました。幸いなことに、既存のデータとサーバーを活用できます。
例えば、Savolaにストレージバケットがあり、ユーザーがアップロードしたすべての写真が含まれています。さらに、ユーザーデータ用にPostgreSQLデータベースがあり、それぞれの馬のプロフィールデータと、彼らが形成する関係がすべて含まれています。そして最後に、ウェブ、iOS、Androidアプリのためにこのデータを取得する、TypeScriptで書かれた従来のRESTful APIがあります。
私のコードの特に優れている点は、CICDパイプラインに接続されたGitリポジトリにあることです。つまり、モデルコンテキストプロトコルサーバーを作成した後、本番環境に入る前にテストするために、コードをdevやstagingブランチにプッシュできます。Savolaはすべてのデプロイメントとキャッシュバスティングを自動的に処理してくれます。
さて、コードに入りましょう。ここにDinoプロジェクトがあります。最初に気付くのは、MCPServerというクラスをインポートしていることです。これは公式SDKから来ていますが、TypeScriptを使用していない場合、Python、Javaなど他の言語もあります。また、ここではZodも使用します。これはスキーマ検証のためのツールで、LLMが単にランダムな情報を生成しないように、特定のデータ形状を提供できます。
サーバーを作成した後、リソースを追加できます。リソースには最初に「Horses Looking for Love」などの名前があり、次に2番目の引数はそのリソースのURIです。そして最後に3番目の引数は、データを取得するために使用できるコールバック関数です。この例では、SavolaのクラウドでホストされているPostgreSQLデータベースへのクエリを書いており、サーバー上でPostgreSQL JSライブラリでアクセスしています。しかし、ここでは任意のデータにアクセスできます。
ただし、リソースの場合は副作用や計算がない、データの取得のみに使用すべきです。副作用や計算がある場合は、代わりにツールを使用すべきです。例えば、Horse Tenderでは、AIが自動的に馬同士のマッチングや日程を設定することがあるかもしれません。すでにそれを処理できるRESTful APIエンドポイントがあり、そのコードをここで活用できます。基本的にはAPIのためのAPIを作成しています。
実際、これらのMCPサーバーの多くは、単にAPIのためのAPIに過ぎません。それは愚かな過剰エンジニアリングのように聞こえますが、このようなプロトコルを持つことで、異なるモデル間でのプラグアンドプレイがはるかに容易になり、全体的にLLMアプリをより信頼性の高いものにします。
重要な点として、ここでZodを使用してこの関数に入力されるデータの形状を検証していることに注目してください。これによりLLMがランダムなものを生成するのを防ぎます。基本的に、Claudeにプロンプトを与えると、この関数の適切な引数を理解する必要があります。そのため、説明とともにデータ型を提供することで、MCPサーバーははるかに信頼性が高くなります。
最後のステップは、サーバーを実行することです。この場合、ローカルで使用するためにトランスポート層として標準入出力を使用しますが、クラウドにデプロイする場合、サーバー送信イベントやHTTPも使用できます。
おめでとうございます、MCPサーバーを構築しました!しかし、次の質問は、これを実際にどのように使用するかです。使用するには、Claude Desktopのようなモデルコンテキストプロトコルをサポートするクライアントが必要になります。Claude Desktopを使いたくない場合は、CursorやWisorなど、他にも多くのMCPクライアントがあります。また、独自のクライアントを開発することもできますが、それは完全に別のトピックです。
インストールしたら、開発者設定に移動できます。これにより、複数のMCPサーバーを追加できる設定ファイルが表示されます。設定ファイルでは、実際のサーバーを実行するコマンドを提供するだけです。私たちの場合、サーバーコードがあるmain.tsファイルのDinoコマンドになります。Claudeを再起動する必要がありますが、その後MCPサーバーが実行中であることが表示されるはずです。この場合、私の馬が走っているので、おそらく捕まえに行く必要があります。
次に、プロンプト画面に戻ってアタッチできます。これによりサーバーからリソースが取得され、Claudeが次のプロンプトでコンテキストとして使用できるようになります。またClaudeはマルチモーダルなので、PDF、画像、その他のものもコンテキストに追加できます。例えば、Savolaのストレージバケットにある馬の画像すべてなどです。
そして魔法のように、アプリケーション固有のことについてClaudeにプロンプトを送ることができます。例えば、どの馬が独身でお近づきになりたいかを知りたい場合、このようなプロンプトを作成でき、先ほどデータベースから取得したコンテキストを使用します。また、Claudeにデータベースに書き込ませたい場合は、コンテキストから2頭の馬をデートでつなげるようなプロンプトを作成できます。これを行うには許可を与える必要があり、そうするとClaudeは自動的にZodで検証したスキーマに基づいて送信するデータを把握し、実際のアプリケーションでデータを変更するサーバーツールを使用します。
ここで何も問題が起きないとは想像できません。Anthropicはこれが未来だと非常に自信を持っており、CEOは今後6ヶ月以内にコーディングの90%が完全にAIによって行われ、1年以内にほぼすべてのコードがAI生成になると述べています。私はそれに疑問を感じます。AIエージェントが誤って何十億ドルもの顧客データを消去したり、自己認識を持ってデータを楽しみで削除したりするのは時間の問題だと思います。
とはいえ、現在MCPで構築されている素晴らしいツールがたくさんあり、Awesome MCPリポジトリでそれらをチェックできます。責任を持って「バイブコーディング」を楽しんでください。
この動画を可能にしてくれたSavolaに大きな感謝を、そして彼らの素晴らしいプラットフォームを試すための50ドルの援助金をお楽しみください。
これはThe Code Reportでした。視聴ありがとうございます。次回でお会いしましょう。


コメント