🚀 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 许可证。