构建可进行网络搜索的本地 AI 助手:MCP + Ollama 配置
如何将本地语言模型与网络搜索功能相结合,同时保护您的数据隐私
为商业用途配置 AI 工具,通常意味着在便利性和隐私之间做选择。云端方案使用方便,但会将您的数据发送到外部。本地方案把数据留在自己的机器上,但安装和扩展功能可能更复杂。
本文介绍一种兼顾两者的实用 AI 配置:本地语言模型在需要时可以搜索网络,同时将对话和处理过程留在您自己的硬件上。这与我们的自托管理念一致,就像此前介绍的运行自己的 n8n 自动化平台,让您完整掌控工作流。
我们使用的工具
先了解各个组件的作用:
Ollama:本地 AI 引擎
Ollama 是在您自己的电脑上运行大语言模型的软件。您可以获得类似 ChatGPT 的能力,而无需将任何内容发送给 OpenAI 或其他云服务商。它负责下载模型、管理内存,并通过简单的 API 提供模型服务。
核心优势是使用本地模型时,所有内容都留在本地。您的问题、AI 的回答,以及所有处理过程,都完全在您自己的机器上完成。对于敏感业务讨论、专有信息,或只是希望避免每月 AI 订阅费的情况,这一点都很重要。
Model Context Protocol(MCP):扩展能力
语言模型擅长对话和推理,却无法独自浏览网络、读取文件或与其他系统交互。Model Context Protocol(MCP) 通过标准化方式,让 AI 模型能够访问外部工具,从而解决这个问题。
可以将 MCP 理解为 AI 模型与其他软件之间的通用翻译器。希望 AI 搜索网络?有对应的 MCP 服务器。需要读取数据库?可以使用另一种 MCP 服务器。它的便利之处在于,配置好协议后,添加新能力会简单得多。
mcphost:可靠连接
这里开始进入实际配置。MCP 是标准,但仍需软件将本地 AI 模型真正连接到 MCP 服务器。mcphost 正是用于这项工作,而且表现良好。
我们最初尝试过其他方案,例如 ollmcp,却不断遇到连接超时和配置问题。mcphost 使用明确的配置文件,而不是尝试自动发现所有组件,因此在实际使用中能够可靠运行。截至 2026 年 10 月,mcphost 仓库已归档,维护者将 Kit 列为其后继项目;下方命令仍然针对 mcphost。
DuckDuckGo MCP 服务器:注重隐私的网络搜索
网络搜索方面,我们使用 DuckDuckGo MCP 服务器。它让本地 AI 通过 DuckDuckGo 搜索网络(服务器查询的是 DuckDuckGo 的 HTML 搜索端点,而非官方 API)。DuckDuckGo 的隐私政策声明,该服务不会追踪用户或保存搜索历史。这与注重隐私的本地配置相辅相成。
uv:Python 环境管理
uv 是快速的 Python 包管理器,负责创建隔离环境和管理依赖。我们用它独立运行 DuckDuckGo MCP 服务器,避免影响系统上的其他 Python 项目。
各组件如何协同工作
当您让本地 AI 搜索信息时,流程如下:
- 您输入问题,例如“搜索电子商务法规的最新进展”
- mcphost 接收消息,并将其转发给本地 Ollama 模型
- 模型识别出需要搜索,通过 MCP 协议调用 DuckDuckGo MCP 服务器
- MCP 服务器搜索 DuckDuckGo 并返回结果
- 本地模型处理搜索结果,给出完整回答
- 除实际发送的网络搜索查询外,所有内容都留在您的机器上
实际配置步骤
准备基础环境
首先,需要运行 Ollama,并使用支持工具调用的模型。我们推荐 qwen3:30b-a3b,它在能力与速度之间取得了良好平衡:
# Install and start Ollama
ollama pull qwen3:30b-a3b
ollama serve
安装 mcphost
mcphost 用 Go 编写,因此需要先安装 Go:
# On macOS
brew install go
# On Ubuntu/Debian
sudo apt install golang-go
# Install mcphost
go install github.com/mark3labs/mcphost@latest
# Make sure it's in your PATH
export PATH=$PATH:$(go env GOPATH)/bin
配置 DuckDuckGo 搜索
克隆并配置 DuckDuckGo MCP 服务器:
git clone https://github.com/nickclyde/duckduckgo-mcp-server
cd duckduckgo-mcp-server
pip install uv # if you don't have it
uv sync
可正常运行的配置
在 ~/.mcphost.json 创建配置文件:
{
"mcpServers": {
"duckduckgo-search": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/your/duckduckgo-mcp-server",
"python",
"src/duckduckgo_mcp_server/server.py"
]
}
}
}
将 /path/to/your/duckduckgo-mcp-server 替换为您克隆该仓库的实际路径。
使用新的 AI 助手
所有组件运行后,您可以通过几种方式与 AI 交互:
交互式对话
# Start a conversation
mcphost -m ollama:qwen3:30b-a3b
这会提供一个聊天界面,支持持续对话,并在需要时请求网络搜索。
一次性提问
# Get a quick answer
mcphost -m ollama:qwen3:30b-a3b -p "Search for information about EU data privacy laws"
自动化脚本
# Save results to a file
mcphost -m ollama:qwen3:30b-a3b -p "Search for competitors in the bowling equipment market" --quiet > research.txt
这套配置能做什么
研究与事实核查
让 AI 搜索与业务相关主题的最新信息。使用 DuckDuckGo,意味着您可以获得不错的网络搜索结果,同时避免被追踪。
内容研究
“搜索可持续包装的最新趋势”可以获得最新信息,模型随后结合训练中学到的知识进行分析和总结。
竞争情报
“搜索关于[竞争对手名称]的新闻,并总结其近期活动”可以提供最新信息,而无需与云端 AI 提供商分享您的分析;搜索查询本身仍会发送到 DuckDuckGo。
解决技术问题
“搜索 API 速率限制问题的解决方案”可以帮助您找到最新最佳实践和代码示例。
连接 n8n:让工作流自动化与 AI 结合
这里可以进一步扩展应用。正如此前介绍的自托管 n8n 实现工作流自动化,这套本地 AI 配置也可以集成到自动化工作流中。
例如,通过 n8n 工作流触发本地 AI:
- 自动化研究:每日运行工作流,搜索行业新闻并汇总摘要
- 内容生成:根据日历事件或表单提交触发内容创建
- 数据分析:自动处理上传的文档,并利用 AI 提取洞察
- 客户支持:由本地 AI 先处理支持工单,再交由人工审核
自托管 n8n 与本地 AI 组合成一套强大的自动化技术栈,除了助手发送到外部的网络搜索查询,数据都留在您的基础设施内。您既获得自动化的便利,也能对数据拥有更多控制权。
未来的集成方式
我们正在探索几种连接这些系统的方式:
- 本地 AI 提供可供 n8n 调用的 HTTP 端点
- 基于文件的集成:由 n8n 触发 AI 处理文档
- 数据库工作流:将 AI 结果接入自动化业务流程
- 邮件自动化:由本地 AI 辅助起草回复并进行个性化调整
就像我们的 WordPress 自动化工具能简化内容管理,将本地 AI 与 n8n 工作流结合,也能在保持数据主权的同时,将复杂业务流程自动化。
实际优势
有实际意义的隐私保护
您的业务对话、内部讨论和战略思考都留在自己的硬件上。只有网络搜索查询会发往外部,发送给注重隐私的 DuckDuckGo。这些查询不会包含完整对话,但查询文本本身可能透露您正在处理的事项,因此涉及敏感话题时需要留意。
无需每月支付订阅费
完成初始配置后,就没有持续的 AI 订阅费或按 token 计费的费用,但硬件、电力及使用的托管服务仍有成本。所有组件都运行在您自己的硬件上,就像自托管 n8n 可以免去昂贵的 SaaS 工作流工具费用一样。
可靠的运行表现
配置正确后,这套系统运行相当稳定,不再遇到“AI 服务宕机”或“达到本月用量上限”的问题。
可定制、可扩展
希望添加数据库搜索、文件读取或自定义业务逻辑?MCP 生态让新增能力变得简单,未来与 n8n 工作流集成,还能带来广泛的自动化可能。
常见问题与解决方法
“Command Not Found”错误
确保 Go 二进制文件所在目录已加入 PATH:
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.zshrc
source ~/.zshrc
连接超时
通常意味着 MCP 服务器未能正常启动。可以手动测试:
cd /path/to/duckduckgo-mcp-server
uv run python src/duckduckgo_mcp_server/server.py
模型不响应工具调用
确保使用支持函数调用的模型。并非所有 Ollama 模型都内置这种能力。
运行缓慢
如果硬件资源有限,可以考虑使用更小的模型,例如 qwen3:8b。降低温度参数会让回答更聚焦,但它控制的是随机性,而非速度:
mcphost -m ollama:qwen3:8b --temperature 0.3 -p "your question"
基础设施考量
如果您已经运行 n8n 等自托管服务,可以考虑在同一基础设施上部署这套系统。此前介绍的在 Hetzner Cloud 上部署 n8n 的配置,也能轻松容纳 Ollama;只是需要为语言模型增加 RAM 和 CPU 资源。
典型配置可能包括:
- Hetzner CCX42 或类似实例,提供较大模型所需的资源(仅 qwen3:30b-a3b 的下载大小就达 19 GB;没有 GPU 时,需预期响应较慢)
- Docker 容器化,便于与 n8n 一起管理
- Traefik 反向代理,提供安全访问(如需远程访问)
- 共享存储,用于模型和工作流数据
值得投入配置时间吗?
如果您经常将 AI 用于业务任务,并且重视隐私,答案是肯定的。初始配置需要几小时,但最终获得的 AI 助手具备以下能力:
- 可离线工作(网络搜索除外)
- 不会将您的对话发送给第三方(只有搜索查询会发送到 DuckDuckGo)
- 配置完成后,没有 AI 订阅费或按 token 计费的费用(硬件、电力和托管服务仍有成本)
- 可按需扩展其他能力
- 可与现有自托管基础设施集成
对于处理敏感信息或在受监管行业运营的团队,这套配置不会将对话交给云端 AI 提供商,有助于简化合规工作;但您仍需评估自身环境,包括发送到外部的搜索查询。
本地处理与选择性网络访问相结合,在能力和隐私之间取得了实用的平衡,单纯的云端或本地方案都难以做到。再加入工作流自动化,您就能为复杂的业务自动化建立基础,并始终掌握控制权。
接下来是什么?
我们正在推进本地 AI 配置与工作流自动化平台之间更深入的集成。后续文章将介绍:
- 用于 n8n + Ollama 组合部署的 Docker 配置
- 面向业务专属数据源的自定义 MCP 服务器
- 利用本地 AI 处理常见业务流程的工作流模板
- 用于生产部署的安全加固
业务自动化的未来,不只是连接现有服务,更是建立能够推理、研究并代表您执行操作的智能系统,同时让一切始终处于您的控制之下。
如果您在配置过程中遇到问题,或希望为具体使用场景扩展这套配置,我们可以通过常规支持渠道协助排查。