🙌

MCP ( Model Context Protocol )触ってみた。

2024/12/10に公開

はじめに

MCPという仕組み?が考案、実装され始めていて簡単に試せるので、試してみます。

個人的に今後こういった「AIをうまく使うには」の需要が高まると思うので、MCPに付いてのキャッチアップ、実際使ってみての手触りについてわかるような記事を書きました 。

エンジニアMCP入門から、AIでなにかいい感じにできるものはないかという非エンジニア向け雑記として読んでください。

MCPとは

MCP (Model Context Protocol) is an open protocol that enables secure, controlled interactions between AI applications and local or remote resources.

MCP(Model Context Protocol)とはオープンプロトコルです。
標準化された方法でAIアプリケーションがデータにアクセスすることで、安全な接続を提供することができます。
オープンプロトコルなので、今後の普及による拡張性と普遍性が期待されます。
すでにSDKなども提供されているので、実際に使ってみることができます。
https://github.com/modelcontextprotocol

まあ要するに

「日進月歩のAIサービスごとにパイプやコネクションの開発、管理してたらキリないし乗り換えらんねえよ」という問題が今後増えると予想されます。
そこでMCPは 「どんなAIサービスでも、既存のいろんなデータにアクセスする共通ルール作ってみんなそれに合わせようや。 そしたらAIサービス作る側は作って売りやすいし、使う側は導入と管理しやすいやろ」というプロジェクトです。

なにがすごいの?

プロトコルなので、別にこいつは何もすごいことはできないです。

ただ、「すごいAI」と「すごいデータ」はたくさんあるけど、AIはどれがいいかわかんないしデータはあっちこっちにある。みたいな状況が今後おきたときに、MCPというプロトコルで標準化された世界があればデータによってAIサービスを使い分けたり簡単に乗り換えたりできるようになるかもしれません。

MCP触ってみる

MCPはオープンプロトコルなので触ってみようと思えばいくらでも触れる環境があると思いますが、今回はclaudeというサービスを使ってみます。

(なぜClaudeかというと、Claudeのデスクトップアプリが2024/11/26に開発者プレビューでサポートされたからです)

(Claudeを開発している https://www.anthropic.com/ はMCPの開発元でもあります。)

こちらにquick startがあるので、それに従って進めていきます。皆さんも是非試してみてください。

(この記事はMacOSでの手順になります。)
https://modelcontextprotocol.io/quickstart

アーキテクチャ

(https://modelcontextprotocol.io/quickstart)
今回の全体像は、MCPホストがローカルや外部のデータに接続された複数のサーバにアクセスできるようなアーキテクチャに従っていきます。
MCPに則って開発されたAIサービスがローカルや外部に散らばったデータを使って分析ができるようなイメージです。


(https://modelcontextprotocol.io/quickstart)
このアーキテクチャの一部として、ClaudeからSQLiteデータベースにアクセスしてみましょう。

登場人物は以下です。

  • Claude Desktop App
    • MCPホストとして
      ここにMCPに対応している他のAIツールやIDEを持ってくることができる
  • SQLite MCP Server
    • データベースに接続するサーバとして
  • SQLite Database
    • ローカルのデータベースとして
    • データをインターネット上に公開しなくても、MCPを使ってアクセスできる(やったぜ)

事前準備

Claudeを使うためには、以下のものが必要です。

その他の環境

  • uv
    • 0.4.18以上
  • git
  • SQLite
# Using Homebrew
brew install uv git sqlite3

1. サンプルデータベースを作成する

# Create a new SQLite database
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

2. デスクトップアプリの設定

2.1設定ファイルを開く

~/Library/Application Support/Claude/claude_desktop_config.jsonをひらく

アプリからClaude>Settings>Developer>Edit Configで開くこともできます。

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

ファイルがない場合は作成する必要があります。

2.2 jsonを編集する

YOUR_USERNAMEに自分のmacのユーザーネームを入れてjsonに以下を追加する

{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/Users/YOUR_USERNAME/test.db"]
    }
  }
}

これは、以下のことを示します

  • 「sqlite」という名前の MCP サーバーがあります
  • このサーバーは、 uvx mcp-server-sqliteというコマンドで起動されます
  • これは「test」というデータベースに接続されます

2.3 jsonファイルを保存してClaudeを再起動する


正しく設定されていると、Claude>Settings>Developerに「sqlite」というサーバーが表示されます。

3. プロンプトを指示する

えっ、もう?って思いますよね...
これでClaudeがSQLiteデータベースにアクセスできるようになりました。
以下のプロンプトで指示してみましょう

Can you connect to my SQLite database and tell me what products are available, and their prices?

こんな感じで、テーブルを使っていいか聞いてきます

クエリ打つよーとかも聞いてくれます

対話ってすばらしい

4. 出力結果を見る

I'll help you explore the database. First, let me check what tables are available.

Great, I can see there's a products table. Let me check its structure to see what information is available.

Now I'll query the products table to show you all products and their prices.

I notice there are duplicate entries in the data. Let me show you a cleaned-up list of unique products and their prices:

Here's a summary of the available products, ordered by price:

The products range from basic accessories to more advanced electronics:

Most affordable items (under $20):
- Screen Protector ($9.99)
- Mouse Pad ($12.99)
- Phone Stand ($15.99)
- Widget ($19.99)

Mid-range accessories ($20-$50):
- Portable Charger ($24.99)
- Travel Adapter ($27.99)
- Gadget ($29.99)
- Laptop Sleeve ($34.99)
- Gizmo ($39.99)
- LED Desk Lamp ($45.99)
- USB Hub ($49.99)

Higher-end electronics ($50+):
- Webcam ($69.99)
- Bluetooth Speaker ($79.99)
- Wireless Earbuds ($89.99)
- Fitness Tracker ($119.99)
- Keyboard ($129.99)
- Gaming Headset ($159.99)
- Portable SSD ($179.99)
- Smart Watch ($199.99)
- Mini Drone ($299.99)

Would you like any specific information about any of these products or would you like me to analyze the pricing distribution in more detail?

ローカルのDBのデータを使って説明を生成してくれていますね

もちろん日本語でも問題なし(Claudeが対応しているってだけ)

素晴らしいですね!

所感

ここでやったことは「MCPに則ってるClaudeを使ってみた」だけですが、データの保存場所やアプリケーションの機能に依存なく良質なデータを正しい方法で使うことが簡単になる「データ本位のAI時代」の土台ができてるなと感じました。(伏線回収)
個人的には「夢みたいなモデル」よりも「現実への実装」が気になるので、こういった話題はワクワクします。

また、オープンなプロトコルと聞くと他の事例の成功も失敗も思い浮かべつつ「うまくいってくれ」と言うのが率直な感想です。
「なにがどうセキュアなん?」とかも深ぼっていきたいですね

まとめ

  • MCPとはAIサービスのオープンプロトコル
  • MCPが今後のAIサービス開発と活用の標準になるかも

参考リンク

Discussion