Prisma MCP Server について
Prisma MCP Server は、Prisma ORM を介してデータベースと MCP 対応クライアントを接続します。モデルデータをリソースとして公開し、CRUD ツールを提供するほか、stdio と SSE の転送方式に対応します。
主な機能
- 01Prisma モデルのリソース化
- 02モデル向け CRUD ツール
- 03Prisma Client クエリの変換
- 04stdio と SSE の転送方式
- 05リソースとツールの追加
活用シーン
- 01MCP クライアントからのモデルデータ参照
- 02モデルレコードの作成、更新、削除
- 03独自のデータベース操作の追加
MCP 対応
Prisma モデルを読み取り可能な MCP リソースとして、CRUD 操作をツールとして公開します。MCP クライアントは stdio または SSE で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Prisma MCP Server
このパッケージは、Prisma ORM で管理されたデータベースへのインターフェースとして機能する、Model Context Protocol(MCP)サーバーを提供します。MCP に対応したクライアント(AI アシスタントやその他のアプリケーションなど)が、リソースのクエリやツールの実行を通じてデータベースとやり取りできるようにします。
このサーバーは fastmcp を使用して、Prisma のモデルと操作を公開します。
機能
- リソースの読み込み: Prisma のモデルを、読み取り可能な MCP リソースとして公開します(例:
resource://users/{user_id}、resource://projects)。 - ツールの実行: Prisma のモデルに対する一般的な CRUD(作成、読み取り、更新、削除)操作用の MCP ツールを提供します(例:
create_user、update_project)。 - データベースとのやり取り: MCP リクエストと Prisma Client のデータベースクエリ間の変換を処理します。
- 設定可能なトランスポート:
stdioとsse(HTTP 経由の Server-Sent Events)の両方のトランスポートモードに対応しています。 - 拡張性: 複雑な操作や他のアプリケーションサービスとのやり取りに対応するため、カスタムリソースやツールを簡単に追加できます。
前提条件
- Node.js: 最近のバージョン(指定がある場合は
package.jsonのenginesを確認してください)。 - Yarn または npm: パッケージマネージャー。
- Prisma Client: このパッケージを利用するプロジェクトに、
@prisma/clientがインストールされており、対象のデータベース用に設定されたprisma/schema.prismaファイルが必要です。 - データベース: Prisma がサポートする稼働中のデータベースインスタンス(例:PostgreSQL、MySQL、SQLite)。
インストール
# Using yarn
yarn add cadcamfun-db-mcp-server @prisma/client
# Using npm
npm install cadcamfun-db-mcp-server @prisma/client
注: このサーバーパッケージを使用するプロジェクトでは、@prisma/client をピア依存関係として必ずインストールしてください。
利用プロジェクトでのセットアップ
- Prisma スキーマ: プロジェクトのルートに、有効なデータベース接続とモデルを定義した
prisma/schema.prismaファイルがあることを確認してください。 - 環境変数: 必要な環境変数を設定してください(例:
.envファイル内)。DATABASE_URLなどの機密情報をバージョン管理に直接コミットしないでください。DATABASE_URL:(必須) データベースへの接続文字列(例:postgresql://user:password@host:port/database)。TRANSPORT_TYPE:(任意)HTTP 経由の Server-Sent Events を使用する場合は、sseに設定します。デフォルトはstdioです。PORT:(任意、TRANSPORT_TYPE=sseが必要)SSE サーバーのポートです。デフォルトは8080です。MAIN_APP_URL:(任意)trigger_main_app_notificationなど、メインアプリケーションへのコールバックが必要なツールを使用する場合の、メインアプリケーションのベース URL です。デフォルトはhttp://localhost:3000です。LOG_LEVEL:(任意)ログの詳細度を制御します。DEBUG、INFO、WARN、ERRORのいずれかを設定します。動作は、パッケージ内のロガー実装(使用されている場合)によって異なります。
- Prisma Client の生成: サーバーを実行する前に、スキーマに基づいて Prisma Client を必ず生成してください。
サーバーはnpx prisma generatenode_modules/@prisma/client内の生成済みクライアントに依存しているため、この手順は非常に重要です。
使用方法
// Example: index.ts in your consuming project
// Import the server creation function
import { createPrismaMcpServer } from 'prisma-mcp-server';
import { PrismaClient } from '@prisma/client'; // Make sure Prisma Client is installed
// Ensure required environment variables are set
if (!process.env.DATABASE_URL) {
console.error("Error: DATABASE_URL environment variable is not set.");
process.exit(1);
}
// Optional: Configure transport type and port via environment variables
// process.env.TRANSPORT_TYPE = 'sse';
// process.env.PORT = '8081';
async function main() {
// Ensure Prisma Client is generated (Best done in a build step)
try {
// Check if client exists, generate if not (simple check)
require.resolve('@prisma/client');
} catch (e) {
console.log('Prisma Client not found, attempting to generate...');
try {
const { execSync } = require('child_process');
execSync('npx prisma generate', { stdio: 'inherit' });
console.log('Prisma Client generated.');
} catch (error) {
console.error('Error generating Prisma Client:', error);
process.exit(1);
}
}
// Create the server instance
const server = createPrismaMcpServer({
// Optional: Override default server info if needed
// name: "MyCustomServerName",
// version: "2.0.0",
// instructions: "Custom instructions..."
});
console.log(`Starting Prisma MCP Server...`);
// Determine transport options based on environment variables
const transportType = process.env.TRANSPORT_TYPE === 'sse' ? 'sse' : 'stdio';
const port = parseInt(process.env.PORT || "8080");
const sseEndpoint = "/sse"; // Assuming hardcoded endpoint
const startOptions: any = { transportType }; // Use 'any' temporarily if exact type is complex
if (transportType === 'sse') {
startOptions.sse = { endpoint: sseEndpoint, port: port };
}
// Start the server using the options derived from environment variables
server.start(startOptions);
console.log(`Server started with transport: ${transportType}`);
if (transportType === 'sse') {
console.log(`SSE endpoint available at http://localhost:${port}${sseEndpoint}`);
}
}
main().catch((e) => {
console.error(e);
process.exit(1);
});
これで、設定したトランスポート方式(stdio または /sse エンドポイント)を使用して、実行中のサーバーに MCP クライアントを接続できます。
Claude Desktop との接続
Claude Desktop(または同様の MCP クライアント)は、stdio または sse のトランスポート方式を使ってこのサーバーに接続できます。
-
トランスポートの設定:
- サーバーを起動する前に、利用側プロジェクトの環境(
.envファイルやシステム環境など)でTRANSPORT_TYPE環境変数を設定します。TRANSPORT_TYPE=stdio(デフォルト):サーバーは標準入力と標準出力を介して通信します。TRANSPORT_TYPE=sse:サーバーは Server-Sent Events 用の HTTP サーバーを起動します。
sseを使用する場合は、PORT環境変数も設定できます(デフォルトは8080です)。
- サーバーを起動する前に、利用側プロジェクトの環境(
-
サーバーの起動:
- 使用方法のセクションに示すように、
prisma-mcp-serverを作成して起動するコードを含む、利用側アプリケーションのエントリーポイント(例:node your-app-entrypoint.js)を実行します。
- 使用方法のセクションに示すように、
-
Claude Desktop への接続:
stdioを使用する場合: サーバープロセスを直接起動するように Claude Desktop を設定します。通常は、アプリケーションを起動するコマンド(例:node /path/to/your-app-entrypoint.js、または起動スクリプトがある場合はyarn start)を指定します。sseを使用する場合: HTTP エンドポイントに接続するように Claude Desktop を設定します。デフォルトの URL はhttp://localhost:8080/sseです。PORTを変更した場合は、それに合わせて調整してください。
-
サーバーの識別:
- Claude Desktop でサーバーを識別する必要がある場合があります。デフォルト名は
PrismaAPI_Server(バージョン1.1.0)ですが、createPrismaMcpServerの呼び出し時に変更できます。
- Claude Desktop でサーバーを識別する必要がある場合があります。デフォルト名は
Claude Desktop 用 mcp.json の設定例:
-
stdioを使用する場合:{ "mcpServers": { "prisma_api_stdio": { "name": "Prisma API Server (stdio)", // 任意の表示名 // オプション 1:スクリプト名/パッケージ名を使って npx を使用 "command": "npx", "args": [ "cadcamfun-db-mcp-server" // 実際のスクリプト名/パッケージ名に置き換えてください ], // オプション 2:yarn/npm の実行スクリプトを使用 // "command": "yarn", // "args": ["start:prisma-mcp"], // 'start:prisma-mcp' という名前のスクリプトがあることを前提としています "workingDirectory": "" // 利用側プロジェクトのルートへのパスに置き換えてください } } } -
sseを使用する場合:{ "mcpServers": { "prisma_api_sse": { "name": "Prisma API Server (SSE)", // 任意の表示名 // サーバーが起動しており、ポート 8080(デフォルト)で待ち受けていることを前提としています // サーバー起動時に PORT 環境変数でポートを変更できます。 "url": "http://localhost:8080/sse" } } }
新しい MCP サーバー接続を追加して設定する具体的な手順については、お使いの MCP クライアントのドキュメントを参照してください。
利用可能なリソースとツール
このサーバーは、内部スキーマ(パッケージ内の prisma/schema.prisma。ただし、利用側のプロジェクトで生成されたクライアントを使用します)で定義された Prisma モデルに対応する MCP リソースとツールを公開します。
リソース(例):
resource://usersresource://users/{user_id}resource://projectsresource://projects/{project_id}resource://drawings?project_id={project_id}resource://drawings/{drawing_id}resource://components?project_id={project_id}resource://components/{component_id}resource://materialsresource://materials/{material_id}resource://toolsresource://tools/{tool_id}resource://machine-configsresource://machine-configs/{machine_config_id}resource://toolpaths?project_id={project_id}resource://toolpaths/{toolpath_id}resource://library-itemsresource://library-items/{library_item_id}
(一覧と引数の詳細については、src/resources.ts を参照してください)
ツール(例):
create_user、update_user、delete_usercreate_subscription、update_subscription、delete_subscriptioncreate_organization、update_organization、delete_organizationcreate_project、update_project、delete_projectcreate_drawing、update_drawing、delete_drawingcreate_component、update_component、delete_componentcreate_material、update_material、delete_materialcreate_tool_prisma、update_tool_prisma、delete_tool_prismacreate_machine_config、update_machine_config、delete_machine_configcreate_toolpath、update_toolpath、delete_toolpathcreate_library_item、update_library_item、delete_library_itemtrigger_main_app_notification(カスタムツールの例)
(Zod を使用して定義された一覧とパラメーターの詳細については、src/tools.ts を参照してください)
拡張
このパッケージをフォークするか、ベースとして使用し、src/resources.ts と src/tools.ts を変更して独自のカスタムリソースとツールを追加できます。変更後は、忘れずに再ビルド(yarn build)してください。
デプロイ
- データベースの設定: 本番環境の
DATABASE_URL環境変数が、デプロイ環境(サーバーの環境変数、シークレットマネージャーなど)で正しく設定されていることを確認してください。これをリポジトリにコミットしないでください。 - 環境変数: デプロイ環境で
TRANSPORT_TYPE(sseまたはstdio)を設定し、必要に応じてPORTとMAIN_APP_URLも設定してください。 - ビルドと実行:
# プロジェクトディレクトリ(prisma-mcp-server が依存関係に含まれている場所)に移動します # 依存関係をインストールします yarn install --production # または npm install --omit=dev # Prisma Client を生成します(重要!DATABASE_URL が必要です) npx prisma generate # マイグレーションを適用します(DATABASE_URL が必要です。使用する方針に合わせて置き換えてください) # 例: # npx prisma migrate deploy # アプリケーション(サーバーコードを含む)をビルドします yarn build # または使用するビルドコマンド # アプリケーション(MCP サーバーを起動します)を起動します # 本番環境では pm2 などのプロセスマネージャーを使用してください # 例: # pm2 start your-app-entrypoint.js # または # node your-app-entrypoint.js
ライセンス
[MIT]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。