11.2 MCP 核心功能
第 11 章 · 模型上下文协议 MCP 概述 · 第4部分:模型上下文协议 MCP
MCP 提供丰富的核心功能,使 Claude Code 能够与外部工具和数据源无缝集成,极大扩展了 AI 助手的能力边界。
工具调用#
基本工具调用#
MCP 服务器提供可调用的工具,Claude Code 可以像使用内置工具一样使用它们。这些工具可以是任何类型的服务或应用,从简单的 API 调用到复杂的工作流自动化。
bash复制# 使用 MCP 工具的示例使用 GitHub 工具创建 PR 使用 Sentry 工具查询最近的错误 使用数据库工具查询用户数据 使用 Docker 工具管理容器
工具发现#
Claude Code 会自动发现 MCP 服务器提供的所有工具,并将其集成到用户界面中。用户可以通过简单的命令查看所有可用工具:
bash复制# 查看可用的 MCP 工具/mcp # 输出示例MCP 服务器: - github: 提供 PR、issue、代码搜索等工具 - sentry: 提供错误查询、监控等工具 - database: 提供数据库查询工具 - docker: 提供容器管理工具
工具参数#
MCP 工具可以接受参数,使调用更加灵活和精确。参数可以是位置参数或命名参数:
bash复制# 带参数的工具调用使用 GitHub 工具查看 PR #123使用数据库工具查询用户 ID 为 456 的信息 使用 Docker 工具启动名为 "web-server" 的容器
资源访问#
资源类型#
MCP 服务器可以提供多种类型的资源,让 Claude Code 能够直接访问和操作:
- 数据库表: 可查询和操作的数据表
- 文件系统: 可访问的文件和目录
- API 端点: 可调用的 REST API
- 配置文件: 可读取和修改的配置
- 监控数据: 可查看的系统监控指标
资源发现#
Claude Code 自动发现 MCP 服务器提供的所有资源,并以直观的方式展示给用户:
bash复制# 查看可用的 MCP 资源/mcp # 输出示例MCP 资源: - database.users: 用户表 - database.orders: 订单表 - filesystem.logs: 日志目录 - api.metrics: 系统监控 API
资源访问#
用户可以通过自然语言命令直接访问 MCP 资源:
bash复制# 访问 MCP 资源的示例查询数据库中的用户表 读取日志文件 /var/log/app.log 获取系统配置信息 查看最近 24 小时的 CPU 使用率
提示模板#
提示模板定义#
MCP 服务器可以提供预定义的提示模板,帮助用户快速完成常见任务。这些模板包含最佳实践和标准化格式,确保输出质量。
bash复制# 使用 MCP 提示模板的示例使用 GitHub 的 PR 审查模板 使用 Sentry 的错误分析模板 使用 Jira 的 bug 报告模板
提示模板优势#
提示模板带来以下优势:
- 标准化: 统一的提示格式,确保输出质量
- 高效: 快速开始任务,减少重复工作
- 一致性: 确保团队成员使用相同的标准
- 可扩展性: 可以轻松创建和共享新模板
身份验证#
OAuth 2.0#
MCP 支持 OAuth 2.0 身份验证,允许 Claude Code 安全地访问受保护的资源:
bash复制# 使用 /mcp 进行身份验证/mcp # 选择需要身份验证的服务器# 按照提示完成 OAuth 流程
API 密钥#
MCP 支持 API 密钥身份验证,适用于服务之间的通信:
bash复制# 添加带 API 密钥的服务器claude mcp add --transport http api https://api.example.com/mcp \ --header "Authorization: Bearer your-api-key"
环境变量#
MCP 支持通过环境变量传递凭证,提高安全性和配置灵活性:
bash复制# 使用环境变量添加服务器claude mcp add --transport stdio db --env DB_URL=your-db-url \-- npx -y @bytebase/dbhub
权限管理#
工具权限#
MCP 提供细粒度的工具级权限控制,确保用户只能访问他们需要的工具:
bash复制# 限制工具访问claude --allowedTools "Read,Grep,Glob,mcp__github"
资源权限#
MCP 支持资源级权限控制,允许管理员限制对特定资源的访问:
bash复制# 限制资源访问示例只允许访问 database.users 表 禁止修改配置文件
操作权限#
MCP 提供操作级权限控制,允许管理员限制用户可以执行的操作类型:
bash复制# 限制操作类型示例只允许只读操作 禁止删除数据库记录
数据流控制#
输出限制#
MCP 工具输出有默认限制,防止返回过多数据影响性能:
bash复制# 默认限制:10,000 令牌# 增加限制MAX_MCP_OUTPUT_TOKENS=50000 claude
超时控制#
MCP 服务器启动有超时限制,防止长时间运行的任务阻塞系统:
bash复制# 默认超时:30 秒# 设置超时MCP_TIMEOUT=10000 claude
流式输出#
MCP 支持流式输出,允许处理大型数据集而不会占用过多内存:
bash复制# 流式输出大结果使用数据库工具导出所有用户数据 使用日志工具实时监控系统日志
错误处理#
错误捕获#
MCP 提供详细的错误信息,帮助用户快速定位和解决问题:
bash复制# 错误示例使用 GitHub 工具创建 PR 错误:无法创建 PR - 权限不足
错误恢复#
MCP 提供错误恢复机制,包括自动重试和替代方案建议:
bash复制# 自动重试失败的操作重试失败的数据库查询 # 提供替代方案使用其他工具完成相同任务
错误日志#
MCP 记录详细的错误日志,方便管理员排查问题:
bash复制# 查看错误日志claude --verbose
性能优化#
缓存#
MCP 支持结果缓存:
缓存查询结果
使用数据库工具查询用户数据
相同查询会使用缓存
bash复制### 批处理 MCP 支持批量操作: ```bash # 批量查询 批量查询多个用户 ``` ### 并行处理 MCP 支持并行处理: ```bash # 并行执行多个 MCP 工具 同时查询多个数据源 ``` ## 监控和调试 ### 工具使用监控 ```bash # 查看工具使用情况 显示 MCP 工具使用统计 ``` ### 性能监控 ```bash # 查看性能指标 显示 MCP 工具执行时间 ``` ### 调试模式 ```bash # 启用调试模式 claude --verbose ``` ## 扩展功能 ### 自定义工具 MCP 服务器可以提供自定义工具: ```bash # 使用自定义工具 使用自定义工具处理数据 ``` ### 插件集成 MCP 可以通过插件集成: ```bash # 安装带 MCP 的插件 /plugin install my-plugin@claude ``` MCP 提供多种性能优化功能,确保工具调用高效可靠: ### 缓存机制 MCP 支持结果缓存,避免重复调用相同的工具: ```bash # 启用缓存 claude mcp add --transport http api https://api.example.com/mcp \ --cache-ttl 300 ``` ### 并行调用 MCP 支持并行调用多个工具,提高处理效率: ```bash # 并行调用示例 同时使用 GitHub 工具和 Sentry 工具 ``` ### 插件集成 MCP 可以与插件系统集成,进一步扩展功能: ```bash # 安装 MCP 插件 /plugin install my-plugin@claude ``` ### 技能集成 MCP 可以与技能系统深度集成,实现更复杂的自动化任务: ```bash # 使用技能调用 MCP 工具 使用数据处理技能调用数据库工具 使用自动化技能执行 DevOps 流程 ``` ## 安全功能 ### 数据加密 MCP 支持数据加密传输,确保敏感信息不被泄露: ```bash # 加密传输 claude mcp add --transport http secure https://api.example.com/mcp \ --header "Authorization: Bearer encrypted-token" ``` ### 审计日志 MCP 记录详细的审计日志,便于追踪和合规检查: ```bash # 查看审计日志 显示 MCP 工具使用历史 导出审计报告 ``` ### 访问控制 MCP 提供细粒度的访问控制,确保只有授权用户可以使用特定工具: ```bash # 控制访问权限 限制特定用户访问 MCP 工具 基于角色的权限分配 ``` ## 最佳实践 ### 1. 合理配置 根据实际需求配置 MCP 服务器,确保最佳性能和安全性: ```bash # 配置建议 选择合适的传输方式(HTTP 用于远程,stdio 用于本地) 设置适当的超时时间(根据工具响应时间调整) 配置最小权限原则的权限设置 ``` ### 2. 监控使用 定期监控 MCP 工具使用情况,识别性能瓶颈和优化机会: ```bash # 监控建议 查看使用统计数据 分析性能指标(响应时间、成功率) 识别高频使用的工具和资源 ``` ### 3. 安全第一 确保 MCP 配置安全,保护敏感数据和资源: ```bash # 安全建议 使用强身份验证机制(OAuth 2.0 优于 API 密钥) 限制权限范围,遵循最小权限原则 定期更新凭证和密钥 ``` ### 4. 错误处理 妥善处理错误,提高系统可靠性和用户体验: ```bash # 错误处理建议 捕获并记录所有错误 提供清晰的错误信息和恢复方案 实现自动重试机制 ```