我们将构建一个基于CLI的聊天机器人,以更好地理解MCP客户端和服务器是如何协同工作的。这个动手项目将让您获得MCP架构两端的实践经验。
设置完成后,您应该能够做到两件事:说出客户端做什么、服务器做什么,并能判断某个回复是通过工具返回的,还是直接来自模型本身。
我们要构建什么
我们的聊天机器人将允许用户通过命令行界面与一组文档进行交互。该系统由两个主要组件构成:
- 一个处理用户交互的MCP客户端
- 一个管理文档操作的自定义MCP服务器

服务器将提供两个基本工具:一个用于读取文档内容,另一个用于更新文档内容。为简单起见,所有文档都将存储在内存中——无需数据库。
重要的架构说明
在实际项目中,您通常只会实现MCP客户端或MCP服务器中的一个,而不是两者都实现。您可能会创建:
- 一个MCP服务器,用于向其他开发者暴露您的服务
- 一个MCP客户端,用于连接到现有的MCP服务器

我们在本项目中同时构建这两个组件,纯粹是出于教学目的——为了理解它们是如何通信和协同工作的。
项目设置
从本课末尾的下载部分下载cli_project.zip,并将其解压到您偏好的开发目录中。在项目文件夹中打开您的代码编辑器。
该项目包含一个详尽的README文件,其中有设置说明。请按照以下步骤操作:
- 将您的Anthropic API密钥添加到
.env文件中 - 使用UV(推荐)或pip安装依赖项
- 运行初始应用程序以验证一切正常
运行应用程序
在终端中导航到您的项目目录。您将看到主要的项目文件,包括main.py、mcp_client.py和mcp_server.py。
要启动应用程序,请使用以下命令之一:
# 如果使用 UV(推荐)
uv run main.py
# 如果使用标准 Python
python main.py应用程序成功启动后,您将看到一个聊天提示符。
亲自检查基线。 输入一个您一眼就能验证的问题,比如"1+1等于多少?"。不要满足于看到有回复出现:要确认答案确实是2。一个正确的回复证明了您的API密钥、依赖项和聊天循环都正常工作。
然后输入第二个问题,比如"文档里说了什么?"。无论返回什么内容,它都不可能来自文档工具,因为您还没有构建它们。这个回复是模型自己给出的答案。请注意一旦该功能存在,哪个组件将负责这项工作:服务器管理文档操作,而客户端处理您这一侧的对话。
这项检查背后的习惯是:让您验证的仔细程度与出错的代价相匹配。这里一旦设置出错,将会影响后续建立在其之上的每一课;而检查的成本只是两个问题而已。
一项值得保留的检查
值得在本项目之外延续的行为是:每当您为API项目添加一个新层——无论是工具、数据源还是MCP服务器——在构建下一层之前,先向正在运行的系统提出一个您已经知道答案的问题。一个您已经验证过的基线,才是您唯一能够据以调试的基线。
基本设置完成后,我们就可以开始实现MCP功能,并探索客户端和服务器如何通过Model Context Protocol进行通信了。