MCP Database Server について
MCP Database Server は、SQLite、PostgreSQL、Microsoft SQL Server、MongoDB に接続して操作するための MCP サーバーです。SSE と STDIO の 2 つのモードで動作し、接続設定は環境変数で行います。
主な機能
- 01SQLite、PostgreSQL、SQL Server、MongoDB に対応
- 02SSE と STDIO の 2 つの動作モード
- 03環境変数によるデータベース接続設定
- 04クエリ実行、更新、スキーマ参照
活用シーン
- 01Claude Desktop からのデータベース照会と分析
- 02自然言語によるテーブル構造の探索
- 03MCP クライアントからの追加、更新、削除操作
MCP 対応
MCP サーバーとして、connect-database、execute-query、execute-update の各ツールと、データベーススキーマおよびテーブル一覧のリソースを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-dbsMCP_MSSQL_SERVERMCP_MSSQL_PORTMCP_MSSQL_DATABASEMCP_MSSQL_USERMCP_MSSQL_PASSWORDシークレットMCP_MSSQL_ENCRYPTMCP_MSSQL_TRUST_SERVER_CERTIFICATEMCP_MONGODB_URIMCP_MONGODB_DATABASEローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Database Server
さまざまなデータベースシステムに接続し、操作するための Model Context Protocol(MCP)実装です。
対応データベース
- SQLite
- PostgreSQL
- Microsoft SQL Server
- MongoDB
インストール
npm install -g mcp-dbs
使用方法
MCP Database Server は、次の 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 Desktop との統合
Claude の設定ファイルに mcp-dbs を追加すると、Claude Desktop と統合できます。
設定手順
- Claude Desktop の設定ファイルを開くか、新規作成します
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"
}
}
}
}
環境変数を、ご自身のデータベース接続情報に置き換えてください。
注意事項
commandはnodeにしてくださいargsには、mcp-dbs のインストール先にある cli.js ファイルの絶対パスを指定してください- データベースの種類に応じた環境変数を設定してください(下記の環境変数のセクションを参照)
- 対応するすべてのデータベース(SQLite、PostgreSQL、SQL Server、MongoDB)で環境変数を使用できます
Claude での使用
設定が完了すると、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 Server
# 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"
MongoDB
# 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 ツールを公開します。
connect-database
データベースに接続します。
パラメーター:
connectionId:接続を識別する一意の IDtype:データベースの種類(sqlite、postgres、mssql、または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"
}
disconnect-database
データベースから切断します。
パラメーター:
connectionId:切断する接続の ID
execute-query
結果を返すクエリを実行します。
パラメーター:
connectionId:接続 IDquery: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 の例(生のコマンド):
{
"connectionId": "my-mongodb-db",
"query": "{\"find\": \"users\", \"filter\": {\"age\": {\"$gt\": 21}}}"
}
execute-update
結果を返さないクエリ(INSERT、UPDATE、DELETE)を実行します。
パラメーター:
connectionId:接続 IDquery: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 の例(生のコマンド):
{
"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 コードをスキャンするか、こちらをクリックして、このプロジェクトの開発をご支援ください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
