西川和久の不定期コラム

「MCP」でチャットAIが外に飛び出せる!Claude DesktopでDBとファイルを操作してみた

 AI界隈は11月末頃からザワザワしている。理由はClaudeが“MCP”に対応した「Claude Desktop」をリリースしたからだ。これによってチャット/AIから外部へのアクセスが容易になる。今回はこのMCPを使ってDBアクセスおよびファイルアクセスの例をご紹介したい。

MCPって何?

 Model Context Protocol、略してMCP。イメージとしてはChatGPTのプラグインに似ているが、プラグインは当然ChatGPT内でしか利用できない。これ対してMCPは対応したクライアント(今回はClaude Desktop)から、MCPサーバーを経由しローカル/外部のリソースにアクセスできると言うのが大きな違いだ。もちろんMCP自体の仕様はオープン。誰でも(技術さえあれば)MCPサーバーを構築できる

 実は、Claude DesktopのMCP対応は11月下旬にリリースされたので、もっと早く記事にすることもできたのだが、普段ローカルで使っている「LM Studio」や「Open WebUI」もすぐMCP対応するだろう……っと待っていたものの、なかなか出ず、痺れを切らしてのClaude Desktopでのご紹介となる(笑)。

 執筆時、公開されているMCPサーバーはここにまとめられている。サーバーと言っても、どこかクラウドにあるわけではなく、ローカルへ構築するサーバーで、そのインストール方法などがリンク先に書かれている(ページ下の方にThird-Party Servers、Community Serversなども並んでいる)。

  • AWS KB Retrieval - Retrieval from AWS Knowledge Base using Bedrock Agent Runtime
  • Brave Search - Web and local search using Brave's Search API
  • EverArt - AI image generation using various models
  • Fetch - Web content fetching and conversion for efficient LLM usage
  • Filesystem - Secure file operations with configurable access controls
  • Git - Tools to read, search, and manipulate Git repositories
  • GitHub - Repository management, file operations, and GitHub API integration
  • GitLab - GitLab API, enabling project management
  • Google Drive - File access and search capabilities for Google Drive
  • Google Maps - Location services, directions, and place details
  • Memory - Knowledge graph-based persistent memory system
  • PostgreSQL - Read-only database access with schema inspection
  • Puppeteer - Browser automation and web scraping
  • Sentry - Retrieving and analyzing issues from Sentry.io
  • Sequential Thinking - Dynamic and reflective problem-solving through thought sequences
  • Slack - Channel management and messaging capabilities
  • Sqlite - Database interaction and business intelligence capabilities

 仕事ではMySQLを使うので、PostgreSQLとSqliteに対応してるならあるよね……っとページ下の方へ行くと発見!

 これを使えば、Claude DesktopなどMCP対応アプリからMySQLへアクセスできるはずだ。が、ちょっとコードを眺めたところ、下記の「claude_desktop_config.json」もしくは環境変数「MYSQL_DATABASE」で、「DATABASE」は固定っぽい。いちいち設定を書き換えるのも面倒なのでできれば、「USE db_name」にも対応してほしいところ。

 では、2つほどMCPを使った例をお見せしたい。なお以下2つはClaude 3.5 Sonnetを使用している。

MCPを試すSqlite編

 上記に普段仕事で使うDBはMySQLと書いたが、サクッと使える手頃な「sqlite」にも対応している。メイン環境がmacOSと言うこともあり、macOS上での設定となるが、Windows環境も同じ事例が山盛りあるので興味のある人は検索してみてほしい。

 まずMCPを使うにはWeb版のClaudeでは動かず、Claude Desktopが必要。予めインストールしておく。無料アカウントでも(制限はあるものの)利用可能だ。

次にmacOSでは

1. python 3.10以上(筆者的には3.12がお勧め)をインストール

2. uvをインストール

brew install uv (brew未インストール時はこれを先に)

3. sqlite3

brew install sqlite3

4. ダミーのdb、test.dbを作る。フォルダはどこでも良い。例はDesktop

sqlite3 test.db <<EOF
CREATE TABLE dummy (
  id INTEGER PRIMARY KEY,
  name TEXT
);
EOF

5. ~/Library/Application Support/Claude/claude_desktop_config.json編集。ない時は新規で作る

{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/Users/<username>/Desktop/test/test.db"]
    }
  }
}
※<username>やフォルダのpathなどは環境/設定に合わす

 これでOK。では本論。Claude Desktop再起動して実際操作してみよう(claude_desktop_config.json編集後は、Claude Desktopの再起動が必要)。

“1.新しいテーブルpc_parts(パソコン用のパーツ)を作成
2.テーブルの内容は
 名前、カテゴリ、平均価格
3.ダミーで適当にデータ10件入れてください”

新しいテーブルpc_parts(パソコン用のパーツ)を作成し、ダミーデータを10件
実際sqliteを操作する時は確認が入る
ダミーデータの確認
データ一覧

 これを入力するだけで、適当なデータとともにtableが出来上がる。またtable作成やデータ挿入時には確認が入る。

 “一覧を表で出してください” の結果が上記の通り。なかなかリアルっぽい名前や金額が並ぶ(笑)。

 次に自作PCを組むには一部抜けているパーツがあるので、“自作PCに不足しているパーツを足してください”で、ダミーだが必要パーツが全部揃った。

自作PCに不足しているパーツを追加/一覧
最小構成で21万3,000円らしい

 そこで”これでPC組むといくらかかりますか?”と尋ねた時の結果が面白い!計算できるのは当たり前だが、最小構成と高性能構成の2種類(本当にこの製品があるかは不明)。そして最後にOSは含まない、実際の販売価格は変動する可能性があります……と、どこで学習したんだ?的な注釈が加わっている。

それぞれのカテゴリから1つずつパーツを選んで、必要最小構成での合計金額を計算してみます。

では、それぞれの構成パターンを計算してみましょう。

最小構成の場合(より安価なパーツを選択):

- CPU: Ryzen 7 7800X (¥42,000)

- CPUクーラー: Noctua NH-D15 (¥15,000)

- マザーボード: MPG B650 GAMING EDGE (¥28,000)

- メモリ: DDR4-3600 16GB Kit (¥8,000)

- GPU: Radeon RX 6800 XT (¥78,000)

- SSD: Samsung 970 EVO Plus 1TB (¥12,000)

- PCケース: Fractal Design Pop Air (¥12,000)

- 電源: Corsair RM850x (¥18,000)

最小構成合計: ¥213,000

高性能構成の場合(より高価なパーツを選択):

- CPU: Core i7-13700K (¥45,000)

- CPUクーラー: ARCTIC Liquid Freezer II 240 (¥16,000)

- マザーボード: ROG STRIX B760-F (¥32,000)

- メモリ: DDR5-6000 32GB Kit (¥25,000)

- GPU: GeForce RTX 4070 (¥85,000)

- SSD: Crucial MX500 2TB (¥15,000)

- PCケース: Lian Li O11 Dynamic (¥19,000)

- 電源: be quiet! Dark Power 12 (¥25,000)

高性能構成合計: ¥262,000

結論:

- 最小構成でも約21万円程度

- 高性能な構成だと約26万円程度

- 差額は約5万円

注意点:

1. これは平均価格なので、実際の販売価格は変動する可能性があります

2. 構成はあくまで例で、用途に応じて最適な組み合わせは変わります

3. OSのライセンス費用は含まれていません(Windows 11 Homeの場合約2万円追加)

4. 周辺機器(キーボード、マウス、モニターなど)の費用は含まれていません

使用目的に応じて、特定のパーツにより予算を配分することで、より効率的な構成も可能です。たとえば:

- ゲーミング重視ならGPUに予算を多く配分

- 動画編集重視ならCPUとメモリに予算を多く配分

- 通常作業用ならGPUを省いて他のパーツを向上

といった調整が可能です。

 ダブルクオーテーション(“”)で囲まれた部分が実際の入力だが、データベースを操作するSQL文など一文字もない。音声入(出)力と組み合わせると、ちょっとしたSFの世界となる。

 話は前後するが、DB操作の機能は

  • append-insight
  • create-table
  • describe-table
  • list-tables
  • read-query
  • write-query

これだけに対応している。従ってこの手の処理はお手のものと言った感じだ。

MCPを試す:ファイルシステム編

 これは名前の通り、ローカルのファイルシステムを扱うMCP。claude_desktop_config.jsonの設定からも分かるように、アクセスするフォルダを限定。またsqliteと同時に使うには下記のような書き方となる。

claude_desktop_config.json

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

 次にnpxを使うのでnvmをインストールする。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
※ xcode-selectも必要。無い場合は xcode-select --install

 これでClaude Desktopを再起動すれば準備完了だ。

 機能的には

  • create_directory
  • get_file_info
  • list_allowed_directories
  • list_directory
  • move_file
  • read_file
  • read_multiple_files
  • search_files
  • write_file

 read_fileもあるので、本原稿執筆途中のtxtをDownloadsフォルダに入れ、

フォルダにテキストファイルありますか?

“フォルダにテキストファイルありますか?” と尋ねたところ、

12ClaudeMCP.txt
chat.txt

※chat.txtはこちら

と出る。“12ClaudeMCP.txtの内容を表示してください” で

12ClaudeMCP.txtの内容を表示してください
 このファイルはClaude MCPについての解説文書のようですね。主な内容は:

1. MCPの説明 (Model Context Protocol)
2. Claude MCPの使用方法
3. SQLiteとの連携方法
4. ファイルシステムとの連携方法

ファイルの内容は完全ではないようで、最後の部分が途切れているようです。ファイルの最後に参考URLのリンクが含まれています。

 このように要約も表示もされる。「最後の部分が途切れているようです」そりゃまだ書きかけなので(笑)。

 write_fileはどうするのだろう?と、1番目PCパーツのスレッドで“chatの内容をchat.txtに保存してください” とすると、このtxtファイルchat.txtが生成された。これがあるだけで実用度合いがグッと増す。ただ削除機能がないのは安全策か?

 いかがだろうか!?たとえばMySQLを接続すれば、DBの内容に合わせたコーディングと実行/確認なども容易。ドキュメントも骨組を任せることができそうだ(仕上げは筆者)。もちろんクラウドドライブ系のMCPを入れればクラウドでもリード/ライトできる。なかなか凄いことになってきた。

PCパーツのsqlite編。初めに組み込まれているMCP関連の機能一覧を表示している。最後コピペをミスって“れでPC組むといくらかかりますか?”となっているのはお許しを

 最後の1つ目PCパーツのsqlite編を動画にしたので(問いは同じだが結果が異なる)、操作や速度などを見てほしい。AIに興味ない人でも「お!」っとなるはずだ。


 以上のようにMCPは、Claude Desktopに限らずMCP対応のクライアントアプリからAIと対話しつつ外の世界とやり取りできる画期的な仕掛けだ。筆者の場合は主にプログラミング用途だが、ほかにもいろいろあるだろう。興味のある人は是非試して欲しい。

 冒頭に書いたように、LM StudioやOpen WebUIは執筆時未対応。Claudeばかり使っているとM4 Max 128GBが泣いてしまう(笑)。早急な対応を望みたい。