如何快速搭建基于 Ollama 的 MCP 客户端(Grok3 回答)
Model Context Protocol (MCP) 是一种标准化协议,用于连接大型语言模型(LLM)与外部工具和数据源,帮助开发者构建智能、交互式的 AI 应用。Ollama 是一个开源工具,允许在本地运行 LLM,具有隐私性强、易于部署的特点。本文将指导你使用 Ollama 作为 LLM 服务提供者,快速搭建一个 MCP 客户端,并与 pip 和 conda 的环境管理方式进行对比。
以下是一篇简洁且实用的技术教程,介绍如何基于 Ollama 作为大型语言模型(LLM)服务提供者,快速搭建一个 Model Context Protocol (MCP) 客户端。教程将包括步骤说明、代码示例以及与 pip
和 conda
的环境管理对比,最后提供一些注意事项。
快速搭建基于 Ollama 的 MCP 客户端
Model Context Protocol (MCP) 是一种标准化协议,用于连接大型语言模型(LLM)与外部工具和数据源,帮助开发者构建智能、交互式的 AI 应用。Ollama 是一个开源工具,允许在本地运行 LLM,具有隐私性强、易于部署的特点。本文将指导你使用 Ollama 作为 LLM 服务提供者,快速搭建一个 MCP 客户端,并与 pip
和 conda
的环境管理方式进行对比。
前提条件
在开始之前,请确保你的环境满足以下要求:
- 操作系统:Windows、macOS 或 Linux
- Ollama:已安装并运行,参考 Ollama 官网 下载并安装
- Python:3.10 或以上版本
- 支持工具调用的模型:如
llama3.1
或qwen2.5
,可通过ollama pull <model-name>
下载 - 依赖管理工具:推荐使用
uv
(或pip
/conda
作为替代)
步骤指南
1. 安装并配置 Ollama
-
安装 Ollama:
- 根据你的操作系统,从 Ollama 官网 下载并安装。
- Linux 用户可运行以下命令:
curl -fsSL https://ollama.com/install.sh | sh
- 安装完成后,启动 Ollama 服务:
ollama serve
-
拉取支持工具调用的模型:
- 选择一个支持工具调用的模型(如
llama3.1
):ollama pull llama3.1:8b
- 验证模型是否支持工具调用,可参考 Ollama 模型库。
- 选择一个支持工具调用的模型(如
2. 设置开发环境
推荐使用 uv 作为依赖管理工具,因其速度快、虚拟环境管理便捷。以下是使用 uv
、pip
和 conda
的配置步骤对比:
使用 uv(推荐)
# 安装 uv
pip install uv
# 创建项目目录并初始化虚拟环境
mkdir mcp-client
cd mcp-client
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装必要依赖
uv pip install langchain langchain-ollama langchain-mcp-adapters fastmcp
使用 pip
# 创建虚拟环境
python -m venv mcp-client-venv
source mcp-client-venv/bin/activate # Windows: mcp-client-venv\Scripts\activate
# 安装依赖
pip install langchain langchain-ollama langchain-mcp-adapters fastmcp
使用 conda
# 创建并激活 Conda 环境
conda create -n mcp-client python=3.10
conda activate mcp-client
# 安装依赖
conda install pip
pip install langchain langchain-ollama langchain-mcp-adapters fastmcp
uv vs. pip vs. conda 对比:
特性 | uv | pip | conda |
---|---|---|---|
速度 | 极快(Rust 实现) | 较慢 | 最慢(解析复杂依赖) |
虚拟环境管理 | 内置,简单 | 需要配合 venv |
内置,功能强大但复杂 |
非 Python 依赖 | 有限 | 有限 | 强大(如 C 库、R 包) |
生态成熟度 | 新兴,社区成长中 | 成熟,广泛使用 | 成熟,数据科学领域首选 |
适合场景 | 快速开发,现代工作流 | 轻量级项目,PyPI 依赖 | 数据科学,复杂依赖管理 |
推荐:使用 uv
来获得最佳性能和简洁体验,尤其适合快速原型开发。
3. 创建 MCP 客户端
以下是一个简单的 Python 脚本,用于构建一个基于 Ollama 的 MCP 客户端,连接到一个示例 MCP 服务器(如文件系统工具)。
import asyncio
import nest_asyncio
from langchain_ollama import ChatOllama
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_mcp_adapters.tools import MCPTool
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
# 允许嵌套异步运行(适用于 Jupyter 或交互环境)
nest_asyncio.apply()
# 配置 MCP 服务器(示例:文件系统 MCP 服务器)
MCP_CONFIG = {
"mcpServers": {
"filesystem": {
"command": "uvx",
"args": ["mcp-server-filesystem", "/path/to/your/folder"]
}
}
}
# 初始化 Ollama LLM
llm = ChatOllama(model="llama3.1:8b", temperature=0.7)
# 设置系统提示
SYSTEM_PROMPT = """
You are an AI assistant that uses MCP servers to interact with external tools.
Answer user queries by leveraging available tools and provide clear, concise responses.
"""
async def setup_agent():
# 初始化 MCP 客户端并获取工具
mcp_client = MultiServerMCPClient(MCP_CONFIG)
tools = await MCPTool.from_mcp_client(mcp_client)
# 创建 ReAct 代理
prompt = ChatPromptTemplate.from_messages([
("system", SYSTEM_PROMPT),
MessagesPlaceholder(variable_name="chat_history"),
("human", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad")
])
agent = create_react_agent(llm, tools, prompt)
return AgentExecutor(agent=agent, tools=tools, verbose=True)
async def main():
agent_executor = await setup_agent()
# 示例查询
response = await agent_executor.ainvoke({
"input": "List all files in /path/to/your/folder",
"chat_history": []
})
print(response["output"])
# 运行客户端
if __name__ == "__main__":
asyncio.run(main())
4. 配置 MCP 服务器
- 保存配置:将
MCP_CONFIG
保存为mcp_config.json
文件,或者通过命令行参数传递。 - 启动 MCP 服务器:确保 MCP 服务器已运行。例如,使用
uvx mcp-server-filesystem /path/to/your/folder
启动文件系统服务器。 - 验证连接:运行脚本,检查是否能正确调用工具(如列出文件)。
5. 测试与调试
-
测试命令:
python mcp_client.py
预期输出:列出指定文件夹中的文件列表。
-
调试提示:
- 确保 Ollama 服务正在运行(
ollama serve
)。 - 检查模型是否支持工具调用(参考 Ollama 文档)。
- 使用 MCP Inspector(
http://localhost:3001
)查看可用工具和调试。
- 确保 Ollama 服务正在运行(
注意事项
- 模型选择:确保使用的 Ollama 模型支持工具调用(如
llama3.1:8b
或qwen2.5
)。 - 性能优化:对于大型项目,
uv
的速度优势显著,建议优先使用。 - 安全性:运行本地 MCP 客户端和 Ollama 确保数据隐私,但需检查工具调用是否涉及敏感操作。
- 社区资源:参考 Ollama GitHub 和 MCP 文档 获取最新信息。
总结
通过以上步骤,你可以使用 Ollama 快速搭建一个 MCP 客户端,结合 uv
的高效依赖管理,实现本地化、隐私安全的 AI 工具调用。相比 pip
和 conda
,uv
在速度和简洁性上更适合快速开发,而 conda
更适合需要复杂依赖的场景。希望这篇教程能帮助你快速上手 MCP 和 Ollama,构建强大的 AI 应用!
参考资料:
- Ollama 官方文档:https://ollama.com/
- MCP 客户端示例:https://github.com/jonigl/mcp-client-for-ollama
- LangChain 与 Ollama 集成:https://python.langchain.com/docs/integrations/llms/ollama
更多推荐
所有评论(0)