Ollama 的 MCP 服务器:让本地模型使用 MCP 工具
Ollama 用 MCP 服务器指南:Ollama 本身不是 MCP 客户端,需要借助 ollmcp、Claude Code、Codex、Goose 或 Open WebUI 让本地模型调用 MCP 工具。含步骤、模型选择与限制。
Ollama 能直接使用 MCP 服务器吗?
不能单独使用。Ollama 负责运行模型并支持工具调用,但它不是 MCP 客户端:它从不启动或连接 MCP 服务器。要让 Ollama 用上 MCP 服务器,你需要一个以 Ollama 作为模型后端的 MCP 客户端,例如终端里的 ollmcp、通过 ollama launch 启动的 Claude Code 或 Codex、Goose,或者 Open WebUI,并选择一个支持工具调用的本地模型。
本文会对比这些方案,带你完成一套可用的配置,并列出把前沿模型换成本地模型后最容易踩的坑。如果还没有想试的服务器,可以先看看 MCP 服务器目录。
各部分如何协作
一套 MCP 配置由三部分组成,而 Ollama 只承担其中之一:
- 模型:决定何时调用工具。这是 Ollama 的角色。
- MCP 客户端(也叫宿主 Host):启动或连接 MCP 服务器,把工具列表交给模型,执行调用并把结果送回。Ollama 不做这件事。
- MCP 服务器:提供真正的工具,例如浏览器、文件系统或 GitHub。
所以"Ollama 该用哪个 MCP 服务器?"这个问题,其实是在问"哪个客户端能让我的 Ollama 模型使用 MCP 服务器?"有了这样的客户端,目录里的任何 MCP 服务器都能用。背景知识见 MCP 的工作原理和我们的 MCP 客户端指南。
方案一览
| 客户端 | 界面 | 如何使用 Ollama | MCP 传输方式 | 适合 |
|---|---|---|---|---|
| ollmcp | 终端 UI | 原生 Ollama API | stdio、SSE、Streamable HTTP | 快速本地测试、挑选工具 |
| Claude Code | 终端 Agent | ollama launch claude(Anthropic 兼容 API) | stdio、HTTP、SSE | 结合 MCP 工具写代码 |
| Codex CLI | 终端 Agent | ollama launch codex 或 codex --oss | stdio、Streamable HTTP | 结合 MCP 工具写代码 |
| Goose | 桌面端和 CLI | 内置 Ollama 提供方 | stdio、Streamable HTTP | 带扩展的通用 Agent |
| Open WebUI | 网页聊天 | Ollama 后端 | Streamable HTTP(stdio 通过 mcpo) | 给团队用的类 ChatGPT 界面 |
| oterm | 终端聊天 | 原生 Ollama API | stdio、Streamable HTTP | 轻量终端聊天 |
截至 2026 年 10 月,以上项目都在积极维护。旧教程里常出现的 mcphost 已在 GitHub 上归档,因此没有列入。
第 1 步:选择支持工具调用的模型
只有模型能输出工具调用,MCP 才能工作。Ollama 会给这类模型打上 tools 标签,完整列表见 ollama.com/search?c=tools。撰写本文时带有该标签的模型包括:
| 模型 | 拉取命令 | 说明 |
|---|---|---|
| Qwen 3 | ollama pull qwen3:8b | Ollama 官方工具调用示例所用模型;另有 14b、30b、32b |
| Qwen 3.5 | ollama pull qwen3.5 | Ollama 的 Claude Code 文档所用模型 |
| Gemma 4 | ollama pull gemma4 | 支持工具、视觉和思考 |
| gpt-oss | ollama pull gpt-oss:20b | Ollama 的 Codex 示例所用模型;内存够的话可用 120b |
| Llama 3.1 / 3.2 | ollama pull llama3.2:3b | 小而快,但多步工具调用能力较弱 |
一条实用经验:小模型(1B 到 4B 参数)能调用一个描述清晰的工具,但当多个服务器暴露几十个工具时就容易混乱。如果要同时接多个服务器做 Agent 式任务,20B 以上的模型表现明显更好。
调大上下文长度
这是 MCP 在 Ollama 上"不工作"最常见的原因。每个工具定义都会进入提示词,而 Ollama 的默认上下文取决于显存:低于 24 GiB 时为 4k token,24 到 48 GiB 为 32k,48 GiB 及以上为 256k。Ollama 建议 Agent 和编程工具至少使用 64,000 token。可以在 Ollama 应用的设置滑块中调整,或在启动服务时设置:
OLLAMA_CONTEXT_LENGTH=64000 ollama serve
然后用 ollama ps 查看实际分配的值(CONTEXT 列)。
第 2 步(最快):在终端中使用 ollmcp
ollmcp 是专为 Ollama 打造的 MCP 客户端。它支持 stdio、SSE 和 Streamable HTTP 服务器,可以开关工具,并在每次调用工具前请求确认。
# install
uv tool install --upgrade ollmcp # or: pip install --upgrade ollmcp
# add MCP servers (saved for future sessions)
ollmcp mcp add playwright -- npx @playwright/mcp@latest
ollmcp mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ~/Documents
# start a chat with a tool-capable model
ollmcp --model qwen3:8b
在会话中,/tools 打开工具选择器,/model 切换模型,/hil 开关人工确认(human-in-the-loop)。远程服务器同样可用:
ollmcp mcp add --transport http github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer $YOUR_GITHUB_PAT"
这是使用个人访问令牌连接的 GitHub MCP 服务器。如果你已经在 Claude Desktop 中配置了服务器,ollmcp --claude-desktop 会从它的配置中加载。第一个测试推荐用 Playwright MCP 服务器:让模型打开一个网页并总结内容,然后在终端里观察工具调用过程。
第 2 步(编程):在 Ollama 上运行 Claude Code 或 Codex
Ollama 可以让两大编程 Agent 直接跑在本地模型上,而它们都是完整的 MCP 客户端。
Claude Code。 ollama launch claude 会通过 Ollama 的 Anthropic 兼容 API 启动 Claude Code。MCP 服务器按正常方式添加,保存在 Claude Code 的配置里,而不是 Ollama 的:
claude mcp add --transport http context7 https://mcp.context7.com/mcp
ollama launch claude --model qwen3.5
如果想手动配置,Ollama 文档使用以下环境变量:
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3.5
作用域、OAuth 和 /mcp 的用法见我们的 Claude Code MCP 指南。
Codex CLI。 ollama launch codex(或 codex --oss -m gpt-oss:20b)会让 Codex 跑在 Ollama 上。MCP 服务器通过 codex mcp add 写入 ~/.codex/config.toml,详见我们的 Codex MCP 配置。两个 Agent 都需要 64k 以上的上下文窗口才好用。
第 2 步(桌面端):Goose
Goose 是一个开源 Agent,内置 Ollama 提供方,并把 MCP 服务器作为"扩展"(extensions)使用:
- 连接 Ollama:在 Goose Desktop 中打开 Settings → Configure Provider,找到 Ollama 并确认 API 地址为
http://localhost:11434。在 CLI 中运行goose configure,选择 Configure Providers → Ollama,输入模型名,例如qwen3。 - 添加 MCP 服务器:在桌面端打开侧边栏的 Extensions,点击 Add custom extension。在 CLI 中运行
goose configure→ Add Extension,再选择 Command-line Extension(stdio)或 Remote Extension (Streamable HTTP)。
扩展保存在 ~/.config/goose/config.yaml 中。
第 2 步(网页界面):Open WebUI
Open WebUI 从 v0.6.31 起原生支持 MCP,而且本来就可以搭配 Ollama 提供模型。以管理员身份:
- 进入 Settings → Admin → Integrations。
- 在 External Tool Servers 下点击 + Add Connection。
- 把 Type 设为 MCP (Streamable HTTP),填入服务器 URL 并选择认证方式(None、Bearer、OAuth 2.1 等)。
- 保存,然后在对话中启用该工具。
这里的原生 MCP 只支持 Streamable HTTP。如果是 stdio 服务器,用 mcpo 把它包装成 OpenAPI 工具服务器:
uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command
两个常见坑:不要给 MCP URL 选择 OpenAPI 类型;服务器 URL 必须能被 Open WebUI 后端访问到,而不只是你的浏览器。
其他途径
- VS Code。 Ollama 扩展会把本地模型加入 VS Code Chat 的模型选择器,MCP 服务器则在 VS Code 中配置,参见 VS Code MCP 配置。想让 Agent 调用 MCP 工具,请选择带 tools 标签的模型。
- oterm。 一个面向 Ollama 的终端聊天客户端(
uvx oterm),支持通过 stdio 和 Streamable HTTP 使用 MCP 工具,在它的config.json中的mcpServers下配置。 - 自己写客户端。 Ollama 的 Python 和 JavaScript 库都支持工具调用,可以和官方 MCP SDK 对接:列出服务器的工具,作为工具定义传给
chat(),通过 MCP 会话执行调用并返回结果。SDK 部分可参考我们的 Python MCP 服务器指南。
预期中的限制
- 工具调用质量。 本地模型比前沿模型更容易跳过工具、编造参数或陷入循环。减少工具数量、写清楚工具描述,比什么都管用;参见 MCP 工具发现。
- 上下文压力。 一个大型服务器就可能带来数千 token 的工具 schema。只启用当前任务需要的服务器。
- 速度。 每次工具往返都是一次完整的生成。部分卸载到 CPU(用
ollama ps查看)会让 Agent 循环变得很慢。 - 本地不等于离线。 模型在本地运行,但远程 MCP 服务器(GitHub、Notion)仍会把你的数据发送到这些服务。
- 安全规则不变。 无论用什么模型,本地 stdio 服务器都以你的权限运行。保持确认提示开启,并阅读 MCP 安全最佳实践。
故障排查
| 现象 | 解决办法 |
|---|---|
| 模型会回答但从不调用工具 | 模型没有 tools 标签,或上下文太小装不下工具列表。换模型或调大 OLLAMA_CONTEXT_LENGTH。 |
| 工具选择器被禁用(oterm) | 所选模型不支持工具。拉取一个带 tools 标签的模型。 |
| Agent 忘记之前的步骤 | 上下文太小。查看 ollama ps 的 CONTEXT 列。 |
| 客户端连不上 Ollama | 确认 ollama serve(或 Ollama 应用)正在 http://localhost:11434 上运行。 |
| MCP 服务器启动失败 | 手动运行它的命令(例如 npx @playwright/mcp@latest)并修复错误;用 MCP Inspector 测试。 |
| 添加工具后 Open WebUI 一直加载 | 你选了 OpenAPI 类型或粘贴了 mcpServers JSON。删除该连接,重新以 MCP (Streamable HTTP) 类型添加。 |
下一步
- 在 MCP 服务器目录中为本地环境挑选服务器;Filesystem、Playwright 和 Memory 完全在本地运行,是很好的起点。
- 刚接触这个协议?阅读什么是 MCP 和 MCP 与 RAG 的区别。
- 想把自己的工具开放给本地模型?从构建 MCP 服务器开始。
常见问题
Ollama 支持 MCP 吗?
- Ollama 支持工具调用,但它不是 MCP 客户端,所以无法自己连接 MCP 服务器。你需要一个以 Ollama 作为模型后端的 MCP 客户端,例如 ollmcp、Claude Code、Codex、Goose 或 Open WebUI。
哪些 Ollama 模型可以配合 MCP 使用?
- ollama.com 上带有「tools」标签的模型都可以,例如 qwen3、qwen3.5、gemma4、gpt-oss 以及 llama3.1 或 llama3.2。更大的模型(约 20B 参数及以上)在接入多个 MCP 服务器、执行多步工具调用时可靠得多。
为什么我的 Ollama 模型不调用 MCP 工具?
- 通常是模型不支持工具,或者上下文窗口太小,装不下工具定义。选择带 tools 标签的模型,并通过 OLLAMA_CONTEXT_LENGTH 或应用设置中的滑块把上下文长度调到至少 64k token。
可以把 Claude Code 和 Ollama 及 MCP 服务器一起用吗?
- 可以。运行「ollama launch claude」即可让 Claude Code 跑在本地或云端的 Ollama 模型上,再像平常一样用「claude mcp add」添加 MCP 服务器。MCP 服务器保存在 Claude Code 自己的配置中。