Database Manager
БесплатноНе проверенSelf-documenting MCP server enabling AI agents to autonomously create, manage, and query SQLite databases with enforced metadata requirements for discoverabilit
Описание
Self-documenting MCP server enabling AI agents to autonomously create, manage, and query SQLite databases with enforced metadata requirements for discoverability.
README
AIエージェントが自律的にデータを蓄積・管理できる、セルフドキュメンティング型MCPサーバー
特徴
🤖 AIファースト設計
- 事前知識不要: AIエージェントがMCPに接続するだけで、使い方を完全に理解できる
- セルフドキュメンティング: 全ツールに詳細な日本語説明、使用例、エラーガイド付き
- メタデータ必須: データベース/テーブル/カラムすべてに説明が必須(5文字以上)
🧰 汎用DBオペレーション強化(v2)
- トランザクションAPI:
execute_transaction_toolで複数操作をアトミックに実行 - バルク挿入最適化:
bulk_insert_optimized_toolで大量データを高速に投入 - Prepared Statement管理:
prepare_statement_tool系列で繰り返しクエリを高速化 - バッチクエリ実行:
execute_batch_queries_toolで複数SELECTを一括処理 - DBメタ情報拡張:
get_database_info_toolがインデックス・外部キー・PRAGMAを返却
🔍 発見可能性
- 使い方ガイドツール:
get_usage_guide_toolで全体像を即座に把握 - 情報階層ツール: DB一覧 → DB詳細 → テーブル詳細と段階的に探索可能
- サンプルデータ表示: テーブル情報取得時に実データ3件を自動表示
🔒 安全性
- トランザクション管理(ロールバック対応)
- ファイルシステム隔離(
databases/ディレクトリ内のみ) - データベース削除時の2段階確認
クイックスタート
1. uvのインストール
まず、uvパッケージマネージャーをインストールします:
curl -LsSf https://astral.sh/uv/install.sh | sh
インストール後、シェルを再起動するか、以下のコマンドでPATHに追加します:
source $HOME/.local/bin/env
2. 依存関係のインストール
# プロジェクトディレクトリに移動
cd /path/to/mcp-agent-external-memory
# 依存関係のインストール
uv sync
3. MCP設定
Claude Desktopの場合
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"database-manager": {
"command": "/Users/your-username/.local/bin/uv",
"args": [
"--directory",
"/absolute/path/to/mcp-agent-external-memory",
"run",
"src/server.py"
]
}
}
}
重要:
/Users/your-username/.local/bin/uvをuvの実際のパスに置き換えてください(which uvで確認できます)/absolute/path/to/mcp-agent-external-memoryを実際のプロジェクトパスに置き換えてください
Cursorの場合
プロジェクトルートに.mcp.jsonまたは.cursor/mcp.jsonを作成:
{
"mcpServers": {
"database-manager": {
"command": "/Users/your-username/.local/bin/uv",
"args": [
"--directory",
"/absolute/path/to/mcp-agent-external-memory",
"run",
"src/server.py"
]
}
}
}
注意: Cursorの環境ではuvコマンドがPATHに含まれていない場合があるため、フルパスを指定することを推奨します。
4. 再起動
Claude DesktopまたはCursorを再起動して設定を反映させます。
AIエージェント向けガイド
Step 1: 使い方を理解する
MCPに接続したら、まず get_usage_guide_tool() を呼び出してください。このツール1つで、サーバーの全体像、スキーマ形式、ワークフロー、ベストプラクティスが分かります。
Step 2: 既存DBを確認する
list_databases_tool() でDB一覧を取得できます。各DBの目的、テーブル数、レコード数が表示されます。
Step 3: DB詳細を理解する
気になるDBがあれば、get_database_info_tool(database_name) で詳細を取得。データベースの説明、スキーマ情報、作成日時などが分かります。
Step 4: テーブル構造を把握する
get_table_info_tool(database_name, table_name) でテーブルの詳細を確認。各カラムの説明と実際のサンプルデータ(最大3件)が表示されます。
Step 5: 新規DBを作成する
メタデータ(説明文)を必ず含めて作成してください。スキーマ形式は get_usage_guide_tool() で確認できます。
create_database_tool(
database_name="book_collection",
schema={
"database_description": "個人の蔵書を管理するデータベース",
"tables": [{
"table_name": "books",
"table_description": "所有している書籍の情報を格納するテーブル",
"columns": [
{
"name": "id",
"type": "INTEGER",
"description": "書籍を一意に識別するID",
"constraints": "PRIMARY KEY AUTOINCREMENT"
},
{
"name": "title",
"type": "TEXT",
"description": "書籍のタイトル名",
"constraints": "NOT NULL"
}
]
}]
}
)
提供ツール(全18種)
| ツール名 | 用途 | 必須パラメータ |
|---|---|---|
get_usage_guide_tool |
使い方ガイドを取得 | なし |
list_databases_tool |
DB一覧を取得 | なし |
get_database_info_tool |
DB詳細情報・インデックス・PRAGMAを取得 | database_name |
get_table_info_tool |
テーブル詳細とサンプルデータを取得 | database_name, table_name |
create_database_tool |
新規DB作成(メタデータ必須) | database_name, schema |
create_table_from_csv_tool |
CSVから新規テーブル作成+一括インポート | database_name, table_name, csv_path, table_description, column_descriptions |
export_data_tool |
テーブル/DB全体をCSV/JSONにエクスポート | database_name, output_path, table_name(オプション), format(オプション) |
insert_data_tool |
データ挿入 | database_name, table_name, data |
query_data_tool |
SQL実行(SELECT/UPDATE/DELETE/ALTER等) | database_name, sql_query |
execute_transaction_tool |
複数操作をアトミックに実行 | database_name, operations |
bulk_insert_optimized_tool |
大量データをバッチ挿入 | database_name, table_name, records |
prepare_statement_tool |
Prepared Statementを作成 | database_name, statement_id, sql |
execute_prepared_tool |
Prepared Statementを実行 | database_name, statement_id, params |
close_prepared_tool |
Prepared Statementをクローズ | database_name, statement_id |
execute_batch_queries_tool |
複数クエリを一括実行 | database_name, queries |
store_markdown_to_record_tool |
Markdownファイルの内容をレコード・カラムに格納 | database_name, table_name, record_identifier, column_name, md_file_path |
get_schema_tool |
スキーマ取得(互換目的) | database_name, table_name |
delete_database_tool |
DB削除(2段階確認) | database_name, confirm |
メタデータ必須ポリシー
このサーバーでは、すべてのデータベース、テーブル、カラムに5文字以上の説明が必須です。これにより、1週間後や他のAIエージェントでも、DBの目的と構造を即座に理解できます。
必須項目
- ✅
database_description: データベースの目的(5文字以上) - ✅
table_description: テーブルの役割(5文字以上) - ✅
column.description: 各カラムの意味(5文字以上)
バリデーション
メタデータが不足している場合、詳細なエラーメッセージで修正方法を案内します。
使用例
シナリオ1: 蔵書管理
ユーザー: 「私の本をデータベースで管理したい」
AIの動作:
1. create_database_tool で book_collection を作成
2. insert_data_tool で書籍データを挿入
3. query_data_tool で「読了」した本を検索
4. 結果をユーザーに報告
シナリオ2: CSVファイルからテーブル作成
ユーザー: 「このCSVファイルをデータベースにインポートして」
AIの動作:
1. CSVファイルのヘッダー行を確認
2. 各カラムの説明文(5文字以上)を準備
3. create_table_from_csv_tool で新規テーブル作成+一括データ挿入
- データ型は自動推測(INTEGER, REAL, TEXT)
- PRIMARY KEYも指定可能
4. get_table_info_tool でインポート結果を確認
シナリオ3: 既存DBの再利用
ユーザー: 「1週間前に作ったDBに追加データを入れて」
AIの動作:
1. list_databases_tool でDB一覧確認
2. get_database_info_tool で目的のDBを特定
3. get_table_info_tool でスキーマ確認
4. insert_data_tool で新データ追加
検証結果
外部AIエージェント(Claude Sonnet 4.5)による検証テスト結果:
- ✅ 事前知識: ゼロ
- ✅ 所要時間: 8分
- ✅ 完了シナリオ: 4/4(全成功)
- ✅ 評価: 5点/5点(全項目満点)
- ✅ 推奨度: 強く推奨
主なフィードバック:
- "get_usage_guide_toolが秀逸。これ一つで全体像を完全に把握できた"
- "メタデータ必須設計により、後から見ても理解できる"
- "サンプルデータ表示が実用的。説明だけでなく実例で理解できる"
詳細: tests/validation/MCP_TEST_REQUEST_COMPLETED.md
新しいスモークテスト
tests/test_server.py を実行すると、トランザクション/バルク挿入/Prepared Statement/バッチクエリなど
v2で追加された汎用機能を含む包括的なスモークテストが走ります。
uv run python tests/test_server.py
全テストが成功すると、各機能の実行ログと結果がコンソールに表示されます。
ディレクトリ構成
mcp-agent-external-memory/
├── src/
│ ├── server.py # MCPサーバー(FastMCP)
│ └── db_operations.py # DB操作ロジック
├── tests/
│ ├── test_server.py # 単体テスト
│ └── validation/ # 外部検証テスト結果
│ ├── MCP_TEST_REQUEST.md
│ └── MCP_TEST_REQUEST_COMPLETED.md
├── databases/ # DBファイル保存先(.gitignore)
├── design/
│ └── 設計書.md
├── pyproject.toml
└── README.md
トラブルシューティング
MCPサーバーが起動しない
uvコマンドが見つからない(ENOENTエラー)
Cursorなどの環境では、uvコマンドがPATHに含まれていない場合があります。設定ファイルでuvのフルパスを指定してください:
{
"mcpServers": {
"database-manager": {
"command": "/Users/your-username/.local/bin/uv",
...
}
}
}
uvのパスを確認する方法:
# uvのインストール場所を確認
which uv
# または
echo $HOME/.local/bin/uv
# uvがインストールされていない場合は再インストール
curl -LsSf https://astral.sh/uv/install.sh | sh
その他の確認事項
# uvが正しくインストールされているか確認
uv --version
# 依存関係を再インストール
uv sync
# 設定ファイルのパスを確認(src/server.py を含める)
# MCPサーバーを直接実行してテスト
uv run src/server.py
スキーマ定義エラー
エラーメッセージに従って修正してください。よくあるエラー:
- メタデータが5文字未満
database_descriptionが未定義columns配列にdescriptionフィールドがない
get_usage_guide_tool() でスキーマ形式の例を確認できます。
データベースが見つからない
# すべてのDBを確認
list_databases_tool()
# 特定のDBの詳細を確認
get_database_info_tool(database_name="your_database")
ライブラリとして使用する
このパッケージはMCPサーバーとしてだけでなく、Pythonライブラリとしても使用できます。 他のMCPサーバーやPythonアプリケーションから直接インポートして使用できます。
インストール
# 開発モードでインストール(推奨)
pip install -e /path/to/mcp-agent-external-memory
# または、パッケージ化してから
cd /path/to/mcp-agent-external-memory
pip install .
基本的な使い方
from database_manager import (
create_database,
insert_data,
query_data,
get_database_info,
execute_transaction,
bulk_insert_optimized,
)
# データベース作成
create_database(
database_name="my_app",
schema={
"database_description": "アプリケーション用データベース",
"tables": [{
"table_name": "users",
"table_description": "ユーザー情報を格納",
"columns": [{
"name": "id",
"type": "INTEGER",
"description": "ユーザーID",
"constraints": "PRIMARY KEY AUTOINCREMENT"
}]
}]
}
)
# データ挿入
insert_data(
database_name="my_app",
table_name="users",
data={"name": "Alice", "email": "[email protected]"}
)
# クエリ実行
result = query_data(
database_name="my_app",
sql_query="SELECT * FROM users WHERE name = 'Alice'"
)
# トランザクション実行
execute_transaction(
database_name="my_app",
operations=[
{"type": "insert", "table_name": "users", "data": {...}},
{"type": "query", "sql": "UPDATE ...", "params": [...]}
]
)
データベースディレクトリの設定
環境変数 MCP_DB_DIR でデータベースファイルの保存先を変更できます:
export MCP_DB_DIR=/shared/databases
python your_app.py
デフォルトは databases/ ディレクトリ(パッケージルートからの相対パス)です。
他のMCPサーバーから使用する例
# umw-mcp/server.py など
from database_manager import insert_data
@mcp.tool()
def capture_page_tool(url: str) -> dict:
# Playwrightでページ取得
markdown = get_page_as_markdown(url)
# 共通DBに直接保存(LLM経由ではない)
result = insert_data(
database_name="umw_survey",
table_name="page_captures",
data={
"url": url,
"markdown": markdown,
"captured_at": datetime.now().isoformat()
}
)
return result
公開API一覧
以下の関数が公開されています:
create_database- データベース作成insert_data- データ挿入query_data- SQLクエリ実行get_table_schema- テーブルスキーマ取得get_table_info- テーブル詳細情報取得get_database_info- データベース詳細情報取得list_all_databases- データベース一覧取得delete_database- データベース削除create_table_from_csv- CSVからテーブル作成export_table_to_csv- テーブルをCSVにエクスポートexecute_transaction- トランザクション実行bulk_insert_optimized- バルク挿入最適化prepare_statement- Prepared Statement作成execute_prepared- Prepared Statement実行close_prepared- Prepared Statementクローズexecute_batch_queries- バッチクエリ実行
詳細は各関数のdocstringを参照してください。
技術スタック
- Python: 3.10+
- MCP Framework: FastMCP
- Database: SQLite
- Package Manager: uv
ライセンス
MIT License
Установка Database Manager
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/TskYmmt/mcp-agent-external-memoryFAQ
Database Manager MCP бесплатный?
Да, Database Manager MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Database Manager?
Нет, Database Manager работает без API-ключей и переменных окружения.
Database Manager — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Database Manager в Claude Desktop, Claude Code или Cursor?
Открой Database Manager на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
автор: wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
автор: madhurprashPostgres
Query your database in natural language
автор: AnthropicPostgreSQL
Read-only database access with schema inspection.
автор: modelcontextprotocolCompare Database Manager with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории data
