LinoGPT
OpenWebUI + LM Studio + MCP 集成
一个可直接投入生产的Docker设置,它将OpenWebUI与LM Studio连接起来,并完全支持模型上下文协议(MCP)。通过一个熟悉的类似ChatGPT的界面,运行具备网络搜索、HuggingFace及其他工具调用能力的强大本地大型语言模型(LLM)。
✨ 特点
- 🚀火箭/飞速前进/快速上升(根据上下文可灵活翻译) 零配置MCP(微型计算机产品)自动发现来自LM Studio的MCP服务器
mcp.json - 🔍 看起来像放大镜的符号,通常用于表示“查看”、“搜索”或“调查”的意思。在中文中,可以简单地翻译为“🔍(放大镜)”。不过,具体翻译时,根据上下文,也可以灵活地表达为“查看”、“搜索”或“调查”等含义。 网络搜索集成Tavily搜索,具备智能查询构建功能
- 🤗 表示笑脸或开心的表情。 HuggingFace 集成通过MCP访问HF模型和数据集
- 💭(表示思考或脑海中的想法) 思考代币显示O1风格的推理过程
- ⚡(闪电符号,无特定含义,可表示速度、能量、惊喜等) 流式响应实时流媒体传输,附带工具执行指示器
- 🐳 表示“海豚”或“海豚的叫声”。在中文网络用语中,这个表情符号常被用来表达可爱、俏皮或轻松的氛围,类似于“萌萌哒”或“有点小调皮”的感觉。不过,具体含义也可能因语境和使用者的不同而有所变化。 基于Docker的使用docker-compose轻松部署
- 🎨 表示绘画或艺术创作的符号,可翻译为“🎨(绘画/艺术创作)”。在实际语境中,这个符号通常用来表示与绘画或艺术相关的活动或兴趣。 可定制的全面的品牌支持(定制logo、名称等)
📋 先决条件
- Docker 和 Docker Compose 安装
- LM Studio v0.3.17或更高版本(支持MCP)
- 至少16GB内存(建议用于运行大型模型)
- 约50GB的磁盘空间用于模型和Docker卷
🏗️ 建筑学
┌─────────────────┐
│ OpenWebUI │ Port 3000 - Web Interface
│ (Docker) │
└────────┬────────┘
│ OpenAI API format
↓
┌─────────────────┐
│ LM Studio │ Port 5003 - Translation Proxy
│ Proxy │
│ (Docker) │ • Reads LM Studio's mcp.json
└────────┬────────┘ • Converts OpenAI → LM Studio format
│ /v1/responses • Handles streaming & tool calls
↓
┌─────────────────┐
│ LM Studio │ Port 5002 - Local LLM Server
│ (Host Machine) │
└────────┬────────┘ • Runs local models (Llama, Mistral, etc.)
│ Remote MCP • Executes tool calls via MCP
↓
┌─────────────────┐
│ MCP Servers │ HTTP/HTTPS - Tool Providers
│ (URLs) │
└─────────────────┘ • Tavily (web search)
• HuggingFace (ML tools)
• Custom MCP servers🚀 快速入门
1. 安装并配置LM Studio
- 下载 LM Studio (v0.3.17+)
- 加载一个模型(推荐:
gpt-oss-120b或类似具有调用工具能力的模型) - 启用远程MCP(管理控制面板):
- 首选 设置 → 开发者选项 - 启用 “允许MCP → 远程”
- 启动本地服务器(端口5002)
2. 在LM Studio中配置MCP服务器
编辑 ~/.lmstudio/mcp.json (macOS/Linux) 或 %USERPROFILE%\.lmstudio\mcp.json (Windows):
{
"mcpServers": {
"tavily": {
"url": "https://mcp.tavily.com/mcp/?tavilyApiKey=YOUR_TAVILY_API_KEY"
},
"hf-mcp-server": {
"url": "https://huggingface.co/mcp",
"headers": {
"Authorization": "Bearer YOUR_HF_TOKEN"
}
}
}
}重要提示: 仅 基于URL的MCP服务器 与远程MCP协同工作。不支持基于命令的服务器(Docker)。
获取API密钥:
- Tavily(注:此词在中文中无直接对应词汇,若作为专有名词或特定项目名,可保持原样或根据上下文意译为“塔维利”等,但在此处直接音译为“塔维利”以保留原样): 在tavily.com上注册
- HuggingFace(注:Hugging Face是一个提供自然语言处理模型和工具的平台,此处直接音译为“哈ugging面”并不准确,但按照要求仅翻译原名,实际使用时应采用更准确的表述): 在huggingface.co上创建令牌
3. 在LM Studio中测试MCP服务器
在运行代理之前,请确认您的MCP服务器正常工作:
- 在LM Studio中,开始聊天
- 问: *“搜索最新的AI新闻”*
- 确认您看到工具正在执行(应显示“正在搜索...”)
如果工具无法使用,请检查:
- 在设置中已启用远程MCP
- API密钥是正确的
mcp.json - LM Studio 服务器正在运行
4. 克隆并配置LinoGPT
git clone https://github.com/latent-variable/LinoGPT.git
cd LinoGPT更新 docker-compose.yml 文件:
查找您的主机机器的IP地址:
# macOS/Linux
ifconfig | grep "inet " | grep -v 127.0.0.1
# Windows
ipconfig更新 LM_STUDIO_BASE in lm-studio-proxy.py 第22行:
LM_STUDIO_BASE = "http://YOUR_HOST_IP:5002" # e.g., http://192.168.1.100:5002更新 mcp.json 中的挂载路径 docker-compose.yml 第57行:
volumes:
- /YOUR/PATH/TO/.lmstudio/mcp.json:/app/mcp.json:ro5. 启动LinoGPT
docker-compose up -d6. 访问界面
打开您的浏览器: http://localhost:3000 翻译为中文是:“本地主机上的3000端口”。不过,通常我们不会直接这样翻译URL,而是根据上下文理解为“访问本地运行的某个Web应用或服务,该服务监听在3000端口上”。在中文环境中,我们可能会说“访问本地3000端口的服务”或“打开本地3000端口的网页”
- 第一个注册的用户成为管理员
- 后续用户可以注册(可配置)
🎨 定制化
品牌塑造/品牌建设
更新 docker-compose.yml 环境变量:
environment:
- WEBUI_NAME=YourAppName
- RESPONSE_WATERMARK=Generated by YourApp自定义Logo
替换 linogpt-meme.jpeg 和 favicon/ 使用包含你自己的图片的目录,然后重新构建:
docker-compose up -d --build open-webui系统提示
在OpenWebUI中进行配置:
- 首选 设置 → 文档 → 系统提示
- 添加您的自定义提示
🔧 管理命令
# View logs
docker-compose logs -f
# View specific service logs
docker-compose logs -f lm-studio-proxy
docker-compose logs -f open-webui
# Restart services
docker-compose restart
# Rebuild after code changes
docker-compose up -d --build
# Stop all services
docker-compose down
# Stop and remove all data (fresh start)
docker-compose down -v📚 添加更多MCP服务器
- 编辑
~/.lmstudio/mcp.json:
{
"mcpServers": {
"tavily": { ... },
"your-new-server": {
"url": "https://your-mcp-server.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}- 重启代理服务器:
docker-compose restart lm-studio-proxy- 验证其已加载:
docker-compose logs lm-studio-proxy | grep "Loaded MCP server"🐞 故障排除
MCP 工具无法正常工作
检查LM Studio设置:
# Verify Remote MCP is enabled
# Settings → Developer → Allow MCP → Remote ✓检查mcp.json是否已挂载:
docker exec lm-studio-proxy cat /app/mcp.json检查代理日志:
docker-compose logs lm-studio-proxy | grep -i "mcp"OpenWebUI 无法连接到代理
验证容器是否正在运行:
docker-compose ps测试代理健康状况:
curl http://localhost:5003/health流式响应在响应中途停止
检查超时设置 lm-studio-proxy.py 第238行:
timeout=(10, 300) # Increase if tool execution takes longer“响应提前终止”错误
通常由MCP服务器超时引起。请检查:
- MCP服务器可访问(可直接在LM Studio中尝试)
- API密钥有效
- 网络连接
🔐 安全注意事项
- API密钥在
mcp.json应保持安全 - 对于生产,考虑以下几点:
- 启用身份验证(WEBUI_AUTH=true) - 使用密钥管理API密钥 - 使用反向代理设置HTTPS
- 代理挂载
mcp.json作为只读
📖 附加文件
🤝 贡献(或“参与贡献”)
欢迎投稿!请:
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支
- 进行你的更改
- 提交拉取请求
📝 许可证
MIT 许可证 - 请参阅 许可证 文件中有详细信息
🙏 致谢
- LM Studio - 支持MCP的本地LLM推理
- OpenWebUI - 美观的类似ChatGPT的界面
- “Anthropic”翻译成中文是“人类中心主义的”或“以人类为中心的”。这个术语通常用于描述一种哲学观点或立场,即认为人类在宇宙或自然界中具有特殊的地位或中心性 - 模型上下文协议规范
- Tavily(音译,无具体含义,可能为品牌名或特定术语) - AI优化的网页搜索API
______________________________________________________________________
由❤️倾心打造 利诺·瓦尔多维诺斯
*如果你觉得这个有用,请给这个仓库点⭐(点赞)!*
