mcp-dbs

by cuongtl1992
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides a way for users to support the project through Buy Me A Coffee donations, with a QR code and direct link included in the README.

  • Enables connection to PostgreSQL databases, with support for querying, schema exploration, and data operations through environment variable configuration.

  • Provides tools for connecting to SQLite databases, executing queries, and managing database schema with options for automatic database creation.

MCP データベース サーバー

さまざまなデータベース システムに接続して操作するためのモデル コンテキスト プロトコル (MCP) 実装。

サポートされているデータベース

  • SQLite
  • PostgreSQL
  • マイクロソフトSQLサーバー
  • モンゴDB

インストール

npm install -g mcp-dbs

使用法

MCP データベース サーバーは、次の 2 つのモードで使用できます。

SSEモード(デフォルト)

デフォルトでは、サーバーはポート 3001 で SSE (Server-Sent Events) モードで実行されます。

npx mcp-dbs

これによりhttp://localhost:3001/mcpに SSE エンドポイントを持つ HTTP サーバーが起動します。

カスタムポート

--portオプションを使用してカスタム ポートを指定できます。

npx mcp-dbs --port 8080

STDIOモード

標準入出力を介して通信するツールの場合は、 --stdioオプションを使用できます。

npx mcp-dbs --stdio

クロードデスクトップ統合

Claude 構成ファイルに mcp-dbs を追加することで、Claude Desktop と統合できます。

設定手順

  1. Claude Desktop 構成ファイルを開くか作成します
  2. mcpServersセクションに mcp-dbs 構成を追加します。
{ "mcpServers": { "mcp-dbs": { "command": "node", "args": [ "/path/to/your/mcp-dbs/dist/cli.js", "--stdio" ], "env": { "MCP_MONGODB_URI": "mongodb://localhost:27017", "MCP_MONGODB_DATABASE": "your-database-name" } } } }

環境変数を独自のデータベース接続詳細に置き換えます。

注記

  • commandnode
  • argsには、mcp-dbs インストール内の cli.js ファイルへの絶対パスを指定します。
  • データベースの種類に応じて適切な環境変数を設定します(以下の環境変数のセクションを参照)。
  • サポートされているデータベース(SQLite、PostgreSQL、SQL Server、MongoDB)のいずれかに環境変数を使用できます。

クロードと一緒に使う

設定が完了すると、Claude は以下に説明する MCP ツールを使用してデータベースにアクセスできるようになります。Claude に以下の操作を依頼できます。

  • データベースに接続する
  • クエリを実行して結果を取得する
  • データベーススキーマを調べる
  • テーブルとデータの操作

ツール

  • connect-database : データベースに接続する
  • disconnect-database : データベースから切断する
  • execute-query : クエリを実行して結果を返す
  • execute-update : 結果を返さずにクエリを実行する

リソース

  • database-schema : 完全なデータベーススキーマを取得する
  • table-schema : 特定のテーブルのスキーマを取得する
  • tables-list : すべてのテーブルのリストを取得する

環境変数を使用して設定する

環境変数を使用してデータベース接続を構成できます。

SQLite

# Set these environment variables before connecting export MCP_SQLITE_FILENAME="path/to/database.db" export MCP_SQLITE_CREATE_IF_NOT_EXISTS="true"

PostgreSQL

# Set these environment variables before connecting export MCP_POSTGRES_HOST="your-postgres-host" export MCP_POSTGRES_PORT="5432" export MCP_POSTGRES_DATABASE="your-database-name" export MCP_POSTGRES_USER="your-username" export MCP_POSTGRES_PASSWORD="your-password" export MCP_POSTGRES_SSL="false"

SQL サーバー

# Set these environment variables before connecting export MCP_MSSQL_SERVER="your-server-address" export MCP_MSSQL_PORT="1433" export MCP_MSSQL_DATABASE="your-database-name" export MCP_MSSQL_USER="your-username" export MCP_MSSQL_PASSWORD="your-password" export MCP_MSSQL_ENCRYPT="true" export MCP_MSSQL_TRUST_SERVER_CERTIFICATE="true"

モンゴDB

# Set these environment variables before connecting export MCP_MONGODB_URI="mongodb://localhost:27017" export MCP_MONGODB_DATABASE="your-database-name" export MCP_MONGODB_MAX_POOL_SIZE="10" export MCP_MONGODB_USE_UNIFIED_TOPOLOGY="true"

これらの環境変数は、connect-database ツールに渡されるすべての構成よりも優先されます。

MCPツール

サーバーは次の MCP ツールを公開します。

データベース接続

データベースに接続します。

パラメータ:

  • connectionId : 接続の一意の識別子
  • type : データベースの種類 ( sqlitepostgresmssql 、またはmongodb )

SQLite の例:

{ "connectionId": "my-sqlite-db", "type": "sqlite" }

PostgreSQLの例:

{ "connectionId": "my-postgres-db", "type": "postgres" }

SQL Server の例:

{ "connectionId": "my-mssql-db", "type": "mssql" }

MongoDB の例:

{ "connectionId": "my-mongodb-db", "type": "mongodb" }

データベースを切断する

データベースから切断します。

パラメータ:

  • connectionId : 切断する接続ID

クエリ実行

結果を返すクエリを実行します。

パラメータ:

  • connectionId : 接続ID
  • query : SQLクエリまたはMongoDB集計パイプライン(JSON文字列として)
  • params : (オプション) クエリのパラメータの配列。MongoDBの場合、最初のパラメータはコレクション名です。

SQLの例:

{ "connectionId": "my-postgres-db", "query": "SELECT * FROM users WHERE age > $1", "params": [21] }

MongoDB の例:

{ "connectionId": "my-mongodb-db", "query": "[{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]", "params": ["users"] }

MongoDB の例 (埋め込みコレクションを含む新しい形式):

{ "connectionId": "my-mongodb-db", "query": "{\"collection\": \"users\", \"pipeline\": [{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]}" }

MongoDB の例 (シェル構文):

{ "connectionId": "my-mongodb-db", "query": "db.getCollection('users').find({\"age\": {\"$gt\": 21}})" }

MongoDB の例 (直接コレクション参照シェル構文):

{ "connectionId": "my-mongodb-db", "query": "db.users.find({\"age\": {\"$gt\": 21}})" }

MongoDB の例 (raw コマンド):

{ "connectionId": "my-mongodb-db", "query": "{\"find\": \"users\", \"filter\": {\"age\": {\"$gt\": 21}}}" }

更新実行

結果を返さないクエリ (INSERT、UPDATE、DELETE) を実行します。

パラメータ:

  • connectionId : 接続ID
  • query : SQLクエリまたはMongoDBコマンド(JSON文字列として)
  • params : (オプション) クエリのパラメータの配列。MongoDBの場合、最初のパラメータはコレクション名です。

SQLの例:

{ "connectionId": "my-postgres-db", "query": "INSERT INTO users (name, age) VALUES ($1, $2)", "params": ["John Doe", 30] }

MongoDB の例:

{ "connectionId": "my-mongodb-db", "query": "{\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}", "params": ["users"] }

MongoDB の例 (埋め込みコレクションを含む新しい形式):

{ "connectionId": "my-mongodb-db", "query": "{\"collection\": \"users\", \"operation\": {\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}}" }

MongoDB の例 (シェル構文):

{ "connectionId": "my-mongodb-db", "query": "db.getCollection('users').insertOne({\"name\": \"John Doe\", \"age\": 30})" }

MongoDB の例 (直接コレクション参照シェル構文):

{ "connectionId": "my-mongodb-db", "query": "db.users.insertOne({\"name\": \"John Doe\", \"age\": 30})" }

MongoDB の例 (raw コマンド):

{ "connectionId": "my-mongodb-db", "query": "{\"insert\": \"users\", \"documents\": [{\"name\": \"John Doe\", \"age\": 30}]}" }

MCPリソース

サーバーは次の MCP リソースを公開します。

データベーススキーマ

URI: database://{connectionId}/schema

すべてのテーブルとその列を含む、データベースに関するスキーマ情報を返します。

テーブルスキーマ

URI: database://{connectionId}/tables/{tableName}

特定のテーブルに関するスキーマ情報(その列を含む)を返します。

テーブルリスト

URI: database://{connectionId}/tables

データベース内のすべてのテーブルのリストを返します。

発達

テスト

テストを実行します。

npm test

プロジェクトを支援する

このプロジェクトが役に立つと思ったら、私にコーヒーをご馳走していただけると嬉しいです。

このプロジェクトの開発をサポートするには、上記の QR コードをスキャンするか、ここをクリックしてください

ライセンス

マサチューセッツ工科大学

ID: tvpshb3f1n