跳转到主要内容
PromptQuorum为人类设计。 为AI结构化。
主页/本地LLM进阶
Local AI Agents & Tool Use

通过 MCP 将 Ollama 连接到文件、数据库和 API:2026 年本地配置指南

·阅读约15分钟Hans Kuepper 作者 · PromptQuorum创始人 · 开放权重与开源AI发现引擎

Model Context Protocol (MCP) 让本地 Ollama 模型能够调用工具——读取文件、执行 SQL 查询、点击网页链接、提交 Pull Request——通过任何 MCP 兼容客户端(Goose、Cline、Continue.dev、LM Studio)都能识别的标准 JSON-RPC 接口完成。协议开放,这里用到的服务器开源,既不需要 Claude Desktop 也不需要任何云账号。启动 Ollama,安装一个 MCP 客户端,放入一份列出所需服务器的 mcp.json 配置文件,支持 tool calling 的模型(Gemma 4、GLM-4.7、Qwen3.6、Qwen3、Llama 3.3)便成为运行在你机器上、由你掌控权限的智能体。关键在于安全模型:永不自动批准写入工具,将文件系统访问限定到单一目录,数据库服务器默认只读模式。

关键要点

  • MCP 是面向工具的 JSON-RPC 2.0 协议。 模型(通过客户端)连接一个或多个 MCP 服务器;每个服务器暴露 Tools(可调用函数)、Resources(可读数据)和 Prompts(模板)。无论客户端是 Claude Desktop、Goose、Cline、Continue.dev 还是 LM Studio,wire format 完全相同。
  • Ollama 不直接说 MCP——MCP 客户端封装 Ollama。 Goose(开源,最初来自 Block)是最简单且原生支持 Ollama 的 CLI;Cline、Continue.dev、LM Studio 也是 MCP 客户端。服务器要在客户端中添加,而不是在 Ollama 中。
  • 四类服务器覆盖大部分使用场景: filesystem(在沙箱目录中读写,仍是维护中的参考服务器)、数据库服务器(受限模式下的 Postgres)、@playwright/mcp(驱动浏览器)、GitHub 官方的 github-mcp-server(用 personal access token 管理仓库与 PR)。SQLite、PostgreSQL、Puppeteer 和 GitHub 的参考服务器已归档,不再有修复。
  • tool call 可靠性随模型规模与训练扩展。 Gemma 4 31B、GLM-4.7 Flash、Qwen3.6 27B、Qwen3 32B、Qwen3-Coder 30B、Llama 3.3 70B 在 Q4_K_M 下干净处理 MCP;7B 以下模型经常输出格式错误的 tool call 并卡住循环。
  • 安全模型假设模型不可信。 将 filesystem 服务器限定到单一目录、用只读角色运行数据库服务器、永不自动批准 execute_command 或 write_file、长时间会话后审查审计日志。
  • 本地 MCP vs Claude Desktop: 协议相同,服务器生态相同。本地栈以离线模型替换云端模型——隐私性、零 token 费用、零速率限制,代价是模型能力略低且需自行负责安全配置。
  • API 费用为 $0,但 token 是真实成本。 智能体循环单次多步任务可能消耗 30K–80K token;最少使用 32K 上下文模型,128K 更宽裕。

Model Context Protocol (MCP) 是本地 Ollama 模型与你的机器其余部分之间缺失的那一层。一个配置文件加上支持 tool calling 的模型,同一个智能体即可查询 Postgres 数据库、在沙箱目录中读写文件、驱动无头浏览器、提交 GitHub Pull Request——模型和服务器都运行在你的笔记本上,只有浏览器服务器和 GitHub 服务器会访问网络。Ollama 本身不支持 MCP,因此本指南用客户端 Goose 来连接两者:安装步骤和配置与当前 Goose 文档一致,所选服务器仍在维护,安全模型也不假设你信任模型。

演示文稿: 通过 MCP 将 Ollama 连接到文件、数据库和 API:2026 年本地配置指南

幻灯片涵盖:MCP 如何将本地 Ollama 模型转变为能查询数据库、读写文件、驱动浏览器、提交 Pull Request 的智能体;四类服务器(filesystem、数据库、浏览器、GitHub)的配置难度与风险评级;使用 Goose 的 6 步配置指南;不信任 LLM 的安全模型;以及与 Claude Desktop 的直接对比。可将 PDF 下载为本地 MCP 智能体参考卡片。

浏览以下幻灯片或下载PDF以供离线参考。 下载参考卡(PDF)

通过 MCP 将 Ollama 连接到文件、数据库和 API:2026 年本地配置指南

快速事实

  • 协议: JSON-RPC 2.0 通过 stdio(本地子进程)或 Streamable HTTP(远程)传输。较早的 HTTP+SSE transport 已弃用。本地智能体几乎只用 stdio。当前规范版本为 2026-07-28。
  • 来源: 由 Anthropic 作为开放规范创建(modelcontextprotocol.io)。modelcontextprotocol/servers 中仍在维护的参考服务器只有少数几个(filesystem、git、fetch、memory 等);SQLite、PostgreSQL、Puppeteer 和 GitHub 已移至 servers-archived。现在由各厂商发布自己的服务器。
  • 本地客户端: Goose(开源,仓库 aaif-goose/goose)、Cline(VS Code 扩展)、Continue.dev(VS Code/JetBrains)、LM Studio(桌面应用),以及多个 CLI 工具。
  • 兼容的 Ollama 模型: 任何具备原生 tool call 训练的模型,例如 Gemma 4 31B、GLM-4.7 Flash、Qwen3.6 27B、Qwen3 32B、Qwen3-Coder 30B、Llama 3.3 70B。
  • 默认 transport: 本地进程用 stdio;只有需要跨机器或跨智能体共享服务器时才用 Streamable HTTP。
  • 配置在客户端中: Goose 读取 ~/.config/goose/config.yaml 中的 extensions 块(或运行 goose configure);Cline 和 Continue.dev 有各自的 MCP 设置。字段含义在各处相同:服务器名、command、args、env vars。
  • 无需 Claude Desktop。 协议开放,独立于 Claude Desktop;这里用到的服务器均为开源(请自行查看各自许可证),可在任何符合规范的客户端下运行。

MCP 实际为本地模型解锁的能力

没有工具的本地 LLM 只能用文本回应。有了 MCP,同一个模型可以在你的机器上执行操作。 这是聊天机器人与智能体的本质差别。

  • 「找出此仓库中所有 TODO,按文件分组,并将 Markdown 摘要写入 notes/todos.md。」 —— filesystem 服务器读取,模型分组,同一服务器写入。端到端一次往返。
  • 「列出本季度营收 Top 10 客户并绘制图表。」 —— postgres 服务器执行 SQL(只读角色),模型汇总,并通过 filesystem 写出 CSV 供你的图表工具使用。
  • 「打开 Hacker News 首页,找出 AI 相关的前三篇文章,总结后追加到我的阅读清单。」 —— playwright 服务器驱动浏览器,模型抽取并总结,filesystem 追加。
  • 「向我的 fork 提交标题为 chore: bump deps 的草稿 PR,并在描述中链接失败的 CI run。」 —— github 服务器创建 PR、获取 run、在描述中写入链接。
  • 「查看 events.db 最新 100 行,告诉我哪些 user ID 是新错误尖峰的来源。」 —— 数据库服务器查询数据副本;模型推理;你在聊天面板看到答案。
  • 以上每一项都是「一句话到操作」的工作流,过去要么需要带托管工具的云端模型,要么需要手写脚本。MCP 是让你能跨客户端复用同一服务器、跨服务器复用同一模型的那一层。

四个最常用 MCP 服务器对比

下面的服务器覆盖「让本地模型真正做点事」的长尾需求。全部开源,作为本地子进程(或 Docker 容器)由 MCP 客户端启动。安装前请先确认维护状态。

📍 简单一句话

从 filesystem 服务器开始(5 分钟,低风险),数据工作加上数据库服务器,确有需要再加浏览器服务器,对机器上的模型建立信任后再引入 GitHub。

💬 简单来说

四类服务器覆盖了你想让本地智能体做的大部分事。filesystem 服务器在你选择的文件夹内读写文件。数据库服务器对 Postgres 执行查询。浏览器服务器驱动一个真实的浏览器窗口,模型可以读取需要 JavaScript 才能渲染的页面。GitHub 服务器在你的仓库上开 issue 和 PR。它们大多通过一条命令(npx、uvx 或 Docker)启动,在你自己的机器上运行,且除非需要否则不会访问互联网:浏览器和 GitHub 服务器会,filesystem 和数据库服务器不会。

MCP 服务器
能做什么
搭建难度
风险等级
适用场景
Filesystem(参考服务器)在沙箱目录中读写文件简单(一条 allow-list 路径)中——严格限定范围个人自动化、笔记、仓库总结
SQLite(已归档)查询本地 SQLite 数据库文件简单,但不再维护中——无修复,请使用文件副本仅限一次性数据探索
Postgres(postgres-mcp)在受限(只读)模式下查询 Postgres中(角色 + URI)中——受限模式加只读角色数据探索、报表、BI 原型
Playwright(@playwright/mcp)通过无障碍快照驱动浏览器完成浏览、爬取、表单填写中(浏览器二进制、延迟)高——可提交表单、点击任意元素调研、爬取、回归测试
GitHub(官方)列出仓库、读取文件、创建 issue 与 PR中(Docker + 环境变量传 PAT)中——将 token 限定到指定仓库开发流程、triage、PR 草稿
Custom任何可用 JSON-RPC 工具表达的功能难(自行实现服务器)可变内部 API、小众系统、胶水代码

⚠️警告: SQLite、PostgreSQL、Puppeteer 和 GitHub 的参考服务器已移至 servers-archived 仓库,不再维护。PostgreSQL、Puppeteer 和 GitHub 的 npm 包被标记为「no longer supported」,SQLite 服务器(Python 包,最后一次发布在 2025 年 4 月)同样没有修复。请使用表中仍在维护的服务器,并在安装任何需要凭据的服务器之前先阅读其代码。

组件如何协作

三个进程,一套共享协议。 模型在 Ollama 中,客户端说 MCP,每个服务器暴露一组小工具。每次 tool call 在客户端 → 服务器之间跳转,本地执行,返回 JSON。

  • Ollama 作为后台服务运行在 127.0.0.1:11434,通过 OpenAI 兼容 API 提供模型。它不知道 MCP 是什么——只是回应 chat completion,并在模型请求时输出 tool call。
  • MCP 客户端(Goose、Cline、Continue.dev、LM Studio)是桥梁。它与 Ollama 沟通模型部分,与 MCP 服务器沟通工具部分。模型发出 tool call 时,客户端将其路由到正确的服务器,获取结果,然后把结果送回对话。
  • MCP 服务器 是相互独立的子进程,每种能力一个。它们通过 stdio 说 JSON-RPC 2.0。每个服务器声明一组 Tools、Resources 和 Prompts;客户端将其合并为对模型呈现的工具表面。
  • stdio transport 让一切保持本地。 服务器由客户端启动,通过 stdin/stdout 通信,并在客户端退出时退出。除非服务器自身打开网络连接(浏览器服务器会,filesystem 与数据库服务器不会),否则不走网络。
  • 模型看到的是扁平工具列表。 在模型视角中没有服务器——只有 filesystem.read_file、playwright.browser_navigate、github.create_pull_request 这样的工具名。客户端处理路由。
MCP 架构图:Ollama 提供本地模型,MCP 客户端(Goose、Cline、Continue.dev 或 LM Studio)通过 stdio 上的 JSON-RPC 2.0 与 MCP 服务器桥接,文件系统、数据库、浏览器和 GitHub 四类服务器负责暴露实际工具。
MCP 架构图:Ollama 提供本地模型,MCP 客户端(Goose、Cline、Continue.dev 或 LM Studio)通过 stdio 上的 JSON-RPC 2.0 与 MCP 服务器桥接,文件系统、数据库、浏览器和 GitHub 四类服务器负责暴露实际工具。

📌注: 架构与 Claude Desktop 完全相同。区别在于模型(本地 Ollama 模型替代 Claude)与客户端(Goose/Cline/Continue.dev/LM Studio 替代 Claude Desktop)。MCP 服务器是同一套——你今天在 Claude Desktop 下跑的 filesystem 服务器,明天在 Goose 下也能不加修改地继续跑。

配置:15 分钟搭建 Ollama + Goose

Goose 是通往可工作的本地 MCP 智能体的最短路径。 这是一个开源智能体(最初来自 Block,现在在 aaif-goose/goose 开发),提供 CLI 并原生支持 Ollama,有交互式聊天界面,并将所有 Model Context Protocol (MCP) 服务器配置集中到一个文件。Continue.dev、Cline、LM Studio 也能用,但 Goose 在初次搭建上的成本最低。

  • Step 1 —— 安装 Ollama。 从 ollama.com/download 下载(macOS/Windows/Linux)。用 curl http://127.0.0.1:11434/api/tags 确认服务运行。
  • Step 2 —— 拉取支持 tool calling 的模型。 在 Gemma 4 31B (gemma4:31b)、GLM-4.7 Flash (glm-4.7-flash)、Qwen3.6 27B (qwen3.6:27b)、Qwen3 32B (qwen3:32b) 或 Llama 3.3 70B (llama3.3:70b) 中选一个。32 GB 统一内存或 24 GB VRAM 在 Q4_K_M 下从容运行 26B–32B。
  • Step 3 —— 安装 Goose。 在 macOS 或 Linux 上运行 curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash(或 brew install block-goose-cli)。在 Windows 上使用 Goose 文档中的 PowerShell 安装程序,或使用 WSL。CLI 安装为 goose。
  • Step 4 —— 将 Ollama 配置为 provider。 运行 goose configure,选择 ollama 作为 provider,将模型设为已拉取的那个,host 设为 http://127.0.0.1:11434(留空也表示 localhost:11434)。Goose 会写入 ~/.config/goose/config.yaml。Ollama 的默认上下文窗口可能很小(Goose 文档提到 4096 token),可能导致 Goose 忽略其扩展——请用 OLLAMA_CONTEXT_LENGTH=32768(或更高)启动 Ollama。
  • Step 5 —— 加入 filesystem MCP 服务器。 运行 goose configure,选择 Add Extension,再选 Command-line Extension,或在 ~/.config/goose/config.yaml 中加入 extensions 块(配置示例见下)。如只想一次性测试,goose session --with-extension "npx -y @modelcontextprotocol/server-filesystem /path/to/workspace" 仅为该会话启用它。启动 goose session 并请求列出测试目录的文件。第一轮即可确认服务器接入。
  • Step 6 —— 用真实任务验证。 试运行 goose session,请求「列出 notes/ 中每个 Markdown 文件的标题与字数,并将结果写入 notes/index.md」。如果智能体读、汇总、回写都成功,整个循环可工作。
bash
# 1. Pull a tool-calling model
ollama pull gemma4:31b

# 2. Install Goose (macOS / Linux)
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash

# 3. Configure Ollama as the provider
goose configure
# Provider: ollama
# Model:    gemma4:31b
# Host:     http://127.0.0.1:11434

# 4. Give Ollama a context window big enough for tool use, then start a session
OLLAMA_CONTEXT_LENGTH=32768 ollama serve   # in a separate terminal
goose session
Ollama 与 Goose 的六步配置流程:安装 Ollama,拉取如 gemma4:31b 的支持工具调用的模型,用官方脚本安装 Goose,配置提供方,添加文件系统 MCP 服务器,并在约 15 分钟内用真实任务验证。
Ollama 与 Goose 的六步配置流程:安装 Ollama,拉取如 gemma4:31b 的支持工具调用的模型,用官方脚本安装 Goose,配置提供方,添加文件系统 MCP 服务器,并在约 15 分钟内用真实任务验证。

💡提示: 若你已使用 Cline 或 Continue.dev,可跳过 Goose 直接使用——两者都是 MCP 客户端。各自有自己的 MCP 设置(具体文件请查看其文档);模型与服务器都相同,变化的只是宿主应用及其配置格式。

Filesystem 服务器:在沙箱目录中读写

filesystem 服务器是首个安装的服务器,也是最容易安全限定范围的。 它暴露 read_file、write_file、list_directory、move_file、search_files、create_directory,全部限定在一个或多个 allow-list 路径内。

  • 安装: 参考服务器为 @modelcontextprotocol/server-filesystem,通过 npx -y 运行(无需全局安装,需要 Node.js)。它是仍在维护的参考服务器之一。Goose、Cline、Continue.dev 都从配置中启动它。
  • Allow-list 路径: 服务器接受一个或多个目录参数,并拒绝在其外的操作。务必传入显式的、范围窄的路径——绝不要 ~ 或 /。
  • 暴露的工具: read_file、read_multiple_files、write_file、edit_file(按行替换)、list_directory、search_files、move_file、create_directory、directory_tree。模型看到的形式是 filesystem.read_file 等。
  • 易用性: directory_tree 返回 JSON 树状结构,便于模型在读取具体文件之前先了解结构。search_files 提供类似 grep 的递归搜索。
  • 风险面: 服务器尊重 allow-list,但在该列表内拥有完整读写权限。把 allow-list 视作唯一屏障,并选择专用 workspace 目录而非 home 文件夹。
yaml
# ~/.config/goose/config.yaml
extensions:
  filesystem:
    type: stdio
    name: filesystem
    enabled: true
    cmd: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/agent-workspace"]
    envs: {}
    timeout: 300

⚠️警告: 永远不要 allow-list / 或你的 home 目录。建立专用 agent-workspace 文件夹,把希望智能体接触的文件副本放进去,仅让它在该文件夹内操作。即便智能体出错,影响也止步于一个目录。

数据库服务器:安全查询 Postgres(和 SQLite)

数据库服务器把模型变成可以基于真实数据回答问题的初级分析师——前提是保持只读。 最初的 SQLite 和 PostgreSQL 参考服务器已归档,因此请使用仍在维护的 Postgres 服务器,并谨慎对待 SQLite。

  • Postgres:postgres-mcp(Crystal DBA,MIT 许可证) 是带只读模式的选项(PyPI 上最新发布在 2025 年 5 月,依赖它之前请先查看仓库的活跃度)。用 uvx postgres-mcp --access-mode=restricted 运行(或 pipx install postgres-mcp,或使用其 Docker 镜像),并通过 DATABASE_URI 环境变量传入连接 URI。受限模式允许只读事务并带有查询时间限制;非受限模式仅用于开发。
  • 同时使用专用只读角色。 受限模式是一道屏障,数据库角色是另一道。创建一个仅有 SELECT 授权的 agent_ro 角色,并使用该角色的 connection string。
  • SQLite:参考服务器已归档。 它是 Python 包 mcp-server-sqlite(不是 npm 包;最后一次发布在 2025 年 4 月),可能仍能运行,但不会再有修复。请只让它指向文件副本,绝不要指向唯一的一份文件,或者改把数据加载进 Postgres。在把文件交给任何社区 SQLite 服务器之前,先阅读其代码。
  • Schema 感知: 在提分析问题前请智能体「列出表并 describe 最常用的五个」——模型在检查过 schema 之后比凭空猜列名要准确得多。
  • 成本: 查询直接落在数据库上。在一亿行的表上格式不当的 SELECT * 与人手所造成的事故同等严重——把该角色放在独立连接池并设置 statement timeout。
yaml
# ~/.config/goose/config.yaml
extensions:
  postgres:
    type: stdio
    name: postgres
    enabled: true
    cmd: uvx
    args: ["postgres-mcp", "--access-mode=restricted"]
    envs:
      DATABASE_URI: "postgresql://agent_ro:${PG_AGENT_PASSWORD}@127.0.0.1:5432/analytics"
    timeout: 300

💡提示: 一次性创建 Postgres 角色并不再额外授权:CREATE ROLE agent_ro WITH LOGIN PASSWORD '…'; GRANT CONNECT ON DATABASE analytics TO agent_ro; GRANT USAGE ON SCHEMA public TO agent_ro; GRANT SELECT ON ALL TABLES IN SCHEMA public TO agent_ro; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO agent_ro; 然后给该角色设 statement_timeout = 30s。智能体既不能写入也不能 drop,更不能无限运行。

浏览器服务器:用 Playwright MCP 驱动浏览器

浏览器服务器是四者中最强大也最危险的。 它启动真实浏览器并暴露导航、点击、表单填写与截图——也就是说,它能完成你在浏览器里能做的一切,包括提交表单。

  • 选哪个服务器: 使用微软的 @playwright/mcp(npx @playwright/mcp@latest)。旧的 @modelcontextprotocol/server-puppeteer 已被标记为「no longer supported」,而 npm 上并不存在 @modelcontextprotocol/server-playwright 这个包。
  • 暴露的工具: browser_navigate、browser_snapshot、browser_click、browser_type、browser_fill_form、browser_evaluate(运行 JavaScript)、browser_take_screenshot、browser_tabs、browser_wait_for。模型通过 browser_snapshot(无障碍快照,Playwright MCP 建议采取操作时优先用它而不是截图)读取页面,截图只用来查看。
  • 延迟: 真实浏览器会话每个动作 1–5 秒。多步浏览很容易消耗 30–60 秒以及数万 token,因为页面内容较大。请使用 32K+ 上下文窗口。
  • 元素引用: 模型依据快照中的引用来点击元素。小模型常选错;27B+ 的 tool calling 模型对常见模式较为可靠。把任务范围收紧——「抽取此 URL 的标题与首段」远比「在站内浏览并找到联系页」可靠。
  • 适合场景: 调研(打开页面、汇总、追加到笔记)、回归测试(导航、点击、截图)、在你掌控的页面上的表单填写。不适合场景:任何在真实 Web 上误点会带来后果的工作。
yaml
# ~/.config/goose/config.yaml
extensions:
  playwright:
    type: stdio
    name: playwright
    enabled: true
    cmd: npx
    args: ["@playwright/mcp@latest"]
    envs: {}
    timeout: 300
# Block obviously dangerous endpoints at the OS firewall level
# rather than relying on the agent to refuse them.

⚠️警告: 永远不要把凭据交给浏览器服务器。如果需要已登录会话,请将预先登录的浏览器配置交给智能体,且绝不让它导航到高影响站点(银行、邮箱、云控制台、支付页)。模型对按钮含义没有判断力——它看见文字就点击。请把它当作没有上下文也没有补救手段的实习生对待。

GitHub 服务器:从本地模型操作仓库、issue 与 PR

GitHub 服务器把自然语言的仓库工作转化为 API 调用。 它在四者中配置最简单,并通过 personal access token (PAT) 权限实现最容易的紧密限定。

  • 安装: 使用 GitHub 官方的 github/github-mcp-server,通过其 Docker 镜像(ghcr.io/github/github-mcp-server)运行,并将 PAT 放入 GITHUB_PERSONAL_ACCESS_TOKEN 环境变量。旧的 @modelcontextprotocol/server-github npm 包已被标记为「no longer supported」;新的配置不要使用它。
  • 暴露的工具: search_repositories、get_file_contents、create_or_update_file、create_pull_request、list_issues、create_issue、add_issue_comment、merge_pull_request,以及许多其他工具。完整工具表面较大,多数任务用 5–10 个工具即可。
  • 收紧 PAT。 使用限定到具体仓库的 fine-grained PAT,权限仅到必要最小(浏览给 Read,PR/issue 创建给 Write)。不要在实验性智能体上使用带 repo 权限的经典 PAT。
  • 真实工作流: triage(「读取最近 20 个 open issue,分组并起草标签」)、起草(「读 README 并提交一个修复 typo 的 PR」)、报表(「本周哪些 PR 长时间停滞」)。
  • 风险面: 智能体可以创建 issue 和 PR、发表评论,并在拥有写权限时推送 commit。除非同时信任模型与流程,否则禁用 merge 类工具——fine-grained PAT 仓库中的误合并仍可恢复,但要尽快发现。
yaml
# ~/.config/goose/config.yaml
extensions:
  github:
    type: stdio
    name: github
    enabled: true
    cmd: docker
    args: ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"]
    envs:
      GITHUB_PERSONAL_ACCESS_TOKEN: "${GH_AGENT_PAT}"
    timeout: 300
# Fine-grained PAT scoped to one or two test repos,
# not your personal account-wide classic token.

一个不信任模型的安全模型

正确的心智模型是「LLM 是一个手里拿着你给的钥匙的不可信实习生」。 能力来自服务器与你 allow-list 的接口——不来自模型的判断力。

  • 将 filesystem 服务器限定到一个目录。 永不 ~ 或 /。选定 agent-workspace/ 文件夹,把智能体需要接触的文件副本放进去。即便智能体出错,最坏情况是一个文件夹。
  • 数据库服务器默认只读运行。 用仅 SELECT 授权且 statement timeout 为 30 秒的专用 agent_ro 角色,可以整体消除一类事故。
  • 所有写入或 shell 工具都置于明确授权之后。 Goose、Cline、Continue.dev 都支持按工具的授权规则。读取工具默认放行;write_file、edit_file、execute_command、create_pull_request 以及任何提交表单的浏览器动作都需要授权。
  • 使用审计日志。 每个 MCP 客户端都会记录 tool call 与结果。长会话之后扫一眼日志:你会看到模型尝试一些你未预期的事(有时无害,有时值得收紧权限)。
  • 第三方访问的 token 范围要紧。 GitHub PAT 限定到两个测试仓库。Postgres 角色只读。浏览器会话不带凭据。模型迟早会尝试你未预期的事;它能做什么的边界,不能依赖模型的「自觉」。
  • 敏感数据工作时让智能体 air-gap。 处理私有数据时关闭主机的网络访问(或使用 network namespace)。本地栈本就不向外发数据,但纵深防御能兜住第三方服务器的失误。
  • 像对待依赖一样选 MCP 服务器。 参考服务器维护良好,许多第三方服务器并非如此。在为某个需要凭据的服务器安装前,请先阅读其代码。

📌注: 一个有用的失败恢复习惯:在执行非平凡的智能体任务前 git stash(或 git checkout -b agent/<task>)。任务完成后审查 diff,保留你想要的部分,丢弃其余。这与让长时间 Cline 或 Aider 会话保持安全的做法一致——更广模式见 Continue.dev vs Cline vs Aider 对比。

本地 MCP vs Claude Desktop:什么变了,什么不变

协议与服务器完全相同。只有模型与客户端在变。 这正是 MCP 重要的原因——你的工具投资可以在本地与云端配置之间无缝迁移。

层级
Claude Desktop
本地 Ollama + Goose
模型Claude(Anthropic,云端)Gemma 4、GLM-4.7、Qwen3 或 Llama 3.3(本地)
客户端Claude Desktop 应用Goose、Cline、Continue.dev 或 LM Studio
服务器同一套 MCP 服务器同一套 MCP 服务器
协议MCP(JSON-RPC 2.0)MCP(JSON-RPC 2.0)
单次请求成本按 token 计费的 API$0 —— 本地推理
隐私性对话发到 Anthropic保留在本机
速率限制受 API 速率限制仅受硬件吞吐量限制
tool call 质量业内最佳27B+ 表现良好;7B 以下迅速劣化
需要联网需要仅当服务器自身需要(如浏览器)
搭建时间5 分钟15 分钟(一次性)

为本地 MCP 选择支持 tool calling 的模型

tool call 可靠性随模型规模与训练扩展,不是 harness 决定的。 一个在 Cline 中输出格式错误 tool call 的模型,在 Goose 中也会因同一原因输出格式错误的 tool call。

  • Gemma 4 31B (gemma4:31b) —— Google 的 tool call 训练在同尺寸中处于业内最佳。Q4_K_M 下可装入 16 GB 统一内存或 24 GB VRAM。通用推理良好;在链式 tool call 上略偏保守。
  • GLM-4.7 Flash (glm-4.7-flash) —— 智谱的模型 tool call 可靠性极强,开箱 128K 上下文窗口。比 Gemma 4 略重;24 GB GPU 上从容运行。
  • Qwen3.6 27B (qwen3.6:27b) —— Ollama 上较新的 Qwen 选项(约 18–19 GB,256K 上下文,支持 tool calling)。Qwen3 32B (qwen3:32b) —— 综合均衡;dense 32B 干净处理 MCP,在长智能体循环中稳定。Qwen3-Coder 30B (qwen3-coder:30b) 是代码形态智能体工作的最佳选择。
  • Llama 3.3 70B (llama3.3:70b) —— 上限最高但最重。Q4_K_M 下需要 48 GB+ 统一内存或 2× 24 GB GPU。仅在硬件允许时使用;通常更小的模型已足够。
  • MCP 工作避免: 任何 7B 以下,以及任何没有显式 tool call 训练的通用模型。它们会输出格式错误的 call、循环卡住,而你会怪罪 harness——但 harness 没问题。
  • 提升任何模型 tool call 质量的结构化提示工程方法,参见 Chain-of-Thought Prompting。
  • 逐项基准对比,参见 2026 年最佳本地 tool calling 模型。

MCP vs 普通 Function Calling:差别在哪

Function calling 是模型输出的内容;MCP 是让客户端与工具互相发现的协议。 它们在不同层并相互协作;不是替代关系。

  • Function calling 是 LLM 端的能力:模型输出一段描述工具名与参数的结构化 JSON。OpenAI Tools、Anthropic Tools、Ollama 的 tool call API 都是同一思路,只是 wire format 略有差异。
  • MCP 在其上:它跨进程标准化工具如何被描述、发现、调用、返回。单凭 function calling 的模型并不知道你的 filesystem;MCP 服务器把 filesystem 操作暴露出来,客户端将其映射到模型的 function calling API,模型于是可以调用。
  • 收益是 interop。 filesystem 服务器只写一次;Claude Desktop、Goose、Cline、Continue.dev、LM Studio 都不加修改地复用。模型从 Claude 换成 Gemma 4,服务器不变。
  • 用纯 function calling 也能做智能体。 但你会按项目重写 filesystem、数据库、浏览器 handler。有了 MCP,它们是开箱依赖。
  • 一次性脚本,纯 function calling 更简单。 但凡你想在项目或模型间复用,几天之后 MCP 就成为更省力的路径。

中国企业的应用方案

对中国企业而言,本地 MCP 智能体直接回应了云端智能体在《数据安全法》《个人信息保护法》《网络安全法》三法体系下面临的合规压力。 当模型、客户端与所有工具服务器都在企业自有机器上运行时,数据并不离境,也不离厂。

  • 《数据安全法》(2021): 数据分级分类与重要数据出境评估是云端 AI 部署的核心障碍。本地 MCP 栈不产生数据出境行为,重要数据始终留在企业内网,对应「分级分类」中较高级别数据可在不触发出境评估的前提下使用 LLM 能力。
  • 《个人信息保护法》(PIPL): PIPL 第 23 条对个人信息委托处理与第三方提供有严格要求;第 38 条对跨境提供个人信息额外要求安全评估或单独同意。本地推理消除了 LLM 层的第三方处理者关系,简化了与 OpenAI、Anthropic、Google 等境外 AI 服务商相关的合规路径。
  • 《网络安全法》与等保(MLPS 2.0): 关键信息基础设施运营者与三级以上系统须满足数据本地化与日志可审计要求。本地 MCP 客户端的审计日志(Goose、Cline、Continue.dev)与等保审计要求天然契合,可作为 tool call 行为的主要证据存档。
  • 中国企业实际应用场景: 银行(信贷材料分析)、医院(病历摘要)、律师事务所(合同审阅)、制造业(图纸辅助设计)、政府机关(公文助理)——所有「客户/患者/公民数据不能出企业」的场景都适用。内存充足的 Apple 芯片 Mac 或搭载 RTX 4090 的工作站可运行 27B–32B 模型,覆盖摘要、合规检查、内部数据库代码片段验证等核心需求。
  • 头部互联网公司参考: 阿里巴巴、腾讯、华为、字节跳动、百度等对自研模型与外部模型混用早有实践;本地 MCP 协议层为「内部模型 + 内部数据」组合提供了一套与云端方案 wire 兼容的工具栈,便于在内外部环境之间迁移工具实现而不重写。
  • 注意事项: 浏览器服务器是合规上最敏感的组件,建议为其单独建立网络隔离环境并禁止访问支付/办公等高影响系统;GitHub PAT 须改为企业内部 Git(GitLab/Gitea)的等价 token 并按仓库限定权限;审计日志须落入 WORM 存储或不可被智能体覆写的内部 Git 仓库以满足等保留存要求。

搭建本地 MCP 时常见错误

  • 错误 1:使用小型通用模型。 7B 以下(以及大多数没有 tool call 微调的 7B–13B 通用模型)会输出格式错误的 tool call。请使用 27B+ 的 tool call 微调模型,停止与 harness 较劲。
  • 错误 2:allow-list 自己的 home 目录。 「只是测试」式的 ~ allow-list 会一路保留进入日常使用。请从一开始就建立专用的 agent-workspace。
  • 错误 3:让数据库服务器停留在读写模式。 自信满满的智能体在真实表上写出的 DELETE 查询,正是这套规范要避免的事故。把 agent_ro 设为默认;只为明确需要写入的任务、并仅在那些任务期间,临时启用单独的可写角色。
  • 错误 4:自动批准每个工具。 「全部批准」开关方便但危险。读取工具(read_file、list_directory、query)可自动批准;写入/shell/PR 工具一律要求授权。
  • 错误 5:用 32K 上下文模型做多步浏览器工作。 页面内容很大;浏览三页就可能在推理之前耗尽 32K token。浏览器密集任务请用 128K 上下文模型。
  • 错误 6:假设智能体有判断力。 它没有。模型并不理解「这是生产数据库」或「该 PR 会触发部署」。权限是你唯一的屏障。
  • 错误 7:一次性安装所有参考服务器。 工具越多 = system prompt 越大 = 工具选择越慢越不可靠。从 filesystem 开始,只在出现需要的工作流时再添加其他。
  • 错误 8:照着旧教程安装已归档的参考服务器。 npm 包 @modelcontextprotocol/server-postgres、-puppeteer 和 -github 已被标记为「no longer supported」,SQLite 服务器也已归档。一些较早的指南还会提到并不存在的 npm 包(server-sqlite、server-playwright)。请使用上文列出的仍在维护的服务器。
  • 错误 9:把 MCP 配置写进 Ollama。 Ollama 没有 MCP 设置。服务器在客户端中配置(Goose 的 extensions,Cline 或 Continue.dev 的 MCP 设置)。

参考资料

常见问题

MCP 是什么?为什么对本地 AI 重要?

Model Context Protocol (MCP) 是开放的 JSON-RPC 2.0 协议,允许客户端(Goose、Cline、Continue.dev、LM Studio、Claude Desktop)以统一方式将语言模型连接到工具服务器。它对本地 AI 重要的原因是:标准化了把聊天模型变成智能体的那一层——工具服务器只写一次,可在任意客户端、任意模型(包括本地 Ollama 模型)下使用。没有 MCP,每个项目都要在自己客户端里重新实现文件/数据库/浏览器工具。

MCP 不需要 Claude Desktop 也能用吗?

可以。协议开放,且与 Claude Desktop 完全独立。Goose、Cline、Continue.dev、LM Studio 都提供了能与本地 Ollama 模型协作的 MCP 客户端实现。仍在维护的服务器(filesystem、Postgres、Playwright、GitHub)在任何符合规范的客户端下都不需修改即可运行。

哪些本地模型对 MCP 支持最好?

最可靠的选择是 Gemma 4 31B、GLM-4.7 Flash、Qwen3.6 27B 或 Qwen3 32B(代码形态工作选 Qwen3-Coder 30B)和 Llama 3.3 70B。这些都具备显式的 tool call 训练,输出干净的 function calling JSON 供 MCP 客户端路由。7B 以下模型(以及多数没有 tool call 微调的通用模型)经常产生格式错误的 tool call。

MCP 安全吗?智能体会不会删除我的文件?

只要你允许就有可能。安全来自服务器配置而非协议本身。filesystem 服务器只在你 allow-list 的路径内操作——把它限定到专用的 agent-workspace 目录。使用受限模式和 SELECT-only 角色时,数据库服务器是只读的。写入、shell、PR 工具一律要求显式授权;只对读取操作自动批准。审计日志事后可以精确显示智能体做了什么。

我可以自己写一个 MCP 服务器吗?

可以——SDK 让事情很直接。官方 TypeScript 与 Python SDK(@modelcontextprotocol/sdk 与 mcp)处理 JSON-RPC 管线。你用 JSON Schema 定义工具与一个 handler 函数,SDK 通过 stdio 暴露它们。一个单功能服务器(一两个工具封装一个内部 API)通常是 50–100 行的单文件。

MCP 在 Windows 下能用吗?

能。Ollama、Goose、Cline、Continue.dev、LM Studio 都能在 Windows 上运行。MCP 服务器作为 Node.js 或 Python 子进程运行;两者在 Windows 下都得到完整支持。唯一与平台相关的注意点是路径处理——配置中使用正斜杠或正确转义反斜杠。其余体验与 macOS、Linux 一致。

如何对 MCP tool call 做沙箱?

三层覆盖大部分风险。第一,配置层把每个服务器收紧:filesystem 限定到一个目录、数据库限定到只读角色、GitHub 限定到针对测试仓库的 fine-grained PAT。第二,使用客户端按工具的授权规则:读取自动批准,写入要求授权。第三,把智能体放在 git stash 友好的 workspace 中,这样任何破坏性操作都可通过 git 回退。敏感任务建议在除服务器明确需要的端点外没有网络访问的主机上运行。

MCP 智能体能发起 HTTP 请求吗?

能,通过特定服务器。浏览器服务器(Playwright MCP)驱动一个真实浏览器,发起模型导航过程中所需的所有请求。一些第三方服务器更直接地暴露了 http_get/http_post 工具。filesystem 与数据库服务器不发起网络请求,仅在本地资源上操作。

MCP 与 Ollama 原生协作还是需要 wrapper?

Ollama 本身不会说 MCP——它只提供 OpenAI 兼容的 chat API。你需要客户端(Goose、Cline、Continue.dev、LM Studio)在 Ollama 的 chat API 与 MCP 服务器之间架桥。客户端把模型的 tool call 路由到正确的 MCP 服务器,并把结果送回对话。从用户视角看,除了安装客户端并指向 Ollama 之外不需要额外配置。

MCP 与 function calling 的区别是什么?

Function calling 是 LLM 输出一段命名工具与参数的结构化 JSON——这是模型能力。MCP 是让工具服务器与客户端跨进程描述、发现、调用、返回工具的协议——这是 interop 层。两者协作:客户端把 MCP 工具定义转换为模型的 function calling 格式,模型发出 function call,客户端将其映射回 MCP 服务器,服务器执行。没有 MCP 你也能做 function calling,但要按项目重写 filesystem/数据库/浏览器 handler;有了 MCP,同一套服务器在任意客户端下都能用。

怎样给 Ollama 添加 MCP 服务器?

不是添加到 Ollama——Ollama 没有 MCP 设置。你要在 Ollama 前面的客户端里添加服务器。在 Goose 中,运行 goose configure,选择 Add Extension,再选 Command-line Extension,然后输入服务器命令(例如 npx -y @modelcontextprotocol/server-filesystem /path/to/workspace);快速测试可用 goose session --with-extension "<command>"。Cline 和 Continue.dev 有各自的 MCP 设置。请确保 Ollama 运行的是支持 tool calling 的模型,且上下文窗口至少为 32K。

Claude Desktop 可以配合 Ollama 模型使用吗?

不能直接这样配置。Claude Desktop 连接的是 Anthropic 的云端模型,因此不会运行 Ollama 模型。能从 Claude Desktop 沿用下来的是 MCP 服务器生态:同样的服务器可以配合支持 Ollama 的 MCP 客户端使用,例如 Goose、Cline、Continue.dev 或 LM Studio。这就是本指南介绍的本地等价方案。

哪些官方 MCP 服务器已归档,用什么替代?

SQLite、PostgreSQL、Puppeteer 和 GitHub(以及其他几个)的参考服务器已移至 servers-archived 仓库,不再维护;它们的 npm 包(如果存在)被标记为「no longer supported」,也不会再有安全修复。仍在维护的替代方案:GitHub 用官方的 github/github-mcp-server,浏览器自动化用微软的 @playwright/mcp,Postgres 用受限模式下的 postgres-mcp(Crystal DBA)。SQLite 没有仍在维护的官方服务器,因此请对文件副本使用已归档的服务器,或把数据加载进 Postgres。filesystem 服务器仍是积极维护的参考服务器。

使用本地 MCP 智能体需要遵守《数据安全法》吗?

需要——但本地 MCP 大幅降低了合规复杂度。《数据安全法》(2021) 对数据分级分类、重要数据出境评估、数据处理者义务有明确要求。云端 LLM 智能体涉及向境外服务商发送数据(涉及第 36 条「向境外提供」的合规评估)、处理活动留痕(第 27 条)、安全审计(第 29 条)。本地 MCP 栈中模型、客户端、所有工具服务器都在企业自有机器运行:第一,没有数据出境行为,无需触发出境安全评估;第二,MCP 客户端的审计日志(Goose、Cline、Continue.dev)天然满足处理活动留痕要求;第三,工具权限的分级配置(filesystem 单目录、数据库只读角色、GitHub fine-grained PAT)与等保 2.0 的访问控制要求一致。但仍需履行:数据本身的合规义务(合法性、目的限定、最短保留)、内部 DPO 或安全负责人审批、定期安全评估。

本地 MCP 智能体如何满足中国企业的合规要求?

本地 MCP 智能体在中国企业合规上有三层优势。第一,《个人信息保护法》(PIPL) 第 23 条对委托处理者要求严格的合同与安全保障措施;本地推理消除了 LLM 层的委托处理关系,简化了与 OpenAI、Anthropic、Google 的合同与跨境合规路径。第二,《网络安全法》要求关键信息基础设施运营者数据本地化,本地推理天然满足这一要求;MCP 客户端的审计日志可作为等保 2.0 三级以上系统的访问与操作日志归档。第三,金融业(人行金融科技指引)、医疗业(卫健委「互联网+医疗健康」要求)、法律业(律师执业管理办法)的细分合规对客户/患者/当事人数据的境内处理与不得对外提供有具体规定,本地 MCP 智能体可在不触发跨境与第三方提供条款的前提下完成摘要、检索、合规检查等工作。建议落地步骤:建立内部「智能体 + 数据」白名单(哪些数据可被哪些智能体处理)、为浏览器服务器单独建立网络隔离环境、审计日志落入 WORM 存储、由内部安全或 DPO 团队定期审查。

← 返回 本地LLM进阶

MCP