🤗

Model Context Protocol (MCP) を試してみる (Windows)

2024/11/30に公開3

はじめに

2024年11月26日にAnthropicがModel Context Protocol (MCP) を発表しました。
https://www.anthropic.com/news/model-context-protocol

このMCPですが、API接続などを意識せずに、様々なツールと連携(参照、登録、更新)ができる画期的な仕組みです。RAGやファインチューニングといった手法がありますが、MCPが新たなアプローチになっていきそうです。

今回、Windows端末にデータベースを構築して、テーブルを作成して、Claudから参照してみようと思います。

構成

下記のような構成になっています。

Claude自体推論能力が高いといわれており、これらのツールをうまく使えそうなのと、Projects機能やArtifactもできるので、ClaudeでMCP経由で情報を得つつデータ分析や、他のツールへデータ連携していくといったこともできそうです。

活用できるサービス

2024年11月30日時点でAnthropicのGitHubにあがっているものは下記のようです。

  • Filesystem - Secure file operations with configurable access controls
  • GitHub - Repository management, file operations, and GitHub API integration
  • GitLab - GitLab API, enabling project management
  • Git - Tools to read, search, and manipulate Git repositories
  • Google Drive - File access and search capabilities for Google Drive
  • PostgreSQL - Read-only database access with schema inspection
  • Sqlite - Database interaction and business intelligence capabilities
  • Slack - Channel management and messaging capabilities
  • Sentry - Retrieving and analyzing issues from Sentry.io
  • Memory - Knowledge graph-based persistent memory system
  • Puppeteer - Browser automation and web scraping
  • Brave Search - Web and local search using Brave's Search API
  • Google Maps - Location services, directions, and place details
  • Fetch - Web content fetching and conversion for efficient LLM usage

https://github.com/modelcontextprotocol/servers?tab=readme-ov-file

環境構築

試す前に環境構築として下記ツールのインストールが必要となります。
順番に見ていきましょう。

  • Claude Desktop Application
  • uv
  • Git
  • SQLite

Claude Desktop Application

下記記事を参考にしてインストールします!
https://zenn.dev/acntechjp/articles/afa6cfa2e7c5ae

uv

uvはPythonのパッケージ管理ツールとなります。Claude Desktop ApplicationがMCP経由でデータにアクセスするときに使っていると思われます。

winget install --id=astral-sh.uv -e

Git

Gitはバージョン管理ツールです。今回、各MCPサーバがGitHubに公開しており、GitHubからMCPサーバを取得するときにこのツールを使います。

winget install git.git

SQLite

SQLiteは軽量のリレーショナルデータベース管理システム(RDBMS)です。

winget install sqlite.sqlite

SQLiteにテーブル作成、データ挿入

SQLiteを起動

コマンドプロンプトでSQLiteを起動します。

sqlite3

データベースを作成

テーブルを作成するためにまずはデータベースを作成します。

sqlite> .open test.db

テーブル作成

CRESTE文でテーブルを作成します。
Products(製品)テーブルを作成します。
テーブルの項目は、id、name(製品名)、price(製品の金額)とします。

CREATE TABLE products ( id INTEGER PRIMARY KEY, name TEXT, price REAL);

データ挿入

INSERT文でデータを挿入します。

INSERT INTO products (name, price) VALUES
('Widget', 19.99),
('Gadget', 29.99),
('Gizmo', 39.99);

テーブル、データの確認

下記コマンドでデータベースに存在するテーブルを確認できます。今回は「products」が出力されるはずです。

.tables

SELECT文でProductsテーブルに登録されているデータを確認します。3件表示されるはずです。

select * from products;

Claude Desktop Applicationの設定

それでは、Claude Desktop Applicationの設定をしていきましょう。

Developers Modeを有効化する

Claude Desktop Applicationの左上の三本線をクリックして「Help > Enable Developer Mode」をクリックします。
その後、ダイアログがっ表示されるので「Enable」をクリックします。

MCP設定ファイルを変更する

Claude Desktop Applicationの左上の三本線をクリックして「File > Settings...」をクリックします。

「Developer」の「Edit Config」をクリックします。

Explorerが表示されます。「claude_desktop_config.json」を開きます。

下記のように変更して保存します。
ファイルパスの区切りは「\」としてください。

claude_desktop_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "C:\\sqlite\\test.db"
      ]
    }
  }
}

ClaudeでMCPを試してみる

Claudeを閉じる

Claudeを一度閉じます。

Claudeを管理者モードで起動する

Claude Desktop Applicationを右クリックして、「管理者として実行」をクリックして管理者モードで起動しましょう。

MCPを試してみる

Claude Desktop ApplicationにProductsテーブルの件数を聞いてみましょう。

プロンプト
SQLiteのProductsテーブルの件数を教えて

下記のように、Claude Desktop ApplicationがSQLiteへ接続してテーブルの件数を調べて回答してくれました!

テーブルへのInsertもできます!

さいごに

いかがでしたか。今回SQLiteへの操作をClaudeにさせてみましたが、他のサービスへも操作が可能です。SNSを見るとさまざまな事例が出てき始めているので、私もドンドン試してみようと思います。

Accenture Japan (有志)

Discussion

akinobukatoakinobukato

参考になります!
私が躓いた点2点共有します

①sqliteのインストール先が、環境によって違う場所に入る可能性もあるようなので、
"C:\sqlite\test.db" のままだとうまく動きませんでした。

コマンドプロンプトで where test.db で検索して、test.dbが配置されているパスを確認して、jsonを書き換えたらうまく行きました

②jsonを書き換えてもうまく動かなくて、以下のブログに記載されているのですが、
https://zenn.dev/acntechjp/articles/d0acacc98cad38

ちなみに、私のPC環境ではClaude Deskop画面を「×」で閉じても裏プロセスが残っていて正常に再起動されないので、OS再起動するか明示的にプロセスKillしないとダメでした。(バグ?)

をしたらうまく動きました。claudeのデスクトップアプリは動きが若干怪しいな。。。(プロセス見たら、複数起動されてた。。)