ClaudeのMCP (Model Context Protocol) というサービスがリリースされたと耳にしたけれど、「何ができるのかよくわからない」という人もいるのではないでしょうか。

たとえば、SQLを使わずに自然言語でローカルのデータベースにアクセスしてデータベースの情報を取得したいと思ったことはありませんか?個人的にはこれまでそのようにデータベースを利用したと思ったことはありませんが、Claude MCPを利用すればそれが可能になります。通常、データベースからデータを取得する際は次のようなSQL文「select price from products where product_name=”ipad”」を入力する必要があります。しかし、Claude MCPでは「iPadの値段教えて」といった自然な日本語を入力するだけで、データベースからその情報を取得してくれます。さらに、データベース操作だけでなく、ローカルPC上のファイルシステムを操作することも可能です。つまり大規模言語モデル(LLM:ここではClaude)とデータベースやファイルシステムなどの外部ツールの間で連携を行うのがMCPです。

ローカルPCで開発を行った経験がある人にとっては、インストールや設定は驚くほど簡単です。しかし、プログラマーでもエンジニアでもない方にとっては、Git、SQLite、uv、Node.js、Homebrewなどの聞き慣れないツールが登場するため、少し難しく感じるかもしれません。そこで、本記事では、実際に動作を確認しながらClaude MCPがどのようなものかを具体的に紹介していきます。

ClaudeのMCPの設定は、macOSを利用してhttps://modelcontextprotocol.io/quickstartのクイックスタートを参考に行なっていきます。

Claude MCPは課金が必要なの?

いいえ、Claudeのフリープランでも利用可能です。本記事はフリープランを利用して動作確認を行なっています。

Claudeデスクトップのインストール

Claude MCPを利用するために Claudeのデスクトップアプリをインストールする必要があります。デスクトップアプリはMCPを利用するためだけのものではなくプロンプトの入力をアプリ上で行うことができます。画面のUIもブラウザのUIと変わりません。

Claudeのデスクトップアプリをインストールするためにhttps://claude.ai/downloadのページにアクセスします。macOS、Windows版が分かれているのここではmacOSボタンをクリックします。

Claude Desktopダウンロード画面
Claude Desktopダウンロード画面

macOSをクリックするとCalude.dmgというファイルのダウンロードが開始されます。ダウンロード後のファイルサイズは178MBでした。

Claude.dmgファイルをダブルクリックしてアプリケーションフォルダにClaudeアプリをインストールします。これでアプリのインストールは完了です。

Claudeアプリのインストール
Claudeアプリのインストール

画面上部の「メニューバー」の移動からアプリケーションを開いてClaudeを実行します。

Claudeデスクトップの起動

Claudeデスクトップのログイン画面
Claudeデスクトップのログイン画面

起動するとログイン画面が表示されます。Googleアカウントでログインする場合は「Continue with Google」をクリックするとブラウザが起動してサインイン画面が表示されるのでサインイン処理を行ってください。普段利用しているClaudeのアカウントを利用します。

ブラウザ上でサインイン
ブラウザ上でサインイン

ログインが完了するとブラウザと同じUIの画面がデスクトップアプリ上に表示されます。

サインアップ後の画面
サインアップ後の画面

SQLite MCP Server

MCPを利用してローカルのSQLiteデータベースと連携するための設定を行なっていきます。

SQLite MCP Serverを利用するためにはClaude Desktop以外にもツールやライブラリのインストールが必要になります。要件は下記の通りです。https://modelcontextprotocol.io/quickstart

macOSでMCPを利用するための要件
macOSでMCPを利用するための要件

必要なツール/ライブラリのインストール

Homebrewを利用してインストールを行うのでbrewコマンドでuv, git, sqlite3をインストールします。


% brew install uv git sqlite3

Homebrewはパッケージ管理マネージャでオープンソースのライブラリやツールをインストールしたり、管理したりするためのツールです。デフォルトでmacOSに入っているわけではなく利用するためにはインストールが必要となります。

インストールが完了したら各ライブラリのバージョンを確認しておきます。uvの要件は0.4.18以上なので問題ないことを確認しておきます。


% uv --version
uv 0.5.6 (Homebrew 2024-12-03)
% git --version
git version 2.47.1
% sqlite3 --version
3.43.2 2023-10-10 13:08:14 1b37c146ee9ebb7acd0160c0ab1fd11017a419fa8a3187386ed8cb32b709aapl (64-bit)

データベースの作成を行いますが、SQLiteをファイルベースのデータベースで下記のコマンドを実行するとユーザのホームディレクトリにtest.dbファイルが作成されます。MCPサーバの設定ファイルでtest.dbファイルのパスを指定する必要があります。

SQLiteデータベースの作成

sqlite3コマンドを利用してデータベースを操作することができ、下記のコマンドでデータベースとproductsテーブルを作成しています。ユーザのホームディレクトリにtest.dbファイルが作成されます。


% 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

設定ファイルの作成

MCPサーバを利用するために設定を行う必要があります。設定はclaude_desktop_config.jsonファイルで行います。

VScodeを利用している場合にはcodeコマンドを実行するとclaude_desktop_config.jsonファイルが作成されます。Cursorを利用している場合にはcodeまたはcursorコマンドで実行してください。


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

ファイルは空なので以下のコードをclaude_desktop_config.jsonに貼り付けてください。


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

argsプロパティの値にSQLiteのデータベースのパスを設定する場所があります。test.dbファイルが保存されているパスを設定します。手順通りであればユーザのホームディレクトリです。(例 :/Users/mac/)

claude_desktop_config.jsonファイルを作成後claude Desktopの再起動を行います。

claude_desktop_config.jsonファイル設定が反映されているか確認するためにClaudeのメニューからSettingsを選択します。画面上部のメニューバーClaudeからSettingsをクリックします。

Claude DesktopのSetting
Claude DesktopのSetting

Setting画面が表示されるのでDeveloperを選択すると先ほどclaude_desktop_config.jsonで設定したsqliteを確認することができます。Edit Configをクリックするとファインダーが開き、claude_desktop_config.jsonファイルを選択した状態で表示されます。

設定値の確認
設定値の確認

動作確認

動作するのか確認するために「私のSQLiteデータベースに接続して、どんな商品が利用可能か、それらの価格を教えてもらえますか?」をプロンプトに入力します。

データベースへのアクセスの動作確認
データベースへのアクセスの動作確認

実行するとローカルのSQLiteにアクセスするため実行を許可するか拒否するかというポップアップが何回か表示されます。すべてを許可するとローカルのSQLiteデータベースから取得した情報が表示されます。

ローカルのデータベースへアクセス後の結果
ローカルのデータベースへアクセス後の結果

データベースからの呼び出しだけではなく新しいデータを挿入できるのか確認するために 「データベースに新しい行を追加することはできますか?ダミーデータでかまいません。」と入力するとポップアップが表示され、許可を行うと3件の商品を追加してくれました。

処理の前に許可の確認のポップアップ
処理の前に許可の確認のポップアップ
行の追加
行の追加

テーブルの価格を変更したい場合も簡単に行うことができます。

データの更新
データの更新

このようにClaude MCPを利用することでローカルのデータベースからClaudeのプロンプトで入力に沿った内容の処理を行ってくれることが確認できました。

ファイルシステムへのアクセス

Node.jsの確認

MCPを利用してファイルシステムにアクセスする場合にはJavaScriptランタイムのNode.jsのインストールが必要となります。Node.jsはJavaScriptのコードをサーバ上(ローカルPC含む)で動かすために必要です。

Nodeがインストールされているかはnode -vコマンドを実施してバージョン情報が表示されるかどうかで確認できます。インストールしている場合にはバージョン情報が表示されます。


% node -v
v22.12.0

もしインストールされていない場合にはHomebrewを利用するか直接Node.jsのサイトからダウンロードしてインストールすることができます。

Node.jsのホームページ
Node.jsのホームページ

MCPで利用できるのはSQLiteデータベースだけではないので他のツールも利用してみましょう。

フォルダの作成

Claude MCPからアクセスするためのフォルダを作成します。ここではユーザのホームディレクトリの直下にtestという名前のファイルを作成しています。


% mkdir test

設定ファイルの更新

MCPの設定はclaude_desktop_config.jsonで行います。EditorにVSCodeを利用している場合には以下のコードを実行します。


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

mcpServersプロパティの下にsqliteとfilesystemのプロパティがありますが、ファイルシステムをMCPで利用する場合はfilesystemの部分の設定を行う必要があります。”Users/mac/test”が先ほどホームディレクトリ下に作成したtestフォルダのパスです。各自の環境に合わせて変更を行ってください。


{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/Users/mac/test.db"]
    },
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/mac/src"
      ]
    }
  }
}

設定が完了したら、Claude Desktopの再起動を行い、claudeのsettingを確認して新たにfilesystemが表示されていることを確認してください。

Settingの確認
Settingの確認

動作確認

設定後、実際にMCPを利用してファイルシステムにアクセスできるか確認するためにClaude Desktopで”testフォルダに何かファイルは存在しますか?”と入力してリクエストを行います。

許可の確認画面が表示されるので”Allow for This Chat”をクリックします。

アクセスの許可の確認
アクセスの許可の確認

再度許可のポップアップが表示され、許可すると以下の内容が表示されます。testフォルダには何も存在しないので正しい答えが戻ってきました。

リクエストの答え
リクエストの答え

testフォルダにファイル作成のリクエストを行います。

ファイル作成のリクエスト
ファイル作成のリクエスト

リクエストしたtest.txtのファイルが作成されているかtestフォルダを確認するとファイルが作成されていることが確認できました。ファイルの中には”これはテストファイルです。”と記述されていました。


 % ls
test.txt
% more test.txt
これはテストファイルです。

Claude MCPを利用してローカルのファイルシステムにアクセスすることが確認できました。

データベースとファイルシステムのMCPを連携

SQLiteデータベースとファイルシステムをMCPを利用してClaude DesktopのLLMを通して操作できましたが2つを連携することも可能です。

例えばproductsテーブルを元にダミーでを作成してtestフォルダにデータを作成した場合には 「新たにproductsテーブルにデータを3件追加する予定です。挿入するためのデータをtestフォルダにproduct.csvというファイルを作成して、保存してください。」とリクエストするとtestフォルダにproducts.csvファイルを作成して以下のダミーデータを書き込んでくれました。


% more product.csv 
name,price
External Hard Drive,89.99
Smart Home Security Camera,129.99
Wireless Charging Pad,49.99

作成してもらったproduct.csvファイルをproductsテーブルに挿入することも可能です。

ファイルを元にデータを挿入
ファイルを元にデータを挿入

このように設定したMCPを連携させて動かすことも可能です。

SupabaseのPostgresデータベース

SQLiteのデータベースにMCPからアクセスできたようにローカルのPostgresデータベースにもアクセスすることができます。しかし、ここではローカルではなくクラウド上のSupabaseを利用してPostgresデータベースのアクセス方法を確認します。

Supabase上での設定

Supabaseを利用するためにはサービスへのサインアップやプロジェクト、テーブルの作成が必要になります。Supabseを利用するための初期設定については下記の記事で公開しているので参考にしてください。

ここではサインアップ後にTestプロジェクトを作成してid, task, created_atを持つtodosテーブルをで作成しています。作成後、動作確認用の列を追加しています。

動作確認用の行の追加
動作確認用の行の追加

Claude MCPの設定

Postgresデータベースに接続するためにMCPの設定ファイルであるclaude_desktop_config.jsonファイルに以下の情報を設定する必要があります。


"postgres": {
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}

argsプロパティの”postgresql://localhost/mydb”をSupabaseのダッシュボードのSettingでDetabase SettinsのConnection stringの値を設定する必要があります。

接続するために必要な情報
接続するために必要な情報

設定後のclaude_desktop_config.jsonは下記のような内容になります。[YOUR-PASSWORD]の部分はプロジェクトの作成時に設定したデータベースのパスワードです。設定は各自の内容に変更が必要で下記の内容をコピー&ペーストしても動作しません。


{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://postgres.kvijzmshdvjylqbjdnlo:DDPzJ0EEJG1QB44q@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres"]
    },
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/mac/test"
      ]
    }
  }
}

動作確認

claude_desktop_config.jsonを更新したらClaude Desktopの再起動を行ってください。

再起動後に「あたなのPostgresデータベースにアクセスできますか?」や「todosテーブルからデータを取得してください。」と入力するとデータを取得することができます。

Supabase上のPostgresの動作確認
Supabase上のPostgresの動作確認

テーブルからデータを取得することができましたが、SQLiteのようにダミーのデータの挿入を依頼すると挿入は行うことができません。PostgresのMCPに設定されているquery関数が”read-only”にのみ対応しているのでSelect Queryのみ実行いすることがでえきます。

データの挿入はできない
データの挿入はできない

挿入には失敗しましたがローカルだけではなくクラウド上のデータベースにもアクセスすることができます。

ここまでの動作確認を通してMCPがどのようなものか完全に理解できたかと思います。MCPで利用できるのはSQLiteデータベースやFileSystemだけではないので他のツールも利用してみましょう。