2025年5月7日

MCPサーバーについて & Prismaのためにどのように構築したか

ローカルMCPサーバーとリモートMCPサーバーのトレードオフ、@modelcontextprotocol/sdkパッケージ、そしてLLMがPrisma CLIを使用できるようにした方法など、Prisma MCPサーバーを構築した実践的な例を通して、MCPの仕組みを学びましょう。

About MCP Servers & How We Built One for Prisma

MCPを理解する

Prisma MCPサーバーの構築方法に関する技術的な詳細に入る前に、少し立ち戻ってMCPサーバーについて最初から理解しましょう。

LLMが独自のデータやシステムへのアクセスを必要とする場合はどうなりますか?

LLMは、ワールドワイドウェブの情報に基づいて学習されており、インターネット上のどこかで議論されたことのある、最も難解な質問に対しても正確な回答を提供できます。

しかし、LLMに独自のデータやシステムに基づいて質問に答えさせたい場合、あるいは、あなたに代わって何らかのアクションを実行させたい場合はどうでしょうか?ChatGPTに以下のようにプロンプトを出すことを想像してみてください

  • "ファイルシステムから去年の請求書をすべて見つけてください。"
  • "us-westリージョンに新しいデータベースインスタンスを作成してください。"
  • "特定のレポで新しいGitHubイシューを開いてください。"

純粋にインターネットで学習されたLLMでは、あなたのファイルシステム、データベースプロバイダー、またはGitHub APIにアクセスできないため、これらを解決することはできません。

「ツールアクセス」によりLLMは外部と対話可能に

このようなシナリオでは、LLMは「外部世界」と対話するための追加の能力を必要とします。つまり、ウェブの知識を超えて、他のシステムでアクションを実行する能力です。

LLMプロバイダーは、このニーズに応えて、いわゆるツールアクセスを実装しました。個々のプロバイダーは異なる名称を使用しています。OpenAIは関数呼び出しと呼び、Anthropicはツール使用と呼び、その他は「プラグイン」や「アクション」といった用語を使用しています。

Blog image

このアプローチは、各LLMがツールと対話するための異なるインターフェースを持っていたため、煩雑でした。

例えば、複数のLLMにファイルシステムへアクセスさせたい場合、同じ「ファイルシステムアクセルツール」を、各LLMに合わせて複数回実装する必要がありました。それがどのようなものだったかを示すと、次のようになります

次々と新しいLLMが登場する中、すべてのLLMが外部世界にアクセスするための独自のインターフェースを持つようになれば、どれほど混沌とするか想像に難くないでしょう。

MCPの導入:LLMのツールアクセスを標準化

2024年11月、Anthropicはモデルコンテキストプロトコル(MCP)を次のように導入しました。

コンテンツリポジトリ、ビジネスツール、開発環境など、AIアシスタントをデータが存在するシステムに接続するための新しい標準

MCPは、AIシステムを外部データソースに接続するための普遍的でオープンな標準を提供します。MCPプロトコルを実装するすべてのLLMは、MCPサーバーを通じて機能が公開されていれば、同じ機能にアクセスできるようになりました。

Blog image

前の例に戻ると、MCPを使用すれば、請求書検索機能を一度だけ実装すれば済みます。その後、MCPサーバーを介して、MCPプロトコルをサポートするすべてのLLMに公開できます。以下に擬似コードの実装を示します

Anthropicは、この標準で明らかに共感を呼びました。当時X(旧Twitter)にいた方なら、1日に複数のMCP関連の投稿を目にしたことでしょう。「MCP」のGoogleトレンドも同じことを示しています

LLMをMCPサーバーに接続する方法

LLMにMCPサーバーの機能を追加するために必要なのは、サーバーを起動するためのCLIコマンドだけです。ほとんどのAIツールは、次のようなJSON設定を受け入れます

AIツールはcommandを実行し、argsを渡し、LLMはサーバーのツールにアクセスできるようになります。

Prisma MCPサーバーの構築

Prismaでは、最も人気のあるTypeScript ORMと、ユニカーネル上で動作する世界で最も効率的なPostgresデータベースを構築しました。

当然のことながら、私たちはMCPを使用して開発者のデータベースワークフローを簡素化する方法を模索しました。

Prisma用のMCPサーバーを構築する理由

多くの開発者は、Prismaを使用してデータ駆動型アプリを構築する際に、CursorWindsurfのようなAIコーディングツールを使用しています。

これらのAIコーディングツールには、AIがソースファイルを編集し、ユーザーはAIによる提案をレビューして承認するだけでよい、いわゆるエージェントモードがあります。また、CLIコマンドを実行することも提案でき、ファイルの編集と同様に、そのコマンドが実際に実行されるべきであることを確認する必要があります。

Prisma PostgresおよびPrisma ORMとの多くの対話はPrisma CLIによって行われるため、例えば以下のようなワークフローで、LLMがユーザーに代わってPrisma CLIコマンドを実行できるようにしたいと考えました。

  • データベースマイグレーションのステータス確認
  • データベースマイグレーションの作成と実行
  • Prisma Consoleでの認証
  • 新しいPrisma Postgresインスタンスのプロビジョニング

MCP以前は、各LLMに対して個別にサポートを実装する必要がありました。MCPを使用すれば、すべてのLLMを一度にサポートする単一のサーバーを実装できます。

@modelcontextprotocol/sdkパッケージ:「MCPのためのExpressのようなもの」

MCPを導入するにあたり、Anthropicは様々な言語向けのSDKをリリースしました。TypeScript SDKは、typescript-sdkリポジトリにあり、MCPクライアントとサーバーの実装に必要なすべてを提供します。

Blog image

ローカルMCPサーバー vs. リモートMCPサーバー

MCPサーバーを構築する際、それがローカル(ユーザーと同じマシン上)で動作するか、それともリモート(インターネット経由でアクセス可能なマシン上)で動作するかを決定する必要があります。

これはサーバーが何をするかによります。ユーザーのファイルシステムへのアクセスが必要な場合は、ローカルで実行する必要があります。APIを呼び出すだけであれば、ローカルでもリモートでも可能です(APIはローカルマシンからもリモートマシンからも呼び出せるため)。

Prismaの場合、LLMは主にPrisma CLIへのアクセスを必要とし、開発者のデータベース関連ワークフローをサポートします。Prisma CLIはローカルまたはリモートのデータベースインスタンスに接続できますが、CLIコマンドはローカルで実行されるため、Prisma MCPサーバーもローカルである必要があります。

LLMによるPrisma CLIコマンドの呼び出しを可能にする

Prisma MCPサーバーは非常にシンプルで軽量です。GitHubで詳しく見ることができます。Prisma CLIの一部としてパッケージ化されており、以下のコマンドで起動できます。

基本的な構造は次のとおりです

prisma mcp --early-access CLIコマンドが呼び出されると、parse関数が実行されます。これは、ローカルで実行されているため、StdioServerTransportStreamableHTTPServerTransportとは対照的に)を使用するMCPサーバーを起動します。

上記のコードスニペットにはCLIコマンドの実際の実装は示されていませんが、parse関数に注目し、例としてprisma migrate devおよびprisma init --dbコマンドを見てみましょう。

各ツールは、server.tool()を介して以下と共に登録されます

  1. 名前(LLMが参照できるように)
  2. 説明(LLMがその目的を理解するのに役立つように)
  3. 引数スキーマzodを使用)
  4. ロジックを実装する関数

すべてのツールの実装は同じパターンに従っており、非常にシンプルです。ツールが呼び出されると、私たちは単に新しいプロセスを生成し(execaを使用するrunCommand関数を介して)、それに属するCLIコマンドを実行します。これだけで、LLMがユーザーに代わってコマンドを呼び出すことができるようになります。

今すぐPrisma MCPサーバーを試す

試してみたい場合は、このスニペットをお気に入りのAIツールのMCP設定セクションに貼り付けてください。

または、Cursor、Windsurf、Claude、OpenAI Agents SDKに関する具体的な手順については、ドキュメントをご確認ください。

追加すると、AIツールはMCPサーバーのステータスと利用可能なツールを表示します。Cursorでは次のようになります

Blog image

MCPの先へ:VS CodeにおけるPrismaユーザーのための新機能

次は何でしょうか?MCPは強力ですが、AIツールでの手動設定がまだ必要です。

私たちの目標は、開発者が既にいる場所で支援することです。VS CodeはWebアプリ構築の事実上の標準であり、GitHub CopilotとLanguageModelTool APIの無料統合のおかげで、MCPサーバーの機能をすべてのPrisma VS Code拡張機能ユーザーに提供する予定です🎉。これにより、Copilotはまもなくあなたのデータベースワークフローをさらに支援できるようになるでしょう!

ご意見をお聞かせください

MCP、AIツール、またはPrisma全般についてご意見やご質問がありますか?X(旧Twitter)でご連絡いただくかDiscordコミュニティにご参加ください — 皆様からのご連絡をお待ちしております!

次回の投稿をお見逃しなく!

Prismaニュースレターに登録

© . All rights reserved.