Claude Code 插件:MCP 工具如何通过外部能力扩展 Claude Code

Claude Code 插件:MCP 工具如何通过外部能力扩展 Claude Code

Claude Code 并没有传统的插件系统,即没有插件市场和一键安装功能。它使用的是模型上下文协议(MCP),这是 Anthropic 推出的一项开放标准,用于将外部工具附加到 Claude Code 会话中。MCP 服务器充当插件角色:它们暴露可调用的工具,Claude 决定何时使用它们,并将结果反馈到对话中。本指南将解释这种扩展模型;如需可复制的 CLI 和 JSON 配置,请参考 Claude MCP 配置指南

“Claude Code 插件”的实际含义

当开发者搜索“Claude Code 插件”时,通常他们想要的是以下三者之一:一种让 Claude Code 访问外部服务(GitHub、数据库、网页浏览器)的方式,一种安装社区构建的工具扩展的方法,或者关于扩展机制如何工作的文档。

这三者都指向 MCP。Anthropic 在设计 Claude Code 时,围绕的是模型上下文协议,而非专有的插件格式。这意味着:

  • 没有独立的市场:工具以 MCP 服务器的形式分发,而非通过特定平台的注册表
  • 没有 API 级别的锁定:任何开发者都可以构建服务器并分享
  • 相同的集成接口:Claude Code、Claude Desktop 和其他 Claude 宿主都使用相同的协议

实际效果是,Claude Code 的插件目录就是 MCP 生态系统——任何按照 MCP 规范构建的服务器都可以与 Claude Code 配合使用,目前已有数千个服务器可用于数据库、API、浏览器、代码运行器、文件系统等。

没有 claude plugin install 这样的命令。等效的命令是 claude mcp add

MCP 服务器如何作为插件工作

每个 MCP 服务器都是一个进程,通过 MCP 协议暴露一组工具。当你启动会话时,Claude Code 会启动或连接到已注册的服务器,查询它们的工具列表,然后在对话需要时使用这些工具。

MCP 服务器的接口由三个对象组成:

对象 说明 示例
工具 具有定义好的输入和输出的可调用函数 run_pythonsearch_docscreate_issue
资源 服务器作为上下文暴露的只读数据 文件内容、数据库行、测试夹具
提示 与服务器捆绑的预构建指令模板 代码审查清单、任务模板

对于大多数 Claude Code 工作流来说,工具是最重要的。当你构建更结构化的代理管道时,资源和提示才会发挥作用。

关键的协议流程:

  1. Claude Code 启动,读取配置,并启动已注册的服务器
  2. 每个服务器响应 tools/list 查询,返回名称和 JSON Schema 定义
  3. 在会话期间,Claude 使用这些定义来决定何时以及如何调用每个工具
  4. Claude Code 分派调用,服务器执行并返回结果,Claude 整合结果后继续执行

服务器负责执行。Claude 负责推理何时需要执行。

使用 claude mcp add 安装你的第一个插件

claude mcp add 是向 Claude Code 注册 MCP 服务器的命令。运行一次后,该服务器在后续每个会话中都可用。

# stdio 服务器的基本形式
claude mcp add <server-name> -- <command> [args...]

# HTTP 服务器的基本形式
claude mcp add --transport http <server-name> <url>

运行任何 claude mcp add 命令之前的先决条件:

  • Claude Code 已安装并位于 PATH 环境变量中(claude --version 应能正常工作)
  • 对于基于 npm 的服务器,需要 Node.js 18 或更高版本
  • 对于基于 Python 的服务器,需要 Python 3.10 或更高版本

添加 Playwright 浏览器插件

Playwright MCP 服务器为 Claude 提供了一个真实的浏览器——它可以导航 URL、点击元素、提取文本并返回截图。这是最值得添加的第一个插件之一,因为它不需要 API 密钥,并且能立即展示该协议的能力。

claude mcp add playwright -- npx -y @playwright/mcp@latest

验证它是否已注册:

claude mcp list

然后打开一个会话:

Use playwright to open https://example.com and tell me the page title and main heading

Claude 将启动浏览器,导航到该 URL,读取 DOM,并返回答案——你无需编写任何脚本。

添加数据库插件

官方的 SQLite MCP 服务器让 Claude 可以直接在对话中查询和检查本地 SQLite 数据库:

claude mcp add sqlite -- uvx mcp-server-sqlite --db-path /path/to/your/database.db

之后,你可以让 Claude 编写查询、解释模式或直接探索数据,而无需在每个提示中粘贴模式定义。

传递环境变量

大多数需要 API 的服务器都需要密钥。使用 --env 在注册时传递它们,无需将其嵌入命令中:

claude mcp add linear -- npx -y @linear/mcp-server \
  --env LINEAR_API_KEY=your_key_here

这些值存储在 Claude Code 的配置中,并在服务器启动时注入到进程里。

作用域:本地、项目和用户

默认情况下,claude mcp add本地 作用域注册服务器——只有当 Claude Code 从当前目录启动时,该服务器才处于活动状态。三种作用域选项提供了不同的共享模型:

作用域 活动范围 配置文件 何时使用
local(默认) 仅当前目录 ~/.claude.json 单个项目的个人开发服务器
project 此仓库内的任何会话 项目根目录下的 .mcp.json 团队工具——与代码一起提交
user 每个 Claude Code 会话 用户作用域下的 ~/.claude.json 你始终希望可用的全局工具

添加 --scope project 可将服务器定义与你的仓库一起提交:

claude mcp add sqlite --scope project -- uvx mcp-server-sqlite --db-path ./dev.db

这会在项目根目录下创建一个包含服务器定义的 .mcp.json 文件。在同一仓库中运行 Claude Code 的团队成员会自动获得相同的工具——除安装必备先决条件外,无需每个开发者单独设置。

对于适用于所有场景的用户级工具:

claude mcp add playwright --scope user -- npx -y @playwright/mcp@latest

流行的 MCP 插件及其功能

自 Anthropic 发布该协议以来,MCP 生态系统已经大幅增长。以下是一些具有实际用途的类别:

开发工具

服务器 功能
@playwright/mcp 浏览器自动化——导航、点击、提取、截图
@modelcontextprotocol/server-git 从本地仓库读取提交、差异、分支、代码溯源
@modelcontextprotocol/server-filesystem 有作用域的文件系统访问——在定义的路径中读写文件
mcp-server-sqlite 查询和检查 SQLite 数据库

服务和 API

服务器 功能
@linear/mcp-server 创建、读取和更新 Linear 问题
@sentry/mcp-server 查询 Sentry 错误和追踪
@modelcontextprotocol/server-github GitHub 仓库、问题、PR 和代码搜索
@notionhq/notion-mcp-server 读取和写入 Notion 页面和数据库

AI 和代码执行

服务器 功能
Novita Sandbox MCP 服务器 在云沙箱中隔离执行 Python/Node
@modelcontextprotocol/server-memory 跨会话的持久化键值内存

这些可以通过 claude mcp add 命令安装,使用 npx 安装基于 npm 的包,或使用 uvx/pip 安装 Python 包。

Claude 在运行时如何路由工具调用

Claude 不会随机或穷举地调用工具。它会根据工具的描述,推断每个任务步骤中哪个工具(如果有)是合适的。

路由逻辑的高级概览:

  1. 在会话启动时,Claude 查询所有已注册的服务器并构建工具目录
  2. 对于每个用户消息或任务步骤,Claude 评估是否有任何工具描述与需求匹配
  3. 如果找到匹配项,Claude 会根据工具的 JSON Schema 构建带有适当参数的调用
  4. Claude Code 分派调用,等待结果,并在下一步骤之前将其整合

一个后果是:工具描述至关重要。像 "useful tool" 这样模糊的描述会导致该工具永远不会被调用。而准确描述工具功能、何时调用它以及输入输出格式的描述,则能带来准确可靠的使用。

如果你构建了自己的 MCP 服务器,但工具虽然已注册却从未被调用,问题几乎总是出在描述上——而不是实现上。

Claude 还可以在单次交互中链式调用多个工具:读取文件以理解上下文、搜索依赖项、运行测试、检查输出并提出修复建议——每一步都使用来自不同服务器的不同工具。

在沙箱中运行插件执行

当插件执行代码时——Python 脚本、Shell 命令、浏览器自动化——在本地机器上运行会带来风险。一个具有文件系统访问权限或进程生成能力的工具,如果行为不当或收到恶意提示,其攻击面会很大。

Novita Agent Sandbox 通过提供隔离的云环境来解决这个问题,用于工具执行。你不必在本地运行 MCP 服务器,而是将其部署在沙箱实例中。沙箱拥有自己的文件系统、网络范围和资源限制。工具执行在该边界内进行,不会触及宿主机。

从 Claude 的角度来看,集成是完全相同的——工具列表看起来一样,调用方式也相同。区别完全在于执行的位置。

用于 MCP 工具执行的 Novita Sandbox 的主要特点:

  • 快速启动:实例平均在约 200ms 内启动,保持工具往返的低延迟
  • 按秒计费:仅为实际执行时间付费,不为空闲预留付费
  • 隔离的文件系统:每个沙箱实例都有独立的工作空间,防止跨会话泄漏
  • 可配置的网络范围:控制工具可以访问哪些外部服务

在 MCP 工具处理器内部使用 Novita Sandbox SDK:

pip install novita-sandbox
from novita_sandbox.code_interpreter import Sandbox

def execute_code(code: str, api_key: str) -> dict:
    sandbox = Sandbox.create(
        template="code-interpreter-v1",
        api_key=api_key,
        domain="sandbox.novita.ai",
        timeout=300,
    )
    result = sandbox.run_code(code, language="python")
    sandbox.kill()
    return {
        "output": result.logs,
        "error": result.error,
    }

code-interpreter-v1 模板预装了 pandas、numpy、matplotlib 和其他常用包。如需完整教程,请参阅 使用 Novita Sandbox 和 mcp-use 库构建远程代码执行 MCP 服务器

使用 Novita LLM API 进行工具使用推理

Claude Code 使用其配置的后端模型来处理工具使用推理。如果你出于成本、延迟或模型访问原因,通过其他提供商路由 Claude Code,那么工具调用的推理层也会通过该提供商进行路由。

Novita LLM APIhttps://api.novita.ai/anthropic 提供了一个兼容 Anthropic 的端点。使用三个环境变量配置一次即可:

export ANTHROPIC_BASE_URL="https://api.novita.ai/anthropic"
export ANTHROPIC_AUTH_TOKEN="your-novita-api-key"
export ANTHROPIC_MODEL="qwen/qwen3-coder-480b-a35b-instruct"
export ANTHROPIC_SMALL_FAST_MODEL="deepseek/deepseek-v4-flash"

通过此设置,Claude Code 的 MCP 工具调用将继续像以前一样工作。路由影响的是哪个模型进行推理——而不是工具分派机制,后者仍保持在 Claude Code 层。

适用于工具密集型会话的模型选择:

  • Qwen3-Coder 480B——非常适合需要 Claude 读取大量文件、规划多步序列并在每个阶段调用工具的长期任务。其长上下文处理能力使得在复杂会话中,早期工具的结果始终可访问。
  • MiniMax M2.7——针对代理型工具使用准确性进行了优化,专门设计用于减少错误的工具调用,并处理每一步都基于前一步结果的多轮序列。
  • DeepSeek V4 Flash——快速且便宜,是 ANTHROPIC_SMALL_FAST_MODEL 的不错选择。Claude Code 使用此槽位进行会话摘要和上下文压缩,这两者都不需要深度推理。

如果你正在构建自己的 MCP 宿主(而不是使用 Claude Code),Novita LLM API 还在 https://api.novita.ai/v3/openai 提供了一个兼容 OpenAI 的端点,用于支持函数调用的模型:

import openai

client = openai.OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    api_key="your-novita-api-key",
)

response = client.chat.completions.create(
    model="meta-llama/llama-3.3-70b-instruct",
    messages=[{"role": "user", "content": "List available tools and run a quick check"}],
    tools=[
        {
            "type": "function",
            "function": {
                "name": "list_files",
                "description": "List files in the current working directory.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "path": {
                            "type": "string",
                            "description": "Directory path to list."
                        }
                    },
                    "required": ["path"]
                }
            }
        }
    ],
    tool_choice="auto",
)

这对于以下场景特别有用:你希望让一个开放权重模型在自定义 MCP 管道中充当推理层,并且与封闭模型相比,具有不同的成本或延迟特性。

开放权重模型作为替代后端

一个常被低估的选项是,完全用有能力的开放权重替代模型来替换默认的 Claude 模型,用于 MCP 密集型的 Claude Code 工作流。像 Qwen3-Coder、MiniMax M2.7 和 DeepSeek V3.1 这样的模型,经过专门训练,具有出色的工具调用准确性和多步推理能力——在某些基准测试中,它们在函数调用任务上可以匹敌甚至超越闭源模型,而成本却低得多。

对于运行高容量代理会话的团队——CI 管道、自动化代码审查、批量重构——成本差异至关重要。Novita AI 通过相同的 Anthropic 兼容端点提供对这些模型的访问,因此切换只是一个配置变更,而不是代码重写。

编写有效的工具描述

如果你正在为 Claude Code 构建自己的 MCP 服务器,工具描述的质量决定了 Claude 是否能有效使用你的工具。这是你为自定义服务器能做的最具杠杆效应的事情。

一个好的工具描述需要回答三个问题:

  1. 该工具做什么?——具体而非抽象
  2. 何时应该调用它?——场景或触发条件
  3. 输入和输出是什么?——足以让 Claude 构建正确的参数

比较以下两个对同一个 search_codebase 工具的描述:

"Searches the codebase."

有效"Searches source files in the current repository for a symbol, string, or regex pattern. Call this when you need to find where a function is defined, locate all usages of a variable, or identify which files reference a particular module. Returns a list of file paths with matching lines and line numbers."

第二个描述告诉了 Claude 何时调用该工具(而不仅仅是它做什么),这能产生更准确和及时的调用。

一些额外的实践建议:

  • 明确标记变异工具:如果工具会写入数据库或部署代码,请明确说明。Claude 在没有明确证据表明该操作是预期的情况下,会谨慎调用它。
  • 解释返回结构:如果工具返回一个具有特定结构的 JSON 对象,请描述关键字段。Claude 会利用这些信息为下一步提取正确的信息。
  • 保持作用域狭窄:一个名为 "run_anything" 且接受任意 Shell 命令的工具,比名为 "run_tests" 且仅运行项目测试套件的工具更难让 Claude 推理。具有精确描述的狭窄工具比具有模糊描述的宽泛工具效果更好。

常见插件问题排查

运行 claude mcp add 后工具未出现

在一个新的终端中检查服务器命令是否运行无误。Claude Code 可能会抑制子进程的 stderr 输出。运行 claude mcp list——如果服务器显示超时或错误,则问题是命令本身失败,而非配置问题。

工具已注册但从未被调用

工具描述过于模糊。重写它们,明确说明 Claude 应在何时调用该工具以及参数的含义。

npx 在首次运行时挂起

添加 -y 标志以自动接受安装提示:npx -y @package/mcp-server。如果没有该标志,npx 会等待用户确认,Claude Code 会看到连接超时。

服务器在新项目中未激活

你是在 local 作用域注册的,但从不同的目录启动了 Claude Code。使用 --scope user 重新添加以获得全局服务器,或者从正确的项目根目录运行 add 命令。

工具调用因架构验证错误而失败

Claude 根据工具的 JSON Schema 构建参数。如果必填字段在架构中缺失或类型不匹配,服务器将拒绝调用。检查你的 inputSchema 定义——不完整的架构会导致不完整的调用参数。

找不到 claude mcp add 命令

安装 Claude Code:npm install -g @anthropic-ai/claude-code,然后使用 claude --version 验证。

常见问题解答

Claude Code 有插件市场吗?

没有传统意义上的插件市场。Claude Code 使用的是 MCP 协议,而非平台特定的市场。社区构建的 MCP 服务器发布在 npm、PyPI 和 GitHub 上。一些聚合网站维护着精选列表,但不存在官方的 Claude Code 市场可供浏览。

Claude Code 插件文档在哪里?

Anthropic 关于 Claude Code 的 MCP 集成的官方文档位于 docs.anthropic.com/claude-code。MCP 规范本身位于 modelcontextprotocol.io。这是两个参考权威协议和实现细节的来源。

MCP 服务器与 Claude Code 插件有何不同?

在 Claude Code 的语境中,这两个术语指的是同一回事。当开发者说"Claude Code 插件"时,他们通常指的是连接到 Claude Code 的 MCP 服务器。"插件"这个词并非 Anthropic 的官方术语,但概念直接对应:安装一次,在每次会话中使用,通过新工具扩展 Claude 的能力。

我可以在 Claude Desktop 和 Claude Code 中使用相同的 MCP 服务器吗?

可以。服务器是协议无关的——它不关心哪个宿主连接。对于 stdio 服务器,Claude Code(通过 claude mcp add)和 Claude Desktop(通过 JSON 配置文件)都可以启动相同的命令。对于 HTTP 服务器,任何能访问该 URL 的宿主都可以连接。

我可以注册多少个 MCP 服务器?

MCP 协议和 Claude Code 没有硬性限制。实际上,拥有许多包含数百个工具的服务器可能会减慢会话启动速度(工具发现是在启动时进行的),并给 Claude 的工具选择增加噪音。保持活跃集合集中在特定会话实际需要的内容上。

添加 MCP 插件是否存在安全风险?

是的。MCP 服务器以进程形式运行,拥有完成其工作所需的任何权限。具有文件系统访问权限的服务器可以读取或写入文件;具有 Shell 执行权限的服务器可以运行任意命令。只添加你信任的服务器。对于生产环境或共享环境,考虑在隔离环境中运行服务器——请参见上面的沙箱部分。

开放权重模型是否支持 MCP 工具调用?

是的。在 Anthropic 消息 API 格式中实现函数调用的模型,无论提供商如何,都可以与 Claude Code 的 MCP 层配合使用。Qwen3-Coder、MiniMax M2.7 和 DeepSeek V3.1 都支持结构化工具调用。工具分派由 Claude Code 处理;模型只需要以预期格式返回有效的工具调用指令即可。


推荐阅读