OmniSQL MCP
OmniSQL MCP
ユニバーサルデータベース MCP サーバー — ローカルの DB クライアントワークスペースに保存済みの接続を使用して、AI アシスタントにデータベースへの読み取り/書き込みアクセスを提供します(DBeaver 互換)。
これは srthkdev/omnisql-mcp のフォークで、SSH トンネル / ジャンプホストサポートを追加しています。npm には公開されていません — このリポジトリからビルドしてください(インストール を参照)。
対応データベース
ネイティブ対応(ダイレクトドライバ、高速):
PostgreSQL(
pg経由)MySQL / MariaDB(
mysql2経由)SQL Server / MSSQL(
mssql経由)SQLite(
sqlite3CLI 経由)Trino / Presto(
trino-client経由)
Postgres 互換(pg ドライバ経由で自動的にルーティング):
CockroachDB、TimescaleDB、Amazon Redshift、YugabyteDB、AlloyDB、Supabase、Neon、Citus
その他のデータベース: OMNISQL_CLI_PATH で設定された外部 CLI にフォールバックします。結果は CLI によって異なります。
Related MCP server: DBHub
機能
ローカルの DB クライアントワークスペースで設定済みの接続を再利用 — 重複設定は不要
SSH トンネル / ジャンプホストの自動サポート: 接続に設定されているものと同じ SSH トンネルおよびゲートウェイ/ジャンプホストプロファイルを介して透過的に接続します(チェーンされたジャンプサーバーを含む)。別途トンネルを設定する必要はありません
PostgreSQL、MySQL/MariaDB、SQLite、SQL Server、Trino/Presto 向けのネイティブクエリ実行
設定可能なプールサイズとタイムアウトを備えたコネクションプーリング(SQLite と Trino/Presto はクエリごとに接続を持たないため、プーリングは適用されません)
トランザクションサポート(BEGIN/COMMIT/ROLLBACK)
クエリ実行プランの分析(EXPLAIN)
マイグレーションスクリプト生成を伴う接続間のスキーマ比較
execute_queryで SELECT のみを強制する読み取り専用モードアクセス可能なデータベースを制限する接続ホワイトリスト
特定の操作を無効化するツールフィルタリング
危険な操作(DROP DATABASE、TRUNCATE、WHERE なしの DELETE/UPDATE)をブロックするクエリ検証
CSV/JSON へのデータエクスポート
コネクションプールのクリーンアップを伴うグレースフルシャットダウン
必要条件
Node.js 18+
接続が 1 つ以上設定されているローカル DB クライアント(DBeaver 互換)
インストール
このフォークは npm に公開されていません — ソースからビルドしてください:
git clone https://github.com/sangameshBB/omnisql-mcp.git
cd omnisql-mcp
npm install
npm run build次に、ビルド済みサーバーをリンクして、omnisql-mcp コマンドがそれを指すようにします:
npm install -g .
npm install -g omnisql-mcpを単独で実行しないでください。 それを行うと npm レジストリから元のアップストリームパッケージがインストールされますが、それには SSH トンネル / ジャンプホストサポートはありません。このリポジトリをクローンしてローカルでビルドし、上記のようにクローンしたフォルダ内でnpm install -g .を実行してください。
設定
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json に追加します(macOS):
{
"mcpServers": {
"omnisql": {
"command": "omnisql-mcp"
}
}
}Claude Code
~/.claude/settings.json に追加します:
{
"mcpServers": {
"omnisql": {
"command": "omnisql-mcp"
}
}
}Cursor
Cursor の設定 > MCP サーバー に追加します:
{
"mcpServers": {
"omnisql": {
"command": "omnisql-mcp"
}
}
}グローバルインストールなしの場合
npm install -g . を実行したくない場合は、代わりに MCP クライアントからビルド済みエントリポイントを直接指定してください:
{
"mcpServers": {
"omnisql": {
"command": "node",
"args": ["/absolute/path/to/omnisql-mcp/dist/index.js"]
}
}
}環境変数
変数 | 説明 | デフォルト |
| 外部 DB クライアント CLI へのパス(未対応ドライバのフォールバックに使用) | 未設定 |
| ローカル DB クライアントのワークスペースディレクトリへのパス | OS デフォルト |
| クエリタイムアウト(ms) |
|
| デバッグログを有効にする |
|
| すべての書き込み操作を無効にする |
|
| 接続 ID または名前のカンマ区切りホワイトリスト | すべて |
| 無効化するツールのカンマ区切りリスト | なし |
| プールごとの最小接続数 |
|
| プールごとの最大接続数 |
|
| アイドル接続タイムアウト(ms) |
|
| 接続取得タイムアウト(ms) |
|
| ワークスペースから読み取れない場合のフォールバック SSH パスワード | 未設定 |
| フォールバック用 SSH 秘密鍵パスフレーズ | 未設定 |
| フォールバック用 SSH 秘密鍵ファイルのパス | 未設定 |
読み取り専用モード
すべての書き込み操作をブロックします。execute_query ツールは SELECT、EXPLAIN、SHOW、DESCRIBE ステートメントのみを許可します。トランザクションツールは完全に無効化されます。
{
"mcpServers": {
"omnisql": {
"command": "omnisql-mcp",
"env": {
"OMNISQL_READ_ONLY": "true"
}
}
}
}接続ホワイトリスト
表示されるワークスペース接続を制限します。接続 ID または表示名をカンマ区切りで受け付けます:
{
"mcpServers": {
"omnisql": {
"command": "omnisql-mcp",
"env": {
"OMNISQL_ALLOWED_CONNECTIONS": "dev-postgres,staging-mysql"
}
}
}
}特定のツールの無効化
{
"mcpServers": {
"omnisql": {
"command": "omnisql-mcp",
"env": {
"OMNISQL_DISABLED_TOOLS": "drop_table,alter_table,write_query"
}
}
}
}利用可能なツール
接続管理
list_connections- すべてのデータベース接続を一覧表示get_connection_info- 接続の詳細を取得test_connection- 接続性をテスト
データ操作
execute_query- 読み取り専用クエリを実行(SELECT、EXPLAIN、SHOW、DESCRIBE のみ)write_query- INSERT/UPDATE/DELETE を実行export_data- CSV/JSON にエクスポート
スキーマ管理
list_tables- テーブルとビューを一覧表示get_table_schema- テーブル構造を取得create_table- テーブルを作成alter_table- テーブルを変更drop_table- テーブルを削除(確認が必要)
トランザクション
begin_transaction- 新しいトランザクションを開始execute_in_transaction- トランザクション内でクエリを実行commit_transaction- トランザクションをコミットrollback_transaction- トランザクションをロールバック
クエリ分析
explain_query- クエリ実行プランを分析compare_schemas- 2 つの接続間でスキーマを比較get_pool_stats- コネクションプールの統計情報を取得
SSH トンネル / ジャンプホスト
get_ssh_tunnel_info- 接続に関連付けられた SSH トンネル / ジャンプホストプロファイルを確認(マスク表示、秘密情報は含まれません)
その他
get_database_stats- データベースの統計情報append_insight- 分析ノートを保存list_insights- 保存されたノートを取得
セキュリティ
読み取り専用の強制:
execute_queryは読み取り専用ステートメント(SELECT、EXPLAIN、SHOW、DESCRIBE、PRAGMA)のみを受け付けます。書き込み操作はwrite_queryを使用する必要があります。クエリ検証: DROP DATABASE、DROP SCHEMA、TRUNCATE、WHERE なしの DELETE/UPDATE、GRANT、REVOKE、およびユーザー管理ステートメントをブロックします。
接続ホワイトリスト:
OMNISQL_ALLOWED_CONNECTIONSを使用して公開される接続を制限します。ツールフィルタリング:
OMNISQL_DISABLED_TOOLSを使用して任意のツールを無効化できます。入力サニタイズ: 接続 ID と SQL 識別子はインジェクションを防ぐためにサニタイズされます。
推奨事項: 本番環境では、多層防御としてデータベースレベルの読み取り専用ユーザーも使用してください。
ワークスペース形式のサポート
DBeaver 互換 DB クライアントが書き込む両方の構成形式をサポートします:
レガシー:
.metadata/.plugins/org.jkiss.dbeaver.core/内の XML 構成モダン:
General/.dbeaver/内の JSON 構成
認証情報はワークスペースの credentials-config.json から自動的に復号化されます。
SSH トンネル / ジャンプホストのサポート
接続に SSH トンネル(ネットワークハンドラ)が DB クライアントで設定されている場合 — 1 つ以上のチェーンされたジャンプサーバー / ゲートウェイホストを含む — すべてのネイティブクエリ、test_connection、トランザクション、およびプールされた接続は、そのトンネルを介して透過的にルーティングされます。別途トンネルを設定する必要はありません。サーバーは、DB クライアントが使用するのと同じ SSH ホップチェーンを通じてローカルポートフォワードを開き、ネイティブドライバ(pg、mysql2、mssql)をそのローカルエンドポイントに接続します。
ホップごとのパスワード認証、公開鍵認証、SSH エージェント認証をサポート
チェーンされたジャンプサーバーをサポート(
localhost -> jump host(s) -> final SSH host -> database)トンネルは接続ごとに 1 回開かれ、複数のクエリ間で再利用されます。シャットダウン時に閉じられます
get_ssh_tunnel_infoを使用すると、秘密情報を公開せずに接続のトンネル/ジャンプホストプロファイル(ホスト、ポート、認証タイプ、ジャンプサーバー数)を確認できますパスワードまたは鍵パスフレーズをワークスペースの暗号化された認証情報ストアから復元できない場合は、フォールバックとして
OMNISQL_SSH_PASSWORD、OMNISQL_SSH_PASSPHRASE、またはOMNISQL_SSH_PRIVATE_KEY_PATHを設定してください
Trino / Presto のサポート
Trino 接続は、接続用に保存済みの同じホスト/ユーザー/パスワードを使用して HTTPS/HTTP(Basic 認証)で動作します。Trino 固有の注意点をいくつか示します:
カタログ/スキーマはオプションです。 接続にデフォルトのカタログ/スキーマが設定されていない場合(DBeaver で複数のカタログを参照する際によくあります)、クエリはテーブルを
catalog.schema.tableとして完全修飾する必要があります。list_tablesとget_table_schemaは設計上カタログに依存しません(system.jdbc.tables/system.jdbc.columns経由)。そのためデフォルトカタログなしでも動作します。ただし、大規模なマルチカタログクラスターではすべてのカタログにわたってメタデータをスキャンするため、低速になる可能性があり、同じテーブル名が複数のカタログ/スキーマに存在する場合は重複行が返されることがあります。高速で曖昧さのない検索には、代わりにDESCRIBE catalog.schema.tableを指定したexecute_queryを使用してください。SSH トンネリング(上記)は、Trino 接続でも他のドライバと同様に機能します。
このサーバーでは Trino に永続的なセッション/トランザクションモデルはありません —
begin_transactionとコネクションプーリングは Trino 接続では利用できません(SQLite と同じです)。
開発
git clone https://github.com/sangameshBB/omnisql-mcp.git
cd omnisql-mcp
npm install
npm run build
npm test
npm run lintライセンス
MIT
Maintenance
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables connecting to and querying multiple database types (PostgreSQL, MySQL, SQLite) through a unified interface. Supports managing multiple concurrent database connections with connection pooling and SQL query execution through MCP tools.528MIT
- AlicenseNot gradedqualityNot gradedmaintenanceA universal database gateway MCP server that enables AI assistants to connect to and query multiple databases (PostgreSQL, MySQL, MariaDB, SQL Server, SQLite) with support for schema exploration, SQL execution, and secure connections via SSH tunnels.14
- AlicenseNot gradedqualityDmaintenanceProvides universal database operations for AI assistants through MCP, supporting 40+ databases including PostgreSQL, MySQL, MongoDB, Redis, and SQLite with built-in introspection tools for schema exploration.29MIT
- AlicenseNot gradedqualityDmaintenanceEnables SQL agents to connect to any SQLAlchemy-supported database via MCP, providing read-only SQL querying, automatic table summarization, and column content search.4Apache 2.0
Related MCP Connectors
GibsonAI MCP server: manage your databases with natural language
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sangamkotalwar/omnisql-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server