Model Context Protocol のクイックスタートをやってみた
はじめに
こんにちは、アノテーションのなかたです。
Anthropic から Model Context Protocol(略MCP)という標準プロトコルが発表されたので、クイックスタートをやってみました。
Model Context Protocolとは
モデル コンテキスト プロトコルは、開発者がデータ ソースと AI 搭載ツールの間で安全な双方向接続を構築できるようにするオープン スタンダードです。(Google翻訳)
開発者にとって何が嬉しいかというと、リソースに接続するためのプログラムを MCP という標準に合わせることで、使い回せるようになります。
また、開発者向けにクイックスタートや SDK が提供されており、ドキュメントではローカルのファイルやデータベースなどのリソースへ接続するプログラムが公開されています。
やってみる
内容としては、ローカルで SQLite データベースをMCPサーバとして起動します。そして、Claude For Desktop と通信し、ローカルにしかないデータをAIとの会話で利用できるようになります。
また、この記事ではMacでの手順を前提とします。
1. Claude For Desktop のインストール
MCP に対応しているAIアシスタントアプリを起動する必要があるため、Claude For Desktop をインストールします。
2. ツールのインストール
Homebrew から SQLite の起動に必要なツールをインストールします。
brew install uv git sqlite3
3. SQLiteデータベースの用意
sqlite3 ファイルを作成し、サンプルデータを入れます。
sqlite3 ~/test.db <<EOF
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT,
price REAL
);
INSERT INTO products (name, price) VALUES
('Widget', 19.99),
('Gadget', 29.99),
('Gizmo', 39.99),
('Smart Watch', 199.99),
('Wireless Earbuds', 89.99),
('Portable Charger', 24.99),
('Bluetooth Speaker', 79.99),
('Phone Stand', 15.99),
('Laptop Sleeve', 34.99),
('Mini Drone', 299.99),
('LED Desk Lamp', 45.99),
('Keyboard', 129.99),
('Mouse Pad', 12.99),
('USB Hub', 49.99),
('Webcam', 69.99),
('Screen Protector', 9.99),
('Travel Adapter', 27.99),
('Gaming Headset', 159.99),
('Fitness Tracker', 119.99),
('Portable SSD', 179.99);
EOF
4. MCP設定ファイルの追加
Claude For Desktop が扱う MCP サーバーの起動設定として、JSON ファイルを追加します。
{
"mcpServers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "/Users/YOUR_USERNAME/test.db"] # YOUR_USERNAME を書き換えてください。
}
}
}
ファイルの内容としては、
uv のコマンドとして提供されている uvx
を実行することで、SQLite サーバーを起動しているようです。
すでに開いている場合は、JSONを読み込ませるため Claude For Desktop を再起動します。
5. チャットで試してみる
データベースとの接続を確認するため、新しいチャットで次のプロンプトを入力します。
Can you connect to my SQLite database and tell me what products are available, and their prices?
画像のように、AIアシスタントが SQLite に接続する許可が求められるため、 Allow for This Chat
を選択します。
サンプルプロンプトは以下のようなチャットがされました。
(日本語に翻訳してもらっています)
あなた:SQLiteデータベースに接続して、利用可能な製品とその価格を教えてください。
アシスタント:データベースのテーブルを確認します。
(テーブル一覧の確認)
「products」というテーブルが見つかりました。製品の詳細と価格を取得します。
(テーブルのスキーマを確認し、クエリを修正)
以下が、データベースで利用可能な製品のリストです:
1. ウィジェット - 19.99ドル
2. ガジェット - 29.99ドル
3. ギズモ - 39.99ドル
4. スマートウォッチ - 199.99ドル
5. ワイヤレスイヤーバッド - 89.99ドル
6. ポータブル充電器 - 24.99ドル
7. Bluetoothスピーカー - 79.99ドル
8. スマートフォンスタンド - 15.99ドル
9. ノートパソコンスリーブ - 34.99ドル
10. ミニドローン - 299.99ドル
11. LEDデスクランプ - 45.99ドル
12. キーボード - 129.99ドル
13. マウスパッド - 12.99ドル
14. USBハブ - 49.99ドル
15. ウェブカメラ - 69.99ドル
16. スクリーンプロテクター - 9.99ドル
17. 海外用電源アダプター - 27.99ドル
18. ゲーミングヘッドセット - 159.99ドル
19. フィットネストラッカー - 119.99ドル
20. ポータブルSSD - 179.99ドル
製品は9.99ドルのスクリーンプロテクターから、299.99ドルのミニドローンまで幅広く揃っています。これらの製品について、何か具体的に知りたいことはありますか?
i
6. 他の機能
また、MCP サーバーとして認識しているリソースを確認することもできました。
MCP のログを確認することもできました。
今回実施したログを確認したところ、以下のように出力されていました。
% tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
==> /Users/nakata/Library/Logs/Claude/mcp-server-sqlite.log <==
Database error executing query: no such column: product_id
Database error executing query: no such column: product_id
Database error executing query: no such function: STDDEV
==> /Users/nakata/Library/Logs/Claude/mcp.log <==
2024-11-30T08:21:34.968Z [info] Attempting to connect to MCP server sqlite...
2024-11-30T08:21:34.975Z [info] Connected to MCP server sqlite!
参考
おわりに
今後、何らかの MCP サーバープログラムを自作できたらと思います。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。