Claude Code MCP入门:连接外部工具与上下文管理实践

MCP是连接Claude Code与外部工具的开放标准协议,需注意上下文管理。
MCP(Model Context Protocol)是Anthropic发布的开放标准,借鉴LSP的设计思路,为AI模型与外部工具建立统一通信协议。它支持HTTP和STDIO两种传输方式,提供本地、用户和项目三种作用域。使用时需注意工具定义会消耗上下文窗口空间,建议优先使用CLI替代、善用Skill按需加载,并定期清理不活跃的服务器。
什么是MCP?
Model Context Protocol(MCP)是一个开放标准,它让Claude Code能够连接外部工具和数据源。当你提出问题时,Claude会自动判断何时应该使用这些工具来更好地理解你的需求。
MCP由Anthropic于2024年底正式发布,其设计灵感来源于Language Server Protocol(LSP)——一个在IDE领域广泛使用的标准化协议。LSP解决了编辑器与编程语言之间的M×N集成问题,将其简化为M+N的线性复杂度。例如,在没有LSP之前,10个编辑器要支持10种语言需要100个集成适配器;有了LSP,只需要10+10=20个实现。MCP同样采用这种思路,为AI模型与外部工具之间建立统一的通信标准,避免每个AI应用都需要为每个数据源编写专用集成代码。这意味着工具开发者只需实现一次MCP协议,就能让所有支持MCP的AI客户端使用其服务。

在使用Claude Code时,上下文(Context)是最关键的要素之一。然而,大量的上下文信息分散在各处——你的数据库、生产力应用,或者公共代码仓库中。MCP正是为解决这个问题而生的。
理解"工具"的概念
在讨论AI Agent时,首先需要理解"工具"(Tools)的概念。工具赋予了像Claude Code这样的Agent执行具体操作的能力,使其能够更好地完成任务。这与传统AI直接以文本形式返回输出有本质区别——Agent可以主动调用工具来获取信息、执行操作。
从技术层面来看,工具调用(Function Calling/Tool Use)是现代大语言模型的核心能力之一。其工作原理是:模型在生成回复时,不仅可以输出文本,还可以输出结构化的工具调用请求(通常是JSON格式,包含工具名称和参数)。系统会拦截这个请求,执行对应的工具函数,并将执行结果返回给模型。模型再基于工具返回的结果继续推理,最终生成对用户的回复。这种"思考-行动-观察"的循环机制(也称为ReAct模式)使AI从被动的文本生成器转变为能够主动获取信息和执行操作的智能Agent。在MCP的框架下,这些工具的定义和调用接口被标准化了,使得工具的发现、描述和调用都遵循统一的协议规范。
实际应用场景
- 项目管理集成:如果团队使用Linear作为项目管理工具,可以添加Linear MCP服务器,将具体的Issue详情引入Claude Code的上下文中
- 实时文档查询:如果需要获取某个依赖库的最新文档,Context7 MCP服务器可以为Claude Code提供这些信息
- 更多连接器:在claude.ai/connectors上有数百种不同的连接器可供选择
如何添加和管理MCP服务器
添加服务器
使用 claude mcp add 命令即可添加MCP服务器。服务器分为两种主要类型:
- HTTP服务器:用于远程服务,由服务提供商托管,通过网络连接
- STDIO服务器:用于本地进程,直接在你的机器上运行
这两种传输方式的技术差异值得深入了解。STDIO(Standard Input/Output)是Unix系统中进程间通信的基本方式,MCP的STDIO传输模式通过启动子进程并通过标准输入输出流交换JSON-RPC消息来实现通信。当你添加一个STDIO类型的MCP服务器时,Claude Code实际上会在本地启动一个进程(通常是Node.js或Python脚本),并通过stdin/stdout与其通信。这种方式延迟极低(通常在毫秒级),但仅限本地使用。HTTP传输模式(基于Server-Sent Events即SSE或最新的Streamable HTTP)则允许客户端通过网络连接远程服务器,适合云端托管的服务,但会引入网络延迟和认证复杂性。选择哪种类型取决于你的使用场景:本地数据库查询适合STDIO,而连接SaaS服务则通常使用HTTP。
管理服务器
在Claude Code会话中使用 /mcp 命令可以:
- 查看已连接的服务器
- 检查连接状态
- 查看相关数据
- 禁用不需要使用的服务器
MCP服务器的三种作用域
MCP服务器可以在三个不同的范围内生效:
- Local(本地):仅在当前项目中对你可用
- User(用户):在你所有的项目中都可用
- Project(项目):使用
.mcp.json文件,将其纳入版本控制,这样任何参与该代码库开发的人都会自动获得完全相同的服务器配置
项目级别的作用域特别适合团队协作,确保所有成员拥有一致的开发环境。.mcp.json文件的设计理念类似于.vscode/settings.json或.editorconfig等项目级配置文件——通过将配置文件提交到Git仓库,实现团队成员之间的环境一致性。这种Infrastructure as Code(基础设施即代码)的思想确保新成员克隆仓库后即可获得完整的工具链配置,无需手动设置,大幅降低了团队协作的摩擦成本。需要注意的是,出于安全考虑,包含API密钥等敏感信息的配置不应直接写入.mcp.json,而应通过环境变量引用的方式处理。
上下文管理:关键注意事项
上下文窗口的消耗
MCP服务器会将工具定义(tool definitions)添加到你的上下文窗口中,即使你并未主动使用这些工具。如果配置了大量服务器,这会显著侵蚀可用的上下文空间。
要理解这个问题的严重性,需要了解上下文窗口的技术限制。上下文窗口(Context Window)是指模型在单次推理中能够处理的最大token数量。即使现代模型如Claude已支持200K token的上下文窗口,在实际编程场景中,代码文件、对话历史、系统提示词等内容会快速消耗可用空间。工具定义以JSON Schema的形式描述每个工具的名称、参数类型、功能说明和使用示例,每个工具可能占用数百到数千个token。如果一个MCP服务器暴露了20个工具,每个工具定义平均500 token,仅这一个服务器就会占用10,000 token的上下文空间——这还没有计算工具调用的返回结果。当你同时连接多个MCP服务器时,工具定义的累积消耗可能达到数万token,严重压缩了留给实际代码和对话的空间。
建议:定期运行 /mcp 命令检查已连接的服务器,禁用那些不活跃使用或预计不会用到的服务器。
CLI替代方案更高效
如果某个工具有CLI等价物(如GitHub的 gh 命令或AWS的 aws 命令),使用CLI会更加上下文高效,因为它不会添加持久性的工具定义。当Claude Code通过Bash工具执行CLI命令时,它只需要知道命令的语法(这通常已经包含在模型的训练知识中),而不需要在上下文中维护完整的工具Schema定义。命令的输出也是一次性的,不会像MCP工具定义那样持续占用上下文空间。
使用Skill优化上下文
在这种场景下,你还可以考虑使用Skill。Skill具有名称和描述,会被加载到上下文中。与MCP类似,当Claude认为需要使用某个Skill时,它会决定将其加载到上下文窗口中——你可以在其中放置命令行接口工具的调用方式。Skill本质上是Markdown文件,存储在项目的.claude/目录中,它们比完整的MCP工具定义更加轻量。你可以将常用的CLI命令模式、API调用模板或工作流程封装为Skill,实现"按需加载"而非"始终占用"的上下文管理策略。
自动工具搜索模式
当MCP工具占用超过上下文窗口的10%时,Claude Code会自动切换到工具搜索模式(Tool Search Mode),按需发现合适的工具。在这种模式下,Claude不会将所有工具定义加载到上下文中,而是先根据当前任务的语义描述搜索可能相关的工具,然后只加载匹配度最高的工具定义。这类似于搜索引擎的工作方式——先检索再精读。但需要注意,这种模式的效果可能不如直接在上下文中加载工具定义那样精准,因为搜索过程本身可能遗漏某些在特定场景下有用但描述不够匹配的工具。
最佳实践总结
- 按需添加:使用
claude mcp add添加真正需要的服务器 - 团队共享:通过
.mcp.json文件将配置纳入版本控制,确保团队一致性 - 监控上下文:定期检查并禁用不活跃的服务器,保持上下文窗口的高效利用
- 优先CLI:对于有命令行工具的服务,优先使用CLI而非MCP连接
- 善用Skill:将常用的CLI工具封装为Skill,实现按需加载
MCP为Claude Code打开了连接外部世界的大门,但合理管理上下文资源同样重要。掌握好这个平衡,才能让AI Agent真正发挥最大效能。
相关推荐
教程攻略Cursor+Codex双IDE协同:开源项目二开实战方法论
基于实战经验总结的开源项目二次开发完整方法论,详解Cursor+Codex双IDE协同工作流,涵盖二开七环节、MVP验证、AI读源码技巧,帮助开发者三天跑通项目、两周完成业务集成。
教程攻略Cursor多Agent实战:50分钟搭建Next.js全栈博客
使用Cursor IDE多Agent协作模式,50分钟内从零搭建全栈博客。涵盖Next.js、Clerk认证、Supabase数据库集成,详解4个AI Agent分阶段开发流程与关键避坑经验。
教程攻略从零搭建AI软件工厂:Cursor工程师的多Agent协作实战经验
Cursor工程师Eric分享AI软件工厂构建实战:从自动化六层级、护栏设计、并行Agent管理到规模化扩展,详解如何用多Agent协作实现7×24小时高效软件开发。