ラベル MCP の投稿を表示しています。 すべての投稿を表示
ラベル MCP の投稿を表示しています。 すべての投稿を表示

2026年6月11日木曜日

VSCode + copilot + Playwright MCP サーバでブラウザ操作をする

VSCode + copilot + Playwright MCP サーバでブラウザ操作をする

概要

過去に puppetter を使いましたが vscode + copilot がいい感じらしいのでそっちも試してみます

環境

事前作業

nodejs が必要なのでインストールしましょう

https://nodejs.org/ja/download

インストール

拡張機能の一覧から playwright-mcp をインストールできるのでそこからインストールしましょう

@mcp playwright で検索しインストールしましょう

検索できない場合は settings.json で以下を追加します

{
	"chat.mcp.gallery.enabled": true
}

なおこの設定は C:\Users\username\AppData\Roaming\Code\User\mcp.json にあります

{
	"servers": {
		"microsoft/playwright-mcp": {
			"type": "stdio",
			"command": "npx",
			"args": [
				"@playwright/mcp@latest"
			],
			"gallery": "https://api.mcp.github.com",
			"version": "0.0.1-seed"
		}
	},
	"inputs": []
}

起動する

インストールした MCP の設定ページから起動します
「Start Server」で起動できます

起動ログが下部のターミナル画面に表示されるので問題なく表示されることを確認しましょう

自動起動したい場合は settings.json に以下を追加しましょう

{
	"chat.mcp.autostart": "newAndOutdated"
}

動作確認

copilot のプロンプトに以下のように入力しましょう

https://hawksnowlog.blogspot.com/ にアクセスしホームページのスクリーンショットを送ってください

これで別途ブラウザが起動しスクリーンショットを保存してくれます
スクリーンショットは png 形式で開いているプロジェクトのルートに保存されます
また .playwright-mcp というディレクトリが作成され処理中のファイルが保存されるので不要であれば .gitignore に追加しておきましょう

プロンプトが雑だと「Sorry, the response matched public code so it was blocked. Please rephrase your prompt.」になるので playwright-mcp が反応してくれそうなワード (例えばスクリーンショットを取得してやここをクリックしてなど) をプロンプトに追加するようにしましょう

最後に

VSCode + copilot + playwright mcp でブラウザを自動操作してみました
設定自体はかなり簡単です

問題はブラウザのプロファイルで完全に新規のプロファイルになるのでセッション情報などがありません
つまりログイン済みのページや認証が必要なページなどはアクセスできません

このあたりも解決方法があれば紹介したいと思います

参考サイト

2025年10月7日火曜日

VSCode + Excel MCP を試す

VSCode + Excel MCP を試す

概要

VSCode で Excel MCP を試してみました
Excel の MCP はたくさんあるのですが今回は negokaz/excel-mcp-server を使います
なおクライアントは Github copilot chat ではなく前回同様 RooCode を使います

環境

  • Windows11
  • nodejs 22.20.0 (nvm for windows)
  • VSCode 1.104.3
  • RooCode 3.28.15

node のインストール

ここから最新の nvm-setup.exe をダウンロードして nvm をインストールします

nvm がインストールできたら Powershell を開いて以下を実行します

  • nvm install 22.20.0
  • nvm use 22.20.0

VSCode のターミナルを開いて node -v が実行できれば OK です

Excel MCP の追加

  1. 左メニューの RooCode のアイコンをクリック
  2. 右上の「・・・」のメニューをクリック
  3. 「MCP Servers」を選択
  4. グローバルMCPを編集

で以下を追記します

{
  "mcpServers": {
    "excel": {
      "command": "npx",
      "args": [
        "--yes",
        "@negokaz/excel-mcp-server"
      ],
      "env": {
        "EXCEL_MCP_PAGING_CELLS_LIMIT": "4000",
        "EXCEL_MCP_DEFAULT_FILE_PATH": "C:/path/to/your_excel_file.xlsx",
        "EXCEL_MCP_USE_EXCELIZE": "true"
      }
    }
  }
}

これで保存して Excel MCP サーバがグリーンランプになり起動することを確認します

動作確認

RooCode のチャットを使ってエクセルを操作していみましょう

以下のように入力してみてください

MCP を使って C:/path/to/your_excel_file.xlsx の内容を説明してください

すると MCP の excel_describe_sheetsexcel_read_sheet などの命令を使ってエクセルを読み取りエクセル内の情報を表示してくれるのが確認できると思います

自動承認に MCP を入れると楽です

最後に

Excel MCP を使ってみました
今回は読み取りだけ行ってみましたが書き込みなども可能です
ただ複雑なエクセルはどこまでできるか不明なのでその辺りの検証という MCP を使ってどこまでするかの線引は必要かなと思います

参考サイト

2025年9月24日水曜日

RooCode で git mcp を使ってコードレビューしてもらう方法

RooCode で git mcp を使ってコードレビューしてもらう方法

概要

code-server にインストールした RooCode を使って MCP サーバを設定します
今回は https://github.com/modelcontextprotocol/servers/tree/main/src/git を使いコードレビューする方法を紹介します

環境

  • Ubuntu 24.04
  • code-server 4.103.2
  • RooCode 3.28.7
  • uv 0.8.22

Python の設定

  • pyenv global 3.12.11

uv のインストール

  • curl -LsSf https://astral.sh/uv/install.sh | sh

mcp サーバ追加

mcp-server-git で管理するパスを --repository オプションで指定します
code-server の場合 code-server で開いているプロジェクトに合わせるようにしましょう

  • mcp_settings.json
{
  "mcpServers": {
    "git": {
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/home/devops/infra"
      ]
    }
  }
}

記載できたら mcp-server-git が起動していることを確認しましょう
うまく起動できていない場合は code-server のプロセスが uv コマンドを参照できていない可能性があるので PATH に通っているかなど確認しましょう

なお mcp_settings.json のフルパスは /home/username/.local/share/code-server/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json にあります

動作確認

RooCode で新規にタスクを作成して mcp-server-git が使えることを確認しましょう
例えば「直近10件のコミットログを参照してざっくり内容を説明してください」と指定するとちゃんと mcp-server-git を使うための確認ダイアログが表示されることが確認できます

レビューのために使えそうなプロンプト

  • xxxブランチの内容をレビューしてください
    • xxxブランチを手元に持ってくる必要があるがPRなどの内容をレビューはこれでできます
  • xxxリビジョンの説明をしてください
    • ピンポイントでリビジョンを指定してレビューしたい場合はこちら
  • 現在のdiffのレビューをしてください
    • まだコミットする前にレビューしてもらう場合にはgit diffを使ってレビューすることもできます

最後に

mcp-server-git を使って RooCode でレビューする方法を紹介しました
レビューしてもらったあとに大抵は提案もしてくれるので提案の修正をお願いすればファイルをそのまま修正してくれます

gitのunstageファイルがうまく取得できないケースがあったのでunstageなファイルのレビューは少し工夫がいるのかもしれません

あとは Github や Gitlab を使っている場合はそれ専用の MCP サーバがあり手元にブランチを持ってこないでも PR の内容を直接レビューしてくれるのでもし専用の MCP サーバがある場合はそちらを使ったほうが簡単な場合があります

今回の方法はどんな git リポジトリにも使える汎用的な方法になります

2025年9月19日金曜日

emacs の copilot-chat.el で MCP サーバと連携する

emacs の copilot-chat.el で MCP サーバと連携する

概要

まだテスト段階ですが使えるようなので使ってみました
モデルは gpt4-1 にしています

emacs はバージョン30以上が必要です

環境

  • Ubuntu 24.04
  • emacs 30.1
    • copilot-chat.el 20250909.1505
    • mcp.el 20250829.1241

設定

copilo-chat 起動後に設定が読み込まれその後 mcp-hub-start-all-server を実行すると mcp サーバが起動するようにします

MCP にアクセスを許可するディレクトリ (/home/devops) はシンボリックリンクだとうまく動作しないので実フォルダを指定しましょう

(use-package
 mcp
 :ensure t
 :after copilot-chat
 :custom
 (mcp-hub-servers
  '(("filesystem" .
     (:command
      "npx"
      :args
      ("-y"
       "@modelcontextprotocol/server-filesystem"
       "/home/devops")))))
 :config (require 'mcp-hub)
 :hook (after-init . mcp-hub-start-all-server))

MCPサーバ起動

  • copilot-chat
  • mcp-hub-all-start-server
Started server filesystem (/1/1)

となれば起動完了です
ps aux | grep npx などでプロセスを確認しても OK です

copilot-chat.el に MCP サーバ登録

  • copilot-chat-set-mcp-servers

上記を実行するとまずは追加する MCP サーバを選択するミニバッファが起動します
今回は1つしかないですが複数ある場合はその分を数字を教えて有効にします
All でも OK です

emacs 上にまだ copilot-chat インスタンスが起動していない場合は新規で作成するか既存のインスタンスを選択するミニバッファが表示されます

自分が試してみた感じ新規でインスタンスを作成しないと MCP サーバを使ってくれなかったので新規で作成しましょう

動作確認

copilot-chat のバッファで指示してみましょう   ちゃんと結果が返ってくることを確認します

MCP 初回実行時はツールを実行する確認があるので yes で許可します

最後に

emacs + copilot-chat.el + mcp を試してみました
ちゃんと Copilot Chat バッファで命令した際に MCP を使うことが確認できました
公式だとモデルは Claude のほうが良いようなのですが gpt4-1 でもちゃんと動作しました

今回は copilot-chat 起動 -> MCP サーバ起動 -> MCP サーバを copilot-chat を連携という感じの3段階で設定したので面倒な感じはしますが .emacs に自動起動する設定を書けばすべて一発で起動することもできます

MCP と関係はないですがまだ vscode の Github Copilot Chat の拡張にあるエージェントモードには対応していないようです (参考サイトの issues 参照)

参考サイト

2025年8月27日水曜日

RooCode で MCP サーバ入門

RooCode で MCP サーバ入門

概要

前回 VSCode に RooCode をインストールし簡単に試してみました
今回は MCP と連携する方法を紹介します

環境

  • Windows11
  • VSCode 1.103.2
    • RooCode 3.25.23
  • node 22.15.1 (via nvm for windows)

node のインストール

MCP は今回 File System を使います
npx で動作するので nodejs を事前にインストールしておきましょう
VSCode のターミナルで node -v を実行しバージョンが表示される環境であれば何でも OK です

MCP の追加

  1. 左メニューの RooCode のアイコンをクリック
  2. 右上の「・・・」のメニューをクリック
  3. 「MCP Servers」を選択
  4. 「MCP マーケットプレイス」を表示
  5. 「File System」をインストール
  6. インストール範囲の選択
  • プロジェクトだとそのプロジェクト内でのみ MCP サーバが起動します
  • グローバルだとどのプロジェクトを開いても MCP サーバが起動します
  • File System の場合はどのプロジェクトでも使うのでグローバルでもいいかなと思います
  1. Allowed Directory の設定
  • Windows であれば C:\\Users\\username などを設定します
  • バックスラッシュはエスケープが必要なので2つ入力するので注意しましょう

インストールが完了して起動していれば OK です
起動の確認は先程の「・・・」->「MCP Servers」の一覧でステータスが緑になっていることを確認するか VSCode のターミナルで

  • tasklist | Select-String -Pattern "node"

と実行してプロセスがあることを確認しましょう

mcp_settings.json の場所

グローバルの場合は以下でした

C:\Users\username\AppData\Roaming\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\mcp_settings.json

動作確認

RooCode のターミナルで動作確認します
デフォルトだとプロジェクト配下しか検索しないので Allowed Directory で指定したパスを明示的に教えたほうが確実です

また自動承認に「MCP」を追加しておくことをおすすめします

MCPを使って C:\\Users\\username から ps1 拡張子のファイルを検索してください

CPU がフル回転して MCP 経由でファイルが探索されているのが確認できると思います

最後に

RooCode で MCP サーバと連携してみました
Windows の場合アンチマルウェア対策などがされているとうまく MCP サーバが動作しないことがありそうです

ちなみにこの方法は code-server でも動作します (code-server は拡張を使うので要 https 化)

参考サイト

2025年5月22日木曜日

Mac で Claude クライアントを使って mcp-server-puppetter を使ってみた

Mac で Claude クライアントを使って mcp-server-puppetter を使ってみた

概要

前回は Windows + mcpo + mcp-server-puppetter で試しました
結果が微妙だったので比較のために Mac + Claude の組み合わせでも試してみます

環境

  • macOS 15.4.1
  • npx 10.9.2
  • claude desktop 0.9.3

claude_desktop_config.json

  • vim ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
    }
  }
}

Claude 起動

mcp-server-puppetter が有効になっていることを確認します

動作確認

命令は以下です

puppetter mcp で chrome を起動し「hawksnowlog」と検索し検索結果をテキストファイルに保存してください

で結果を確認すると勝手にブラウザが起動しかつ selector で DOM 検索がない場合などに自動で再帰的に検索をかけ直し正しい DOM を見つけたりしてくれました
ここまでやってくれると(時間はかかりますが)かなり便利な感じはします

最後に

Windows + mcpo では puppetter のインストールやらいろいろしなければいけなかったのですが Mac 上では特に設定は不要でした
また Chrome の立ち上げも Windows だと詳細な命令が必要だったのですが Mac + Claude では不要でした
この挙動の原因として考えられるのは

  • LLM が異なることによる mcp への命令の精度の違い
  • mcpo が悪さしている

あたりかなと思います
Windows でも Claude クライアントを使えば同じような結果が得られるかもしれません

参考サイト

2025年5月21日水曜日

Windows11 で mcp server puppetter を使ってみた

Windows11 で mcp server puppetter を使ってみた

概要

mcpo で mcp-server-puppetter を動かす方法を紹介します

環境

  • Windows11 24H2 (26100.4061)
  • Python 3.12.10
  • node 22.15.1
    • puppetter 24.8.2
  • LLM (gpt4o-mini with open-webui

mcpo 環境構築

mcpo を動かすために Python 環境を構築します
Powershell で操作します

  • Set-ExecutionPolicy RemoteSigned -Scope Process
  • Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
  • pyenv install 3.12.10
  • mkdir python_work
  • cd python_work
  • pyenv local 3.12.10
  • pip install pipenv
  • pipenv install mcpo

puppetter のインストール

nvm を使ってインストールします
https://github.com/coreybutler/nvm-windows/releases から Windows 用の nvm をインストールします

  • cd python_work
  • nvm install 22.15.1
  • nvm use 22.15.1
  • $Env:PUPPETEER_SKIP_DOWNLOAD = "skip"
  • $Env:NODE_TLS_REJECT_UNAUTHORIZED = "0"
  • npm install -g puppeteer
  • npm install puppeteer
  • npx puppeteer browsers install chrome

mcpo の設定

  • vim config.json
{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
    }
  }
}

mcpo 起動

  • pipenv run mcpo --port 8000 --host 127.0.0.1 --config .\config.json --api-key "top-secret"
Starting MCP OpenAPI Proxy with config file: .\config.json
2025-05-19 14:35:08,611 - INFO - Starting MCPO Server...
2025-05-19 14:35:08,611 - INFO -   Name: MCP OpenAPI Proxy
2025-05-19 14:35:08,611 - INFO -   Version: 1.0
2025-05-19 14:35:08,611 - INFO -   Description: Automatically generated API from MCP Tool Schemas
2025-05-19 14:35:08,611 - INFO -   Hostname: fjct-1267
2025-05-19 14:35:08,611 - INFO -   Port: 8000
2025-05-19 14:35:08,611 - INFO -   API Key: Provided
2025-05-19 14:35:08,611 - INFO -   CORS Allowed Origins: ['*']
2025-05-19 14:35:08,611 - INFO -   Path Prefix: /
2025-05-19 14:35:08,611 - INFO - Loading MCP server configurations from: .\config.json
2025-05-19 14:35:08,621 - INFO - Configured MCP Servers:
2025-05-19 14:35:08,621 - INFO -   Configuring Stdio MCP Server 'puppeteer' with command: npx with args: ['-y', '@modelcontextprotocol/server-puppeteer']
2025-05-19 14:35:08,621 - INFO - Uvicorn server starting...
INFO:     Started server process [2896]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

Waiting for application startup. で止まる場合は puppetter がうまくインストールできておらず裏で動作していない可能性があります

open-webui の設定

http://127.0.0.1:8000/puppetter を接続に追加しましょう

動作確認

open-webui から質問します
これがかなり大変でした
アバウトな質問だとボタンやフォームが全く検索できないので結構しっかりとした質問にしなければ意図した動きをするのは難しいかなと思います

例えば Google で検索するだけでも以下のような質問が必要でした

puppeteer mcp を使ってブラウザを立ち上げてgoogle.comにアクセスしてhawksnowlogと検索してください、launchOptions で executablePath に "C:\Program Files\Google\Chrome\Application\chrome.exe" を使用してください、google.com にアクセス出来たら検索ボックスに hawksnowlog と入力し検索ボタンを押して下さい、検索ボックスの id は #APjFqb です

同じ質問でも動かないケースがあるのでかなり不安定でした

トラブルシューティング

  • Error: Could not find Chrome

なぜか puppetter からデフォルトの chrome.exe が見えないことがあるようです
puppetter 起動時に launchOptions で executablePath というオプションがあるので LLM の質問を使ってうまくこのオプションを指定するようにしましょう

最後に

Windows11 上に mcp-server-puppetter をインストールして試してみました
質問をかなり工夫しないと思ったように動かないのでまだまだ発展途中かなと思います

LLM を変えたり別の mcp-server を使うのもありですが現状てっとり早いのは puppetter のコードをチャットで書いてもらって自分で実行するのが一番確実で速いと思います

参考サイト

2025年5月19日月曜日

minecraft-mcp-server を使ってみた

minecraft-mcp-server を使ってみた

概要

minecraft-mcp-server を使って自然言語で建築などができる環境を構築、検証してみました

環境

  • macOS 15.4.1
  • npx 10.9.2
  • claude desktop 0.9.3
  • Minecraft Java Edition 1.21.4

マイクラのワールドをLANに公開する

普通にシングルプレイヤーでワールドを作成します
そして ESC -> LANに公開で Claude から接続できるようにします
ポートはこの次の画面で設定しますが 25565 ポートでオープンしましょう

netstat -an | grep 25565
tcp46      0      0  *.25565                *.*                    LISTEN

claude 設定

  • vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "minecraft": {
      "command": "npx",
      "args": [
        "-y",
        "github:yuniko-software/minecraft-mcp-server",
        "--host",
        "localhost",
        "--port",
        "25565",
        "--username",
        "ClaudeBot"
      ]
    }
  }
}

claude の起動

設定ファイルを記載したら claude を起動しましょう
マイクラ側に ClaudeBot が参加すれば準備 OK です

動作確認

Claude で建築の指示を出してみましょう
実際に試してみるとわかりますが中々思うように動いてくれないようです

最後に

minecraft-mcp-server を試してみました
命令すると自動で動いているのは感動しますが動きが遅かったり中々思う通りに動いてくれないのでまだまだ発展の余地があるかなと思います
建築などを依頼するならバニラのような平地でないと厳しい気がします

基本はサバイバルモード前提で自分でブロックを採掘して何かしようとするのでたとえクリエイティブモードであってもブロックを勝手に補充したりとかはしないようです

自分はチートコマンドの /give を使ってある程度ブロックを与えて命令しました

また Claude の無料枠だとあっという間に制限がくるのでチャットに制限がないような環境でないと実用レベルでは難しいかなと思います

参考サイト

2025年5月16日金曜日

Blender MCP を使う

Blender MCP を使う

概要

LLM から Blender を操作して3Dモデリングができるようなのでやってみました
設定方法と簡単な動かし方を紹介します

環境

  • macOS 15.4.1
  • uv 0.7.3
  • claude desktop 0.9.3

uv インストール

  • brew install uv

MCP 設定

  • vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "blender": {
        "command": "uvx",
        "args": [
            "blender-mcp"
        ]
    }
  }
}

claude を再起動してツールに blender が追加されていることを確認します

Blender にアドオン追加

アドオンファイルをダウンロードし Blender を開いて追加します

  • git clone https://github.com/ahujasid/blender-mcp.git
  • Blender 起動
  • 編集 -> プリファレンス -> アドオン -> ディスクからインストール
  • 先ほど clone したディレクトリ内から addon.py を選択

MCP サーバの起動

起動は Blender 側から行います
Blender の画面でサイドバーを表示 (ショートカットは N) をします
そして「Connect to MCP Server」をクリックし起動します

起動すると 9876 ポートで LISTEN します

動作確認

これで準備完了です
あとは自然言語で命令すると勝手にモデリングしてくれます

ちゃんと色も付与されています ()

最後に

Claude デスクトップから Blender を操作し自然言語でモデルリングできる環境を構築しました
裏側では Python API が使われてモデリングしているようです

あとはどこまで複雑な命令を実行してくれるかかなと思います
Claude の無料枠だとすぐにトークンの制限になるのでなかなか細かいしていは難しいような気がします

参考サイト

2025年5月12日月曜日

OpenWebUI で Filesystem MCP Server を使ってローカルにあるファイルなどを操作する

OpenWebUI で Filesystem MCP Server を使ってローカルにあるファイルなどを操作する

概要

各種設定などは前回のものを流用しています

環境

  • Ubuntu 24.04
  • OpenWebUI 0.6.7
  • LiteLLM Proxy 1.68.1
  • Python 3.12.9
    • mcpo 0.0.13
    • mcp 1.8.0
  • secure-filesystem-server - v0.2.0

config.json

{
  "mcpServers": {   
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/home/devops"
      ]
    }
  }
}

/home/devops の部分は MCP サーバにファイルやディレクトリの操作を許可するパスをフルパスで指定します

OpenWebUI から接続の追加

これは前回までと全く同じです
URL は適宜変更してください

設定 -> ツール -> 追加

  • URL -> http://192.168.0.100:8000/filesystem
  • Auth -> Bearer top-secret

動作確認

あとは質問するだけですがいろいろと工夫が必要だったのでポイントを紹介します

  • フルパスで指定すること
    • 相対パスでは MCP サーバが起動しているパスからの相対パスで検索しようとするのでフルパスで指定したほうがいい
  • 質問に工夫が必要なケースがある
    • OK /home/devops/api 配下のファイルでファイル名に py が含まれるファイルの一覧を表示してください
    • NG /home/devops/api 配下に py で終わる拡張子のファイルの一覧を表示してください
    • 以下のようなクエリとなる質問にしなければならない
    • 拡張子などを質問に含めると pattern が「.*\\.py」というマッチしない条件になったりする
curl -X POST \
     -H "Authorization: Bearer top-secret" \
     -H "Content-Type: application/json" \
     -d '{"path": "/home/devops/api", "pattern": "py", "excludePatterns": []}' \
     http://localhost:8000/filesystem/search_files
  • Filesystem MCP サーバが実装している機能を確認したほうがいいかも (参考サイトのURL参照)
  • 便利な使い方はいろいろあるがローカルにあるプログラムへのパスを指定して「このファイルが何をしているか説明して」というのは便利
    • 今までは自分でコピペしてコンソールなどに食わせていたのがそれをしなくて済む
    • ただそのあと直接ファイルを編集してなどはできなかった (質問の仕方なのかそういった機能がないのかは不明)

最後に

Filesystem MCP サーバを OpenWebUI に導入してみました
自然言語でローカルのファイルを操作できるようになるのは便利かなと思います
ただシェルが扱えればわざわざ MCP サーバを導入するレベルでもないかなとは思いました

参考サイト

2025年5月11日日曜日

OpenWebUI で mcp-server-mysql を使って自然言語で MySQL を操作してみる

OpenWebUI で mcp-server-mysql を使って自然言語で MySQL を操作してみる

概要

前回 open-webui から mcp サーバに接続する方法法を紹介しました
今回は localhost にある mysql サーバに接続しいろいろな操作を試してみます
なお INSERT,UPDATE,DELETE も行える設定なのでテスト用のテーブルなどに対して行いましょう

環境

  • Ubuntu 24.04
  • OpenWebUI 0.6.7
  • LiteLLM Proxy 1.68.1
  • Python 3.12.9
    • mcpo 0.0.13
    • mcp 1.8.0
  • @benborla29/mcp-server-mysql - v0.1.18

nodejs 環境準備

mcp-server-mysql は nodejs で動作するので nodejs が動作する環境を準備します
何でも OK ですが今回は nvm を使う方法を紹介します

  • nvm use --save 20.19.0

ここで保存された .nvmrc があるパスで MCPO を動かします

config.json

mcpServers に追記します
今回は INSERT,UPDATE,DELETE も試したいので ALLOW_INSERT_OPERATION などは true に設定しています

{
  "mcpServers": {
    "time": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp/time"]
    },
    "mcp_server_mysql": {
      "command": "npx",
      "args": [
        "-y",
        "@benborla29/mcp-server-mysql"
      ],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "test",
        "MYSQL_PASS": "xxx",
        "MYSQL_DB": "devops",
        "ALLOW_INSERT_OPERATION": "true",
        "ALLOW_UPDATE_OPERATION": "true",
        "ALLOW_DELETE_OPERATION": "true"
      }
    }
  }
}

localhost で mysql -u test-p devops -h 127.0.0.1 でアクセスできれば上記でもアクセスできます

MCPO 起動

先ほど作成した .nvmrc と config.json があるパスで実行します

  • pipenv run mcpo --port 8000 --host 0.0.0.0 --config ./config.json --api-key "top-secret"

MCP サーバの接続

open-webui から行います
uri の部分は config.json に定義した MCP サーバのキー情報を入力します
Bearer は api_key で指定した情報をしていします   接続テストもしておきましょう

動作確認

チャット上のツールが増えていることを確認します
あとはテーブル情報などを含めて質問することでいろいろな操作をしてくれます

MCPO のログを見ると実際に投げている SQL の情報なども確認できます

最後に

open-webui + mcp-server-mysql を試してみました
自然言語でデータベースを操作できる時代が本格的に到来したなと実感しました
以下は試してみた感想です
本番ではまだ使わないほうが安全かなと思います

命令を詳細にすれば実用レベルになる気はします

  • 雑なSQLを投げたりするので本番では更新削除追加系はやらないほうがよさそう
    • WHERE 句 id などのユニークキーを使わずに更新や削除を行ったりする
    • 命令をしっかりすれば id を使ってやってはくれそうだが雑な質問だとやらない
  • コンテキストがおかしくなる場合があるのでSQLを投げたい場合は新規のチャットを作成したほうがいい
  • 外部キー制約などがある場合はそれも伝えるとやってくれる
    • 「先にAテーブルの外部キーを削除してからBテーブルのレコードも削除して」など
  • データをINSERTするときは各カラムの情報を正確に伝えないとやってくれない
    • テーブルの各カラムに制約がある場合などはちゃんと伝えなければダメそう
    • 適当な値でお願いしますと命令もできるがその場合はテーブルのスキーマ情報から適当な数値や文字列を入れようとはする

参考サイト

2025年5月10日土曜日

OpenWebUI で MCP を使う方法

OpenWebUI で MCP を使う方法

概要

OpenWebUI 上でも MCP サーバと連携していろいろなエージェントや拡張ツールを動かすことができるので試してみました
今回は簡単な mcp/time サーバを使って LLM 経由で現在時刻が取得できるようにしてみます

環境

  • Ubuntu 24.04
  • OpenWebUI 0.6.7
  • LiteLLM Proxy 1.68.1
  • Python 3.12.9
    • mcpo 0.0.13
    • mcp 1.8.0

事前準備

litellm と open-webui は前回の記事を元に起動中とします

compose.yaml、litellm_config.yaml、.env を用意して起動しておきます

mcpo のインストール

mcpo は Python 制のツールなので pip でインストールできます
mcpo 経由でローカルホストにアクセスしたりするので可能な限り mcpo で操作させたいホストで直接起動しましょう

  • pipenv install mcpo

で OK です
上記では pipenv を使って venv 上にインストールしていますが問題なければグローバルにインストールしても OK です

MCPO 用の config.json の準備

この config.json は一般的な MCP サーバ用の config.json と同じになります
起動したいコマンド (MCP サーバ) を羅列していけば OK です

  • vim config.json
{
  "mcpServers": {
    "time": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp/time"]
    }
  }
}

ここでローカルマシン上に mcp/time コンテナを起動する定義を記載します

MCPO の起動

先程も記載しましたが可能な限りコマンドなどを実行するホスト上で直接動かしましょう

  • pipenv run mcpo --port 8000 --host 0.0.0.0 --config ./config.json --api-key "top-secret"

ここで設定した api-key は open-webui から mcpo サーバに接続するときに使います

これで docker の状態は以下のようになります

  • docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED              STATUS                    PORTS                                         NAMES
385829c1f469   mcp/time                              "mcp-server-time"        About a minute ago   Up About a minute                                                       beautiful_bassi
26cb3f21bde5   ghcr.io/open-webui/open-webui:main    "bash start.sh"          22 minutes ago       Up 22 minutes (healthy)   0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp   open-webui
e38fe5175159   ghcr.io/berriai/litellm:main-latest   "docker/prod_entrypo…"   22 minutes ago       Up 22 minutes             0.0.0.0:4000->4000/tcp, :::4000->4000/tcp     litellm

OpenWebUI 上で MCPO サーバと接続設定をする

あとは open-webui 上から MCPO サーバに接続する設定をすれば OK です

設定からツールで MCPO を新規ツールとして接続します
ブラウザから直接アクセスするので localhost や local IP ではなくブラウザからアクセスできる IP アドレスを指定しましょう
また Bearer トークンに先ほど設定したシークレット情報を入力します

くるくるマークを押すと接続テストができるのでここでちゃんと接続できるか確認しておきましょう

動作確認

あとはチャットに戻り MCPO 経由で質問できるか確認します
まずチャット画面上でツールが有効になっているか確認します
ツールの数が 1 になっていれば OK です

また詳細を確認すると実際に MCPO で使えるコマンドが表示されます

あとは質問してみましょう

こんな感じでちゃんと MCPO 経由で回答が来ていることが確認できます

MCPO 側にも以下のようなログがあることが確認できると思います

INFO:     192.168.100.2:30848 - "POST /time/get_current_time HTTP/1.1" 200 OK

最後に

OpenWebUI で MCP と連携する方法を紹介しました
過去に紹介した Claude などは

  • Claude クライアント -> MCP サーバ

で直接通信していましたが OpenWebUI の場合は

  • OpenWebUI -> MCPO -> MCP サーバ

という感じで真ん中に一つ中継プロセスが入るのでそこが違います
そこまで負荷に影響はないですが挙動が少し異なるので認識しておきましょう

MCP サーバを追加したい場合は config.json に追記すれば OK です
MCP サーバも基本的にはローカルホストで起動するので追加しすぎると負荷になるので注意しましょう

参考サイト

2025年4月12日土曜日

Claude Desktop を使って MCP Server に入門してみる

Claude Desktop を使って MCP Server に入門してみる

概要

前回 Claude を Mac にインストールしてみました
今回は Claude Desktop の MCP クライアントとしての機能を使ってみます
サーバ側は https://github.com/github/github-mcp-server を使います
この MCP サーバは Github にある自身のリポジトリや Issue などを検索するのに役立ちます

環境

  • macOS 15.4
  • Claude desktop 0.9.2
  • docker 28.0.4

MCP サーバの追加

Claude desktop に MCP サーバを追加します
設定ファイルがあるのでそれに MCP サーバの定義を追加します

claude_desktop_config.json 自体は初回にはないので作成すれば OK です

  • vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

YOUR_TOKEN の部分には Github から取得したトークンを入力してください
MCP サーバはほぼすべての Github API を使用するので権限は多めに設定するのがいいかなと思います
MCP サーバに呼び出させたい API だけ権限を付与するのもありです

このように記載すると Claude 起動時に docker を使って自動で MCP サーバを起動してくれます

動作確認

初回起動時は Claude から docker へのアクセス権限がなく失敗するので許可してから再起動しましょう

MCP サーバが docker で起動していれば OK です

docker ps 
CONTAINER ID   IMAGE                              COMMAND                   CREATED        STATUS        PORTS     NAMES
3b725ec0e9a8   ghcr.io/github/github-mcp-server   "./github-mcp-server…"   1 second ago   Up 1 second             amazing_lumiere

これで Github に関する質問をすると MCP サーバを介して検索してくれます
最初に get_me という命令を使って自分の Github の情報を Claude が取得してもいいか聞かれるので許可します

こんな感じで Claude が MCP サーバを介して Github から必要な情報を取得してくれます

最後に

他にも公開されている MCP サーバはたくさんあるので助けてほしい項目のサーバがあれば追加してみるといいかなと思います

基本的には RAG に近い機能ではありますが MCP サーバを構築/追加するだけであるコンテキストに特化した情報が簡単に検索できるようになるので便利です
また MCP サーバというかアプリケーションなので例えば Github であれば Issue を作成したり Pull-Request の操作なども Claude desktop からできるようにもなります

起動した MCP サーバは Claude desktop を閉じれば自動的に停止します

参考サイト