如何将 Ollama 连接至 MCP (2026)
通过 Model Context Protocol 使用本地 Ollama 模型
开始使用 Hypereal 构建
通过单个 API 访问 Kling、Flux、Sora、Veo 等。免费积分开始,扩展到数百万。
无需信用卡 • 10万+ 开发者 • 企业级服务
如何在 2026 年将 Ollama 连接至 MCP
MCP(模型上下文协议/Model Context Protocol)允许 AI 模型与外部工具和数据源进行交互。Ollama 则让您能够在本地运行强大的语言模型。将两者结合,您可以获得一个本地托管的 AI 助手,它可以访问文件、查询数据库、调用 API 并使用任何兼容 MCP 的工具——且无需将数据发送给云端提供商。
本指南将向您展示如何将 Ollama 模型与 MCP 服务器桥接,涵盖从简单到高级的多种方法。
为什么要将 Ollama 连接至 MCP?
默认情况下,Ollama 模型只能根据您提供的对话上下文进行响应。它们无法访问文件、搜索网络或与外部系统交互。MCP 通过赋予模型在对话期间可以调用的工具权限,改变了这一现状。
Ollama + MCP 的应用场景:
- 本地文件访问: 让模型读取并搜索您的代码库或文档。
- 数据库查询: 模型可以查询 SQLite、PostgreSQL 或其他数据库。
- API 集成: 连接到 GitHub、Jira、Slack 或任何提供 MCP 服务器的服务。
- 网络搜索: 为您的本地模型添加搜索功能。
- 完全隐私: 所有处理过程均保留在您的机器上。
前提条件
| 要求 | 详情 |
|---|---|
| Ollama | 已安装并运行 (ollama.com) |
| Node.js | v18+(用于运行 MCP 服务器) |
| 支持工具调用的模型 | Qwen 2.5, Llama 3.3, Hermes 3, 或 Mistral |
| 内存 (RAM) | 最低 8 GB,建议 16+ GB |
安装 Ollama(如果尚未安装)
# macOS/Linux
curl -fsSL https://ollama.com/install.sh | sh
# 拉取一个具有良好工具调用支持的模型
ollama pull qwen2.5:7b
验证 Ollama 是否正在运行:
curl http://localhost:11434/api/tags
方法 1:使用 MCP 客户端桥接器(推荐)
最实用的方法是使用一个充当 MCP 客户端的桥接应用程序,将 Ollama 的 API 连接到 MCP 服务器。
第 1 步:安装 mcp-client-cli 桥接器
npm install -g @anthropic/mcp-client-cli
该工具会创建一个交互式聊天界面,将 LLM 连接到 MCP 服务器。
第 2 步:创建配置文件
创建 mcp-config.json:
{
"llm": {
"provider": "openai-compatible",
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama",
"model": "qwen2.5:7b"
},
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/projects"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_your_token"
}
}
}
}
第 3 步:启动桥接器
mcp-client-cli --config mcp-config.json
这将打开一个交互式聊天窗口,您的 Ollama 模型可以在其中使用配置好的 MCP 工具。您可以要求它列出文件、读取代码或与 GitHub 交互——模型将自动调用相应的 MCP 工具。
方法 2:使用 Python 脚本进行工具调用
为了获得完全的控制权,可以编写一个 Python 脚本来处理 MCP 协议并将工具调用路由到 Ollama。
第 1 步:安装依赖
pip install openai mcp
第 2 步:创建桥接脚本
import asyncio
import json
from openai import OpenAI
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# 连接到 Ollama
llm = OpenAI(
api_key="ollama",
base_url="http://localhost:11434/v1"
)
MODEL = "qwen2.5:7b"
async def run():
# 启动 MCP 服务器(文件系统访问)
server_params = StdioServerParameters(
command="npx",
args=["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/projects"]
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 初始化 MCP 会话
await session.initialize()
# 从 MCP 服务器获取可用工具
tools_response = await session.list_tools()
mcp_tools = tools_response.tools
# 将 MCP 工具转换为 OpenAI 函数格式
openai_tools = []
for tool in mcp_tools:
openai_tools.append({
"type": "function",
"function": {
"name": tool.name,
"description": tool.description or "",
"parameters": tool.inputSchema if tool.inputSchema else {"type": "object", "properties": {}}
}
})
print(f"已连接到 MCP 服务器,拥有 {len(openai_tools)} 个工具")
print("工具列表:", [t["function"]["name"] for t in openai_tools])
print("\n对话已开始。输入 'quit' 退出。\n")
messages = []
while True:
user_input = input("您: ")
if user_input.lower() in ("quit", "exit"):
break
messages.append({"role": "user", "content": user_input})
# 调用带有工具支持的 Ollama
response = llm.chat.completions.create(
model=MODEL,
messages=messages,
tools=openai_tools if openai_tools else None,
tool_choice="auto"
)
assistant_message = response.choices[0].message
# 处理工具调用
if assistant_message.tool_calls:
messages.append(assistant_message)
for tool_call in assistant_message.tool_calls:
tool_name = tool_call.function.name
tool_args = json.loads(tool_call.function.arguments)
print(f" [正在调用工具: {tool_name}({tool_args})]")
# 通过 MCP 执行
result = await session.call_tool(tool_name, tool_args)
# 将工具结果添加至对话
tool_result_text = ""
for content in result.content:
if hasattr(content, "text"):
tool_result_text += content.text
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": tool_result_text
})
# 工具执行后获取最终回复
final_response = llm.chat.completions.create(
model=MODEL,
messages=messages
)
final_text = final_response.choices[0].message.content
messages.append({"role": "assistant", "content": final_text})
print(f"AI: {final_text}\n")
else:
content = assistant_message.content or ""
messages.append({"role": "assistant", "content": content})
print(f"AI: {content}\n")
asyncio.run(run())
第 3 步:运行脚本
python ollama_mcp_bridge.py
示例会话:
已连接到 MCP 服务器,拥有 5 个工具
工具列表: ['read_file', 'write_file', 'list_directory', 'search_files', 'get_file_info']
您: 列出我项目目录中的所有 TypeScript 文件
[正在调用工具: list_directory({"path": "/Users/yourname/projects"})]
[正在调用工具: search_files({"pattern": "*.ts", "path": "/Users/yourname/projects"})]
AI: 在您的项目目录中找到了 23 个 TypeScript 文件...
您: 读取主 index.ts 文件并给出改进建议
[正在调用工具: read_file({"path": "/Users/yourname/projects/my-app/src/index.ts"})]
AI: 以下是我对改进 index.ts 的建议...
方法 3:使用支持 MCP 的 Open WebUI
Open WebUI 是 Ollama 广受欢迎的 Web 界面,现已增加了对 MCP 的支持。这为您提供了一个由本地模型驱动且具备 MCP 工具访问能力的类 ChatGPT 界面。
第 1 步:安装 Open WebUI
docker run -d -p 3000:8080 \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
--name open-webui \
ghcr.io/open-webui/open-webui:main
第 2 步:配置 MCP 服务器
在 Open WebUI 的管理员设置中:
- 导航至 Admin > Settings > MCP
- 添加您的 MCP 服务器配置
- 为您选择的模型启用工具调用
第 3 步:开始使用
在浏览器中打开 http://localhost:3000。选择支持工具调用的 Ollama 模型并开始聊天。模型现在可以通过 Web 界面使用配置好的 MCP 工具。
适合 MCP 工具调用的最佳模型
并非所有 Ollama 模型都能很好地处理工具调用。以下是最可靠的选择:
| 模型 | 大小 (Q4) | 工具调用能力 | 可靠性 | 速度 |
|---|---|---|---|---|
| Qwen 2.5 7B Instruct | 4.5 GB | 优秀 | 高 | 快 |
| Hermes 3 8B | 5 GB | 优秀 | 高 | 快 |
| Llama 3.3 8B Instruct | 5 GB | 很好 | 高 | 快 |
| Mistral Small 24B | 14 GB | 良好 | 中 | 中 |
| Qwen 2.5 72B Instruct | 42 GB | 优秀 | 极高 | 慢 |
| Command R+ 104B | 60 GB | 很好 | 高 | 慢 |
建议: 从 qwen2.5:7b 开始,它在工具调用的可靠性和性能之间取得了最佳平衡。如果您的显存 (VRAM) 充足,可以升级到 qwen2.5:72b。
# 拉取推荐模型
ollama pull qwen2.5:7b
# 或者为了更好的质量(需更多显存)
ollama pull qwen2.5:72b-instruct-q4_K_M
值得连接的常用 MCP 服务器
以下是适合与 Ollama 搭配使用的最实用的 MCP 服务器:
| MCP 服务器 | 软件包 | 应用场景 |
|---|---|---|
| Filesystem | @modelcontextprotocol/server-filesystem |
读/写本地文件 |
| GitHub | @modelcontextprotocol/server-github |
处理 Issues、PR 和 仓库 |
| SQLite | @modelcontextprotocol/server-sqlite |
查询本地数据库 |
| Brave Search | @anthropic/mcp-server-brave-search |
网络搜索 |
| Fetch | @modelcontextprotocol/server-fetch |
获取网页内容 |
| Memory | @modelcontextprotocol/server-memory |
跨会话持久化记忆 |
使用以下命令安装并使用其中任何一个:
npx -y @modelcontextprotocol/server-filesystem /path/to/directory
故障排除
“模型不支持工具调用” 并非所有 Ollama 模型都支持工具调用格式。请使用 Qwen 2.5, Hermes 3, 或 Llama 3.3 Instruct。避免使用基础 (base) 模型或名称中不含“instruct”的模型。
工具调用返回格式错误(Malformed JSON) 在 Ollama 配置中将 temperature(温度)降低到 0.1。较高的温度会导致模型在生成工具调用参数时产生无效的 JSON。
response = llm.chat.completions.create(
model=MODEL,
messages=messages,
tools=openai_tools,
temperature=0.1 # 低温以获得可靠的工具调用
)
MCP 服务器启动失败 请确保已安装 Node.js v18+ 且 MCP 服务器包已正确安装。通过在终端中手动运行 npx 命令进行测试。
Ollama 未在 11434 端口响应 使用以下命令启动 Ollama 服务:
ollama serve
或检查其是否正在运行:
curl http://localhost:11434/api/tags
工具调用响应缓慢
工具调用会增加延迟,因为模型需要生成工具调用,等待工具执行,然后模型再处理结果。请使用较小、较快的模型 (7B) 并确保利用了 GPU。使用 nvidia-smi 或 ollama ps 查看状态。
总结
将 Ollama 连接到 MCP 为您提供了一个完全本地化、保护隐私的 AI 助手,它可以与您的文件、数据库和服务进行交互。从使用预建桥接器进行 5 分钟配置,到完全自定义的 Python 集成,您可以根据需求灵活选择。成功的关键在于选择一个具有强大工具调用支持的模型并保持推理参数保守。
如果您的工作流程还涉及 AI 生成的媒体(如图像、视频或数字人对话),请关注 Hypereal AI,它提供一个统一的 API,可以处理所有主流的 AI 媒体模型。
免费试用 Hypereal AI —— 提供 35 个积分,无需信用卡。
