🚀 Qwen3 MCP 服務器
Qwen3 MCP 服務器是一個完整的 MCP 服務器,它賦予 LM Studio 中的 Qwen3(或任何本地大語言模型)全面的編碼代理能力,包含 80 多種工具,可用於文件操作、命令執行、Git 操作、網頁搜索、內存管理、規劃以及一套完整的技能系統。
🚀 快速開始
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。
✨ 主要特性
- 兩種服務器模式:
- HTTP 模式:可通過瀏覽器在
http://localhost:3847/chat.html 進行聊天。
- MCP 模式:可直接與 LM Studio 的 MCP 接口集成。
- 80 多種工具,涵蓋:
- 文件操作(讀取、寫入、編輯、搜索、通配符匹配)
- 命令執行(shell 命令、後臺進程)
- 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
# 在瀏覽器中打開聊天界面
http://localhost:3847/chat.html
高級用法
{
"mcpServers": {
"qwen3-mcp": {
"command": "node",
"args": ["<YOUR_PATH>/src/index.js"],
"cwd": "<YOUR_PATH>"
}
}
}
將上述配置添加到 ~/.lmstudio/mcp-servers.json 中,以在 MCP 模式下使用。
📚 詳細文檔
項目結構
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 |
運行 shell 命令(參數: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 工具默認讀取 500 行,以防止 LM Studio WebSocket 超時。對於大文件,可使用分頁:
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 許可證。