今すぐ試そう:5分でSQLiteに接続
MCPを理解する最短ルートは、実際に手を動かしてみることです。Claude Desktopをインストール済みであれば、コードを一行も書かずに任意のSQLite fileに接続できます。ターミナルで以下のコマンドを実行するだけです:
npx @modelcontextprotocol/server-sqlite --db-path ~/my_data.db
次に、Claude Desktopの設定ファイルを開きます。macOSでは ~/Library/Application Support/Claude/claude_desktop_config.json にあります。Windowsの場合は、 %APPDATA%\Claude\claude_desktop_config.json を探してください。以下の設定を追加します:
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "/path/to/your/database.db"]
}
}
}
Claudeを再起動すると、稲妻のアイコン(MCP)が表示されます。「データベース内のテーブルをリストアップして」と頼んでみてください。Claudeが自動的にSQLを実行し、即座に結果を返してくれます。
MCP Serverとは一体何か?
Anthropicは、AIの限界を打ち破るためのオープン標準としてModel Context Protocol (MCP) を発表しました。Claude 3.5 Sonnetを、密室に閉じ込められた天才の脳だと想像してみてください。MCPは、その脳をデータベース、Google Drive、Slackなどに直接接続するための「USBポート」のような役割を果たします。
以前は、データをCSVにエクスポートして手動でチャットにアップロードする必要がありました。この方法では毎回10〜15分かかるだけでなく、機密データの漏洩リスクもありました。MCPはこの状況を完全に変えます。AIがコンピュータの権限を借りて、リアルタイムかつ安全にデータをクエリできるようになります。
MCPのエコシステムは、主に以下の3つの要素で構成されています:
- MCP Client: AIとチャットする場所(Claude Desktopや各種IDEなど)。
- MCP Server: ツール(tools)やデータを提供する仲介プログラム。
- Local/Remote Data: PostgreSQL、MySQL、内部APIなどの実際のデータ保存場所。
Pythonで独自のMCP Serverを構築する
既存のサーバーは基本的なタスクしか処理できないことが多いです。実際には、独自のビジネスロジックを処理するために、自分でMCP Serverを書く必要があるでしょう。以下は、Pythonの mcp ライブラリを使用して注文検索ツールを作成する方法です。
ステップ1:環境の準備
データベース操作を容易にするために、MCPライブラリとSQLAlchemyをインストールします:
pip install mcp sqlalchemy
ステップ2:サーバーのコードを書く
db_server.py ファイルを作成します。Claudeが必要な時に顧客情報を自分で検索できるように、 query_orders 関数を定義します。
import sqlite3
from mcp.server.fastmcp import FastMCP
# 識別名でサーバーを初期化
mcp = FastMCP("OrderManager")
DB_PATH = "shop_data.db"
@mcp.tool()
def query_orders(customer_name: str) -> str:
"""顧客名に基づいて注文リストを検索します。"""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# セキュリティのためにパラメータ化クエリを使用
query = "SELECT id, product, amount FROM orders WHERE customer_name LIKE ?"
cursor.execute(query, (f"%{customer_name}%",))
results = cursor.fetchall()
conn.close()
if not results:
return "この顧客の注文は見つかりませんでした。"
return "\n".join([f"ID: {r[0]}, 商品: {r[1]}, 金額: {r[2]}" for r in results])
if __name__ == "__main__":
mcp.run()
ステップ3:Claudeに統合する
作成したPythonファイルを指すように claude_desktop_config.json を更新します:
{
"mcpServers": {
"my-custom-db": {
"command": "python",
"args": ["/absolute/path/to/db_server.py"]
}
}
}
AIをデータベースに接続する際の3つのセキュリティ原則
AIが誤って0.5秒で全データを削除( DROP TABLE など)してしまうのを防ぐため、私は常に以下の3つのルールを適用しています:
1. 読み取り専用(Read-Only)権限の徹底
絶対に root アカウントを使用しないでください。 SELECT 権限のみを持つ専用ユーザーを作成しましょう。これにより、たとえAIがあなたの意図を誤解したとしても、元のデータを変更することはできなくなります。
2. SQLインジェクションの防止
SQL文を生成するために文字列を直接結合しないでください。上記の例のように、常に ? (パラメータ化クエリ)を使用してください。AIを経由したユーザーからの入力にも、悪意のあるコードが含まれている可能性があります。
3. 返却データ量の制御
Claudeには一度に処理できるトークン数に制限があります。データベースに100万行のデータがある場合、すべてを返すとAIがフリーズしてしまいます。パフォーマンスを最適化するために、常にSQL文に LIMIT 20 などを追加しましょう。
実装における実践的なアドバイス
- デバッグ時の注意点: MCP Serverはバックグラウンドで動作するため、
print()は表示されません。エラーをファイルに記録するにはloggingライブラリを使用するか、mcp-inspectorを活用してください。 - Docstringへのこだわり: Claudeは説明文(例:
"""顧客名に基づいて注文リストを検索...""")に基づいて実行する関数を決定します。AIがツールを誤用しないよう、詳細な説明を記述しましょう。 - 複数ソースの組み合わせ: 複数のサーバーを同時に実行できます。Claudeはデータベースから価格を取得しつつ、Googleで為替レートを調べて計算するといったことが可能になります。
MCP Serverを使いこなすことで、AIを単なるチャットボットから「行動できるアシスタント」へと進化させることができます。さらに、本番環境への統合を検討している場合は、セキュリティ面での対策も欠かせません。Claudeが数千行のデータを自らクエリして、数秒でインサイトを見つけ出す様子を目の当たりにするのは、本当に感動的な体験です。

