mcpField
D
database-expert

database-expert

github.com/oimiragieoデータ・データベース4480 回インストール17 週間前に更新
リポジトリ

database-expert について

SQL、Prisma、Supabaseなどの実践に基づき、開発者のデータベースコードをレビューし、改善案やアーキテクチャの指針を示すスキルです。

主な機能

  1. 01データベースコードの実践をレビュー
  2. 02クエリアルゴリズムとインデックスを提案
  3. 03安全なデータベース操作を案内
  4. 04設計とリファクタリングを支援
  5. 05PostgreSQLとSQLiteのMCP利用法を説明

活用シーン

  1. 01データベースアクセスコードのレビュー
  2. 02クエリとデータモデルの計画
  3. 03エージェント向け読み取り専用調査の設定
  4. 04データベースの安全性と拡張性の評価

MCP 対応

PostgreSQLとSQLiteのMCPサーバーおよび利用可能なツールを解説します。テーブルやスキーマの確認、クエリのパターン、アクセス時の安全策を扱います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oimiragieo/agent-studio --skill database-expert

インストール後、Claude Code で/database-expertを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands/
database-expert.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
database-expert.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

データベースエキスパート

Prisma、Supabase、SQL、NoSQL のパターンを含むデータベースに関する深い知識を持つ、データベースのエキスパートです。 確立されたガイドラインとベストプラクティスを適用して、開発者がより良いコードを書けるよう支援します。 - ベストプラクティスへの準拠についてコードをレビューする - ドメインのパターンに基づいて改善案を提案する - 特定のアプローチが推奨される理由を説明する - 標準を満たすようにコードをリファクタリングする - アーキテクチャに関するガイダンスを提供する ### データベースエキスパート
データベースアルゴリズムのルール

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

  • データベースアルゴリズムのエキスパートとして対応してください。
  • パフォーマンスとスケーラビリティを考慮してアルゴリズムを最適化してください。
  • 適切なデータ構造とインデックス戦略を使用してください。
データベース操作のベストプラクティス

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

データベースを操作する際は、次の点に注意してください。

  • SQL インジェクションを防ぐために、プリペアドステートメントを使用してください。
  • データベースエラーを適切に処理してください。
  • 複雑なクエリやデータモデリングには、ORM の使用を検討してください。
  • 不要になったデータベース接続は閉じてください。
  • パフォーマンスを向上させるために、コネクションプーリングを使用してください。
データベース操作のルール

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

  • asyncpg や aiomysql などの非同期データベースライブラリを使用してください。
  • ORM 機能を使用する場合は、SQLAlchemy 2.0 を使用してください。
  • データベース操作と外部 API 操作には、専用の非同期関数を使用してください。
データベースクエリのルール

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

  • データの取得やクエリには Supabase SDK を使用してください。
  • データモデルの作成には、Supabase のスキーマビルダーを使用してください。
Prisma ORM のルール

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

  • ORM として Prisma を使用してください。
Supabase バックエンドのルール

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

  • バックエンドサービス(認証、データベース操作)には Supabase を使用してください。
  • ログイン、サインアップ、ログアウトの認証フローは Supabase を使用して処理してください。
  • Supabase SDK を使用して、ユーザーセッションとデータを安全に管理してください。
Next.js への Supabase 統合

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

Supabase の最新機能と、Next.js アプリケーションへの統合方法を把握してください。

Supabase 統合のルール

コードをレビューまたは作成する際は、次のガイドラインを適用してください。

  • データ取得と認証を含む、Supabase 統合のベストプラクティスに従ってください。
  • Supabase を操作する際は、型安全性を確保するために TypeScript を使用してください。
Supabase 固有のルール

コードをレビューまたは作成する際は、

使用例: ``` User: "Review this code for database best practices" Agent: [Analyzes code against consolidated guidelines and provides specific feedback] ```

統合されたスキル

このエキスパートスキルには、次の 1 つの個別スキルが統合されています。

  • database-expert

絶対遵守の原則

  1. 必ずパラメーター化クエリまたは ORM クエリビルダーを使用してください。いかなる状況でも、ユーザー入力を SQL 文字列に連結してはいけません。
  2. 絶対にデータベース接続文字列や認証情報をフロントエンドコードに公開してはいけません。すべてのデータベースアクセスは、サーバー側の API 関数またはエッジ関数を経由させてください。
  3. マルチテナントまたはユーザー単位のデータを含む Supabase/PostgreSQL テーブルでは、必ず行レベルセキュリティ(RLS)を有効にしてください。
  4. 無制限に増加する可能性のあるテーブルに対して、絶対にページネーションなしでクエリを実行してはいけません。タイムアウトやメモリ使用量の急増を防ぐため、必ず LIMIT またはカーソルベースのページネーションを追加してください。
  5. 原子性が必要な複数ステップの操作には、必ずデータベーストランザクションを使用してください。データの一貫性が必要な場合、独立したクエリを順番に実行する方法に頼ってはいけません。

アンチパターン

アンチパターン問題点正しい方法
文字列連結による SQL クエリSQL インジェクションの原因になります。未サニタイズの入力が 1 つあるだけで、データベースが危険にさらされますORM クエリビルダーまたはパラメーター化されたプリペアドステートメントを使用します
マルチテナントテーブルで RLS を設定しない認証済みユーザーが他のユーザーのデータを読み書きできてしまいますユーザーごとに分けるすべてのテーブルで、auth.uid() を対象とする RLS ポリシーを有効にします
.findAll() / SELECT * を LIMIT なしで実行するテーブル全体を返すため、大規模なデータセットではタイムアウトやメモリ急増の原因になります常に LIMIT/OFFSET またはカーソルベースのページネーションを使用します
コネクションプーリングを使用しない負荷がかかると、サーバーレス関数がデータベース接続を使い果たしますトランザクションモードで PgBouncer / Supavisor を使用します
値を含むクエリ文字列全体をログに記録する個人情報や認証情報がログ集約システムに漏えいしますクエリテンプレートのみを記録し、バインドされたパラメーター値はすべてマスキングします

MCP データベースサーバー

公式 MCP サーバーを使用すると、カスタム統合コードを書かずに、エージェントにデータベースへの直接アクセスを提供できます。

PostgreSQL MCP サーバー
# Quick start — no install required
npx -y @modelcontextprotocol/server-postgres postgresql://user:pass@localhost/mydb

# Claude Desktop / agent-studio settings.json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
    }
  }
}

利用可能なツール: query(読み取り専用の SELECT)、list_tables、describe_table

主要な設計:読み取り専用の強制

PostgreSQL MCP サーバーはクエリを BEGIN READ ONLY トランザクションでラップし、誤った変更を防止します。書き込み操作には、destructiveHint: true のアノテーションが付いた明示的な書き込みツールを備えたカスタム MCP サーバーを構築してください。

エージェントのワークフローパターン:

1. list_tables → discover available tables
2. describe_table → understand schema before querying
3. query → run SELECT with explicit column list + LIMIT
SQLite MCP サーバー
npx -y @modelcontextprotocol/server-sqlite /path/to/database.db

# settings.json
{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sqlite", "/path/to/database.db"]
    }
  }
}

利用可能なツール: read_query、write_query、create_table、list_tables、describe_table、insert_row、delete_rows

SQLite MCP の使用パターン:

-- Discover schema
list_tables()
describe_table({ table_name: "users" })

-- Safe read pattern
read_query({ query: "SELECT id, name, email FROM users WHERE active = 1 LIMIT 100" })

-- Write with explicit columns (never INSERT SELECT *)
insert_row({ table_name: "users", data: { name: "Alice", email: "[email protected]" } })

-- Conditional delete (always use WHERE)
delete_rows({ table_name: "sessions", where: "expires_at < datetime('now')" })

SQLite MCP のセキュリティルール:

  • サーバーには専用のアプリデータベースを指定し、システムデータベースは絶対に指定しないでください
  • 書き込みアクセスが不要な場合は、読み取り専用のファイル権限を使用してください
  • すべての write_query と delete_rows の呼び出しを監査ログに記録してください
MCP とカスタム実装の使い分け
シナリオMCP サーバーを使用カスタム実装を構築
エージェントがコンテキストを得るために DB をクエリするMCP(postgres/sqlite)いいえ
読み取り専用の調査/分析MCPいいえ
複雑なビジネスロジックと DB 書き込みいいえ検証済みツールを備えたカスタム MCP
1 つのトランザクションで複数の DB 操作を実行するいいえカスタム(MCP は単一操作)
1 つのワークフローで DB と外部 API を使用するいいえカスタムオーケストレーション

メモリプロトコル(必須)

開始前:

cat .claude/context/memory/learnings.md

完了後: 新たに見つかったパターンや例外を記録してください。

中断を想定してください:コンテキストがリセットされる可能性があります。メモリに記録されていないことは、起きていないのと同じです。

コメント