🚀 Qwen3 MCP サーバー
Qwen3 MCPサーバーは、LM StudioのQwen3(または任意のローカルLLM)に完全なコーディングエージェント機能を付与する完全なMCPサーバーです。ファイル操作、コマンド実行、git、ウェブ検索、メモリ、計画立案、および完全なスキルシステムなど、80以上のツールが用意されています。
🚀 クイックスタート
HTTPモード(ブラウザチャット)
# サーバーを起動する
start-chat.bat
# ブラウザで開く
http://localhost:3847/chat.html
MCPモード(LM Studio直接接続)
LM StudioのMCP設定ファイル(~/.lmstudio/mcp-servers.json)に以下を追加します。
{
"mcpServers": {
"qwen3-mcp": {
"command": "node",
"args": ["<YOUR_PATH>/src/index.js"],
"cwd": "<YOUR_PATH>"
}
}
}
<YOUR_PATH> をサーバーをインストールした実際のパスに置き換えてください。
その後、LM Studioを再起動します。
✨ 主な機能
- 2つのサーバーモード
- HTTPモード - http://localhost:3847/chat.html でブラウザベースのチャットが可能です。
- MCPモード - LM StudioのMCPインターフェイスと直接統合できます。
- 80以上のツール
- ファイル操作(読み取り、書き込み、編集、検索、グロブ)
- コマンド実行(シェル、バックグラウンドプロセス)
- Git操作(ステータス、差分、コミット、ブランチ、プッシュ、プル)
- ウェブツール(検索、画像検索、URL取得)
- メモリと計画立案(ノート、スクラッチパッド、タスクリスト、計画)
- メディア(画像、PDF、スクリーンショットの読み取り)
- Jupyterノートブックサポート
- ComfyUI統合(32のワークフローツール)
- GitHubブログ(Jekyllブログの作成、テーマ、デプロイ)
- ツール名のエイリアス - サーバー側のルーティングが一般的なモデルのハリュシネーションを処理します(例:
edit -> edit_file, bash -> execute_command)
- スキルシステム - 16の事前インストール済みスキル + awesome-agent-skills からさらにスキルをインストールできます。
📦 インストール
前提条件
- Node.js 18以上
- モデルがロードされたLM Studio(Qwen3を推奨)
クイックセットアップ(Windows)
cd <YOUR_PATH>
setup.bat
これにより以下のことが行われます。
- npm依存関係のインストール
- 必要なディレクトリの作成
- LM Studio MCPの自動設定
手動セットアップ
npm install
npm run setup
npmスクリプト
| コマンド |
説明 |
npm run setup |
LM Studio MCPを設定します。 |
npm run start |
HTTPサーバーを起動します(ポート3847)。 |
npm run mcp |
MCPサーバーを直接実行します(標準入出力)。 |
npm run dev |
自動リロードで起動します。 |
💻 使用例
基本的な使用法
HTTPモードでの起動
start-chat.bat
MCPモードでのLM Studio設定
{
"mcpServers": {
"qwen3-mcp": {
"command": "node",
"args": ["<YOUR_PATH>/src/index.js"],
"cwd": "<YOUR_PATH>"
}
}
}
📚 ドキュメント
プロジェクト構造
qwen3-mcp/
├── src/
│ ├── index.js # MCPサーバー (標準入出力モード)
│ └── tools/ # ツールの実装
│ ├── filesystem.js # ファイル操作
│ ├── edit.js # ファイル編集
│ ├── bash.js # コマンド実行
│ ├── git.js # Git操作
│ ├── search.js # グロブ/グレップ検索
│ ├── web.js # ウェブ検索、取得
│ ├── memory.js # ノート、スクラッチパッド
│ ├── planning.js # 計画、タスク追跡
│ ├── tasks.js # タスクリスト
│ ├── thinking.js # 推論ツール
│ ├── context.js # 会話コンテキスト
│ ├── interaction.js # ユーザープロンプト
│ ├── media.js # 画像、PDF
│ ├── notebook.js # Jupyterサポート
│ ├── comfyui.js # ComfyUIワークフロー
│ ├── github-blog.js # Jekyllブログツール
│ └── skills.js # スキルシステム
├── frontend/
│ ├── server.js # HTTPサーバー (ポート3847)
│ ├── chat.html # ブラウザチャットインターフェイス
│ └── index.html # 画像ビューアインターフェイス
├── skills/ # インストールされたスキル (16)
│ ├── chrome-extension/ # Chrome拡張機能開発 (MV3)
│ ├── code-review/ # コードレビュー方法論
│ ├── comfyui-nodes/ # ComfyUIカスタムノード開発
│ ├── comfyui-workflow/ # ComfyUIワークフロー作成
│ ├── differential-review/ # セキュリティに焦点を当てた差分レビュー
│ ├── docx/ # Word文書作成
│ ├── frontend-design/ # フロントエンドUI/UX
│ ├── github-blog/ # GitHub Pages用のJekyllブログ
│ ├── mcp-builder/ # MCPサーバーの構築
│ ├── modern-python/ # Pythonツール (uv, ruff)
│ ├── react-best-practices/ # Reactパターン (Vercel)
│ ├── shadcn-ui/ # モダンなコンポーネントライブラリ
│ ├── static-analysis/ # CodeQL, Semgrep, SARIF
│ ├── testing-handbook-skills/ # ファザー、サニタイザー
│ ├── web-artifacts-builder/ # HTML/Reactプロトタイプ
│ └── web-design-guidelines/ # UI/UXの基本原則
├── start-chat.bat # HTTPサーバーを起動する
├── stop-chat.bat # サーバーを停止する
├── restart-chat.bat # サーバーを再起動する
└── install-skill.bat # GitHubからスキルをインストールする
利用可能なツール(80以上)
ファイル操作
| ツール |
説明 |
read_file |
行番号付きでファイル内容を読み取ります(パラメータ: file_path, offset, limit) |
write_file |
ファイルを書き込み/作成します(パラメータ: file_path, content) |
edit_file |
ファイル内で検索と置換を行います(パラメータ: file_path, old_string, new_string) |
list_directory |
ディレクトリの内容をリストします(パラメータ: path) |
create_directory |
ディレクトリを作成します(パラメータ: path) |
delete_file |
ファイルを削除します(パラメータ: path) |
move_file |
ファイルを移動/リネームします(パラメータ: source, destination) |
copy_file |
ファイルをコピーします(パラメータ: source, destination) |
file_info |
ファイルのメタデータを取得します(パラメータ: path) |
get_working_directory |
現在の作業ディレクトリを取得します |
set_working_directory |
作業ディレクトリを設定します(パラメータ: path) |
編集ツール
| ツール |
説明 |
insert_at_line |
特定の行に挿入します(パラメータ: file_path, line, content) |
replace_lines |
行範囲を置換します(パラメータ: file_path, start_line, end_line, content) |
append_to_file |
ファイルに追加します(パラメータ: file_path, content) |
prepend_to_file |
ファイルの先頭に追加します(パラメータ: file_path, content) |
検索
| ツール |
説明 |
glob_search |
パターンでファイルを検索します(パラメータ: pattern, cwd) |
grep_search |
正規表現でファイル内容を検索します(パラメータ: pattern, path) |
find_definition |
コード定義を検索します(パラメータ: name, path) |
コマンド実行
| ツール |
説明 |
execute_command |
シェルコマンドを実行します(パラメータ: command, cwd, timeout) |
execute_background |
コマンドをバックグラウンドで実行します(パラメータ: command, cwd) |
read_output |
バックグラウンドプロセスの出力を読み取ります(パラメータ: session_id) |
kill_session |
バックグラウンドプロセスを終了します(パラメータ: session_id) |
list_sessions |
実行中のプロセスをリストします |
Git
| ツール |
説明 |
git_status |
リポジトリのステータスを表示します |
git_diff |
変更内容を表示します |
git_log |
コミット履歴を表示します |
git_add |
ファイルをステージします |
git_commit |
コミットを作成します |
git_branch |
ブランチをリスト/作成します |
git_checkout |
ブランチを切り替えます |
git_push |
リモートにプッシュします |
git_pull |
リモートからプルします |
git_clone |
リポジトリをクローンします |
ウェブ
| ツール |
説明 |
web_search |
DuckDuckGoで検索します(パラメータ: query) |
web_image_search |
Bingで画像を検索してダウンロードします(パラメータ: query) |
web_fetch |
ウェブページの内容を取得します(パラメータ: url) |
web_fetch_image |
URLから画像をダウンロードします(パラメータ: url) |
メモリと計画立案
| ツール |
説明 |
memory_store |
タグ付きでノートを保存します |
memory_recall |
ノートを検索します |
memory_list |
すべてのノートをリストします |
scratchpad_write |
スクラッチパッドに書き込みます |
scratchpad_read |
スクラッチパッドを読み取ります |
plan_create |
実行計画を作成します(パラメータ: goal, steps) |
plan_status |
計画の進捗状況を確認します |
task_add |
タスクを追加します |
task_list |
タスクをリストします |
GitHubブログ
| ツール |
説明 |
blog_init |
GitHub Pages用のJekyllブログを初期化します |
blog_post_create |
新しいブログ記事を作成します |
blog_page_create |
静的ページを作成します |
blog_category_create |
カテゴリページを作成します |
blog_post_list |
すべてのブログ記事をリストします |
blog_nav_update |
ナビゲーションメニューを更新します |
blog_deploy |
GitHub Pagesにデプロイします |
blog_config |
ブログの設定を更新します |
blog_theme |
テーマプリセットまたはカスタムカラーを適用します |
blog_theme_list |
利用可能なテーマをリストします |
blog_jekyll_theme |
Jekyllのリモートテーマを適用します |
スキル
| ツール |
説明 |
list_skills |
インストールされたスキルをリストします |
load_skill |
スキルの説明を読み込みます |
install_skill |
GitHubからスキルをインストールします |
ユーティリティ
| ツール |
説明 |
get_current_time |
現在の日付/時刻を取得します |
calculator |
数学式を計算します |
think |
思考ノートを記録します |
ask_user |
ユーザーに入力を求めます |
スキルシステム
スキルは、AIに特殊なタスクを教える命令パッケージです。モデルはあなたの要求に基づいて自動的に読み込むスキルを検出します。
インストールされたスキル(16)
コード品質とセキュリティ:
- code-review - コードレビュー方法論
- differential-review - セキュリティに焦点を当てた差分レビュー
- static-analysis - CodeQL, Semgrep, SARIF
- testing-handbook-skills - ファザー、サニタイザー、カバレッジ
ウェブ開発:
- react-best-practices - Reactパターン (Vercel)
- web-design-guidelines - UI/UXの基本原則
- shadcn-ui - モダンなコンポーネントライブラリ
- frontend-design - フロントエンドUI/UX
- web-artifacts-builder - HTML/Reactプロトタイプ
ComfyUIとクリエイティブ:
- comfyui-nodes - カスタムノード開発 (V1 + V3 API)
- comfyui-workflow - ワークフロー作成 (SD1.5/SDXL/SD3.5/Flux)
開発ツール:
- chrome-extension - Chrome拡張機能開発 (MV3)
- mcp-builder - MCPサーバーの構築
- modern-python - Pythonツール (uv, ruff, pytest)
- docx - Word文書作成
- github-blog - GitHub Pages用のJekyllブログ
さらにスキルをインストールする
install-skill.bat https://github.com/anthropics/skills/tree/main/skills/pptx
スキルの使用方法
スキルはあなたの要求に一致すると自動的に読み込まれます。手動で読み込むこともできます。
"What skills do I have?"
"Load the comfyui-nodes skill"
"Use the docx skill to create a report"
設定
HTTPサーバーポート
frontend/server.js を編集します。
const PORT = 3847;
環境変数
| 変数 |
デフォルト |
説明 |
IMAGE_DOWNLOAD_DIR |
~/lmstudio-images |
画像のダウンロード先 |
LM Studioの設定(HTTPモード)
- モデルをロードします(Qwen3を推奨)
- APIサーバーを有効にします(デフォルト: localhost:1234)
- http://localhost:3847/chat.html を開きます
- 認証が有効になっている場合はAPIトークンを入力します
LM Studioの設定(MCPモード)
- MCP設定を追加します(上記のクイックスタートを参照)
- LM Studioを再起動します
- ツールが自動的にモデルコンテキストに表示されます
APIエンドポイント(HTTPモード)
| エンドポイント |
メソッド |
説明 |
/ |
GET |
画像ビューアUI |
/chat.html |
GET |
チャットインターフェイス |
/tool |
POST |
ツールを実行します {name, args} |
/skills |
GET |
スキルをリストします(JSON形式) |
/skill?name=X |
GET |
スキルの詳細を取得します |
テスト
curl -X POST http://localhost:3847/tool \
-H "Content-Type: application/json" \
-d '{"name":"get_current_time","args":{}}'
curl http://localhost:3847/skills
トラブルシューティング
サーバーの問題
# 実行中か確認する
curl http://localhost:3847/skills
# 再起動する
restart-chat.bat
# 強制停止する
stop-chat.bat
MCP接続の問題
- LM Studioのコンソールでエラーを確認します
- mcp-servers.json内のパスが正しいことを確認します
node src/index.js を手動で実行してテストします
read_fileのタイムアウト/WebSocketエラー
read_file ツールは、LM StudioのWebSocketタイムアウトを防ぐためにデフォルトで500行に設定されています。
大きなファイルの場合は、ページネーションを使用します。
read_file with offset=1, limit=100 # 1-100行目
read_file with offset=101, limit=100 # 101-200行目
ツール名のエラー
モデルが間違ったツール名を呼び出した場合(例: edit の代わりに edit_file)、サーバーには一般的な間違いをルーティングする組み込みのエイリアスがあります。エラーが引き続き発生する場合は、LM Studioのシステムプロンプトを更新してください — 正しいプロンプトについては SYSTEM_PROMPT.md を参照してください。
ツールのエラー
- HTTPモードの場合はブラウザのコンソール(F12)を確認します
- 作業ディレクトリのパーミッションを確認します
- LM Studioのモデルが関数呼び出しをサポートしていることを確認します
📄 ライセンス
MIT