【徹底解説】Claude MCPの基本と使い方:データベース連携編
本記事では、11月26日に公開された Claude の Model Context Protocol (MCP) を使って、エンジニアでない人でも、 Claudeと外部アプリを連携できる方法をご紹介します。全て無料の部分で実装可能です!
そもそもMCPとは
エンジニアの方も、エンジニアでない方もなかなか聞き馴染みのないワードだと思いますので、一度ChatGPTに聞いてみましょう。
ChatGPTの回答にあるように、MCPはAIモデルがどのように情報を保存し、活用するかを定めたガイドライン、いわばルールブックのようなものです。
Claude MCPは、このガイドラインに沿って、Claudeがコンピュータ上にあるファイルやデータベースといった外部の情報にアクセスし、活用することができます。
MCPの仕組み
MCPは、クライアント・サーバーモデルという仕組みで動作します。これは、ユーザーのコンピュータの中に、Claude Desktop(クライアント)とMCPサーバー(サーバー)という2つのソフトウェアが存在し、連携して動作するイメージです。
Claude Desktop (クライアント): ユーザーがClaudeに指示を出すためのインターフェースです。ユーザーのリクエストをMCPサーバーに送信し、そのレスポンスを受け取ります。
MCPサーバー: ユーザーのコンピュータ上で動作する軽量なプログラムです。Claude Desktopからのリクエストに応じて、ローカルリソース(本記事では商品データベース)にアクセスし、データのやり取りを行います。
ローカルリソース: ユーザーのコンピュータ上にあるデータやツールです。今回のガイドでは、商品データベースがローカルリソースとなります。
例えば、ユーザーが商品データベースから特定の商品の価格を知りたいとします。
ユーザーがClaude Desktopに「商品の価格を教えて」と指示します。
Claude Desktopは、このリクエストをMCPサーバーに送信します。
MCPサーバーは、商品データベースにアクセスし、指定された商品の価格データを取得します。
MCPサーバーは、取得した価格データをClaude Desktopに返します。
Claude Desktopは、受け取ったデータに基づいて、ユーザーに価格を提示します。
SQLiteデータベースとの連携
ここからは、実際にローカルのデータベースをClaudeに接続し、データの分析や操作を行う方法をステップバイステップで解説します。
事前準備
1. Claude Desktop:
まずは以下のURLから、Claudeのデスクトップ版アプリをダウンロードします。
2. Python:
Macの場合:
ターミナルを開きます。(アプリケーション > ユーティリティ > ターミナル)
ターミナルで 'python3 --version' を実行し、Pythonのバージョンを確認します。3.10以上がインストールされている場合は、このステップはスキップできます。
もし古いバージョン、あるいはPythonがインストールされていない場合は、Python公式サイトを開きます。
「Downloads」メニューから、Mac用の最新のPython のインストーラーをダウンロードします。
ダウンロードしたインストーラーをダブルクリックして実行し、画面の指示に従ってインストールを進めます。
ターミナル:
Windowsの場合:
Python公式サイトを開きます。
「Downloads」メニューから、Windows用の最新のPythonのインストーラーをダウンロードします。
ダウンロードしたインストーラーをダブルクリックして実行します。
インストールを開始する前に、「Add Python 3.x to PATH」のチェックボックスを必ずオンにしてください。これは、Pythonをシステム全体で使えるようにするための重要な設定です。
「Install Now」をクリックして、インストールを進めます。画面の指示に従って操作してください。
3. uv:
MCPサーバーを動かすために、uv というツールが必要です。
Macの場合: ターミナルを開いて以下のコマンドを実行してください。
brew install uv
Windowsの場合: PowerShellを開いて以下のコマンドを実行してください。
winget install --id=astral-sh.uv -e
brewコマンドやwingetコマンドが使えない場合は、uvの公式ドキュメントを参照してインストールしてください。
4. テキストエディタ:
まだインストールしていない場合は、以下のいずれかのエディタをインストールすることをお勧めします。
VS Code: VS Code は、高機能で使いやすい無料のテキストエディタです。拡張機能も豊富で、コーディングだけでなく様々な用途に活用できます。
Cursor: Cursor は、AIがコーディングを支援してくれる無料のテキストエディタです。
5. SQLite:
ローカルで動作するデータベースで、今回はデータの保存先として使用します。SQLiteがインストールされているか確認し、必要であればインストールしてください。
Macの場合: ターミナルで `sqlite3 --version` を実行してバージョンを確認します。もしSQLiteがインストールされていない場合は、Homebrewを使って `brew install sqlite3` でインストールできます。
Windowsの場合: `sqlite3` コマンドが使用できるか確認してください。もしコマンドが見つからない場合は、SQLiteの公式ウェブサイトからダウンロードしてインストールしてください。Windows版のインストール手順はウェブサイトで確認できます。
補足:
インストールや設定でつまずくことがあるかもしれません。そういった時は、ChatGPTなどに質問するのがおすすめです。
質問例:
「MacでPython 3.10以上をインストールするにはどうすればいいですか?」
「Windowsでuvをインストールしようとしたら、〇〇というエラーメッセージが出ました。どうすれば解決できますか?」
最新のChatGPT Desktopアプリを使えば、Terminalと連携させてコピペしなくてもChatGPTが自動でTerminalの内容を読み取ってくれるので、ぜひそちらも活用してみてください。最新の機能に関しての解説はこちら。
SQLiteデータベースの作成
テスト用のシンプルなSQLiteデータベースを作成します。まず、デスクトップにtestという名前のフォルダを作成します。
次にターミナルまたはPowerShellを開き、以下のコマンドを実行して、作成したtestフォルダに移動します。
cd ~/Desktop/test # macOSの場合
cd ~\Desktop\test # Windowsの場合
続いて、以下のコマンドを実行して、test.dbという名前のデータベースファイルと、その中に商品テーブルを作成します。
sqlite3 test.db <<EOF
CREATE TABLE 商品 (
id INTEGER PRIMARY KEY,
名前 TEXT,
価格 REAL
);
EOF
PowerShellの場合:
# 以下のコマンドをPowerShellで実行します。
sqlite3 test.db <<EOF
CREATE TABLE 商品 (
id INTEGER PRIMARY KEY,
名前 TEXT,
価格 REAL
);
EOF
次に、以下のコマンドを実行して、商品テーブルにサンプルデータを挿入します。
sqlite3 test.db <<EOF
INSERT INTO 商品 (名前, 価格) VALUES
('ウィジェット', 19.99), ('ガジェット', 29.99), ('ギズモ', 39.99),
('スマートウォッチ', 199.99), ('ワイヤレスイヤホン', 89.99),
('ポータブル充電器', 24.99), ('Bluetoothスピーカー', 79.99),
('スマホスタンド', 15.99), ('PCケース', 34.99),
('ミニドローン', 299.99), ('LEDデスクランプ', 45.99),
('キーボード', 129.99), ('マウスパッド', 12.99), ('USBハブ', 49.99),
('ウェブカメラ', 69.99), ('スクリーンプロテクター', 9.99),
('トラベルアダプター', 27.99), ('ゲーミングヘッドセット', 159.99),
('フィットネストラッカー', 119.99), ('ポータブルSSD', 179.99);
EOF
PowerShellの場合:
# PowerShellでtestフォルダに移動後、以下のコマンドを一行ずつ実行します。
sqlite3 .\test.db "CREATE TABLE 商品 (id INTEGER PRIMARY KEY, 名前 TEXT, 価格 REAL);"
sqlite3 .\test.db "INSERT INTO 商品 (名前, 価格) VALUES ('ウィジェット', 19.99);"
sqlite3 .\test.db "INSERT INTO 商品 (名前, 価格) VALUES ('ガジェット', 29.99);"
sqlite3 .\test.db "INSERT INTO 商品 (名前, 価格) VALUES ('ギズモ', 39.99);"
# ... 以下同様に全ての商品データを一行ずつINSERTします。
sqlite3 .\test.db "INSERT INTO 商品 (名前, 価格) VALUES ('ポータブルSSD', 179.99);"
これで、testフォルダ内にtest.dbというデータベースファイルが作成され、商品テーブルに20件のサンプルデータが挿入されました。テーブルの内容は、id (商品ID), 名前 (商品名), 価格 (価格) の3つのカラムで構成されています。
Claude Desktopの設定
次に、Claude DesktopがSQLiteデータベースに接続できるように設定します。
テキストエディタでClaude Desktopの設定ファイル claude_desktop_config.json を開きます。
macOSの場合:
Finderを開き、「移動」メニューから「フォルダへ移動...」を選択します。
表示された入力欄に ~/Library/Application Support/Claude/ と入力し、「移動」をクリックします。
claude_desktop_config.json ファイルを探し、ダブルクリックしてテキストエディタで開きます。
Windowsの場合:
エクスプローラーを開き、アドレスバーに %APPDATA%\Claude\ と入力してEnterキーを押します。
claude_desktop_config.json ファイルを探し、ダブルクリックしてテキストエディタで開きます。
ファイルが開いたら、以下の設定を追加します。
ユーザー名とデータベースパスの確認:
macOSの場合:
ターミナルを開き、whoamiコマンドを実行します。表示された文字列があなたのユーザー名です。例:your_username
データベースのパスは/Users/your_username/Desktop/test/test.dbとなります。「your_username」の部分は、上記で確認した実際のユーザー名に置き換えてください。
Windowsの場合:
エクスプローラーのアドレスバーにC:\Users\と入力し、Enterキーを押します。
表示されるフォルダ名の中に、ユーザー名のフォルダがあります。例:Your_Username
データベースのパスはC:\Users\Your_Username\Desktop\test\test.dbとなります。「Your_Username」の部分は、上記で確認した実際のユーザー名に置き換えてください。
設定の追加:
以下の設定をclaude_desktop_config.jsonファイルに追加します。 <ユーザー名>の部分は、上記の手順で確認した実際のユーザー名に置き換えてください。
macOSの場合:
{
"mcpServers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "/Users/<ユーザー名>/Desktop/test/test.db"]
}
}
}
Windowsの場合:
{
"mcpServers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "C:\\Users\\<ユーザー名>\\Desktop\\test\\test.db"]
}
}
}
"mcpServers": MCPサーバーの設定を記述するオブジェクトです。
"sqlite": MCPサーバーの名前です。任意の名前を付けることができますが、ここではsqliteとしています。
"command": MCPサーバーを起動するコマンドを指定します。ここではuvxを使用します。
"args": uvxコマンドに渡す引数を指定します。mcp-server-sqliteはSQLiteのMCPサーバーを起動するコマンド、--db-pathオプションでデータベースファイルのパスを指定します。
設定ファイルを保存し、Claude Desktopを再起動します。これでClaude Desktopの設定は完了です。
Claude Desktopでのテスト
Claude Desktopがデータベースに正しく接続できるか確認してみましょう。
設定ファイルの変更を保存後、Claude Desktopを再起動します。再起動後、Claude Desktopの画面右下に注目してください。プラグのアイコン(🔌)の横に数字が表示されているはずです。
この数字は、Claude Desktopが認識しているMCPサーバーの数を示しています。今回の設定でSQLiteのMCPサーバーが正しく認識されていれば、「1」またはそれ以上の数字が表示されます。
新しいチャットを開始します。チャット入力欄に、以下のプロンプトを入力して送信してみます。
Claude Desktopでプロンプトを送信すると、MCPサーバーが提供するツールを使用するためのアクセス許可を求めるダイアログが表示されます。これは、セキュリティを確保し、意図しない操作を防ぐための重要な仕組みです。
以下のような情報が表示されます。
実行するツール名: どのMCPサーバーのツールを実行しようとしているかが表示されます(例: "sqlite")。
ツールの実行内容: ツールが具体的に何をするかが簡潔に説明されます(例: "SQLite database のテーブル一覧を表示します。")。
ツールの入力: ツールへの入力があれば表示されます。今回の例では入力はありません。
セキュリティ警告: 悪意のあるMCPサーバーや会話内容によって、Claudeが意図しない有害な操作を実行させられる可能性があることを警告するメッセージが表示されます。
「Allow」を選択すると、Claudeがデータベースに接続し、商品テーブルの内容を以下のように表示します。
先ほどテストで作成したデータベースの内容にアクセスして、価格帯ごとに商品をまとめてくれました。