扩展阅读

Claude 桌面扩展:Claude 桌面一键安装 MCP 服务器

Anthropic·2026/7/21·7 阅读

Claude 桌面扩展:Claude 桌面一键安装 MCP 服务器 \ Anthropic

来源: https://www.anthropic.com/engineering/desktop-extensions 抓取时间: 2026-07-21 16:25:33


  • 文件扩展名更新 2025年9月11日 Claude 桌面扩展现在使用 .mcpb(MCP 包)文件扩展名,而不是 .dxt。现有的 .dxt 扩展将继续工作,但我们建议开发者未来使用 .mcpb 进行新扩展。所有功能保持不变——这纯粹是命名约定更新。

当我们去年发布模型上下文协议(MCP)时,我们看到开发者构建了令人惊叹的本地服务器,让 Claude 可以访问从文件系统到数据库的所有内容。但我们不断听到相同的反馈:安装太复杂。用户需要开发工具,必须手动编辑配置文件,并且经常陷入依赖问题。

今天,我们推出了桌面扩展——一种新的打包格式,使安装 MCP 服务器就像点击按钮一样简单。

解决 MCP 安装问题

本地 MCP 服务器为 Claude 桌面用户解锁了强大的功能。它们可以与本地应用程序交互、访问私有数据,并与开发工具集成——所有这些都保持数据在用户的机器上。然而,当前的安装过程造成了重大障碍:

  • 需要开发工具:用户需要安装 Node.js、Python 或其他运行时
  • 手动配置:每个服务器都需要编辑 JSON 配置文件
  • 依赖管理:用户必须解决包冲突和版本不匹配
  • 没有发现机制:找到有用的 MCP 服务器需要搜索 GitHub
  • 更新复杂:保持服务器最新意味着手动重新安装

这些摩擦点意味着,尽管 MCP 服务器功能强大,但对于非技术用户来说仍然基本上无法访问。

桌面扩展介绍

桌面扩展(.mcpb 文件)通过将整个 MCP 服务器——包括所有依赖项——打包成单个可安装包来解决这些问题。以下是用户的变化:

之前:

# 首先安装 Node.js
npm install -g @example/mcp-server
# 手动编辑 ~/.claude/claude_desktop_config.json
# 重启 Claude Desktop
# 希望它能工作

之后:

  1. 下载 .mcpb 文件
  2. 双击用 Claude Desktop 打开
  3. 点击"安装"

就是这样。没有终端,没有配置文件,没有依赖冲突。

架构概述

桌面扩展是一个 ZIP 归档文件,包含本地 MCP 服务器以及 manifest.json,该文件描述了 Claude Desktop 和其他支持桌面扩展的应用程序需要知道的所有内容。

extension.mcpb (ZIP 归档)
├── manifest.json         # 扩展元数据和配置
├── server/               # MCP 服务器实现
│   └── [服务器文件]
├── dependencies/         # 所有需要的包/库
└── icon.png             # 可选:扩展图标

# 示例:Node.js 扩展
extension.mcpb
├── manifest.json         # 必需:扩展元数据和配置
├── server/               # 服务器文件
│   └── index.js          # 主入口点
├── node_modules/         # 打包的依赖项
├── package.json          # 可选:NPM 包定义
└── icon.png              # 可选:扩展图标

# 示例:Python 扩展
extension.mcpb (ZIP 文件)
├── manifest.json         # 必需:扩展元数据和配置
├── server/               # 服务器文件
│   ├── main.py           # 主入口点
│   └── utils.py          # 额外模块
├── lib/                  # 打包的 Python 包
├── requirements.txt      # 可选:Python 依赖列表
└── icon.png              # 可选:扩展图标

桌面扩展中唯一需要的文件是 manifest.json。Claude Desktop 处理所有复杂性:

  • 内置运行时:我们随 Claude Desktop 一起提供 Node.js,消除了外部依赖
  • 自动更新:新版本可用时扩展会自动更新
  • 安全密钥:敏感配置(如 API 密钥)存储在操作系统密钥链中

清单包含人类可读的信息(如名称、描述或作者)、功能声明(工具、提示)、用户配置和运行时要求。大多数字段都是可选的,因此最小版本非常短,尽管实际上,我们期望所有三种支持的扩展类型(Node.js、Python 和经典二进制/可执行文件)都包含文件:

{
  "mcpb_version": "0.1",                    // 此清单遵循的 MCPB 规范版本
  "name": "my-extension",                   // 机器可读名称(用于 CLI、API)
  "version": "1.0.0",                       // 扩展的语义版本
  "description": "A simple MCP extension",  // 扩展功能的简要描述
  "author": {                               // 作者信息(必需)
    "name": "Extension Author"              // 作者姓名(必填字段)
  },
  "server": {                               // 服务器配置(必需)
    "type": "node",                         // 服务器类型:"node"、"python" 或 "binary"
    "entry_point": "server/index.js",       // 主服务器文件的路径
    "mcp_config": {                         // MCP 服务器配置
      "command": "node",                    // 运行服务器的命令
      "args": [                             // 传递给命令的参数
        "${__dirname}/server/index.js"      // ${__dirname} 会被替换为扩展的目录
      ]
    }
  }
}

清单规范中 有许多便利选项,旨在使本地 MCP 服务器的安装和配置更容易。服务器配置对象可以定义为既能容纳使用模板文字的用户定义配置,也能容纳特定于平台的覆盖。扩展开发者可以详细定义他们想要从用户收集什么样的配置。

让我们看一个具体的例子,说明清单如何帮助配置。在下面的清单中,开发者声明用户需要提供 api_key。Claude 在用户提供该值之前不会启用扩展,自动将其保存在操作系统的秘密保险库中,并在启动服务器时透明地将 ${user_config.api_key} 替换为用户提供的值。同样,${__dirname} 将被替换为扩展解压目录的完整路径。

{
  "mcpb_version": "0.1",
  "name": "my-extension",
  "version": "1.0.0",
  "description": "A simple MCP extension",
  "author": {
    "name": "Extension Author"
  },
  "server": {
    "type": "node",
    "entry_point": "server/index.js",
    "mcp_config": {
      "command": "node",
      "args": ["${__dirname}/server/index.js"],
      "env": {
        "API_KEY": "${user_config.api_key}"
      }
    }
  },
  "user_config": {
    "api_key": {
      "type": "string",
      "title": "API Key",
      "description": "Your API key for authentication",
      "sensitive": true,
      "required": true
    }
  }
}

带有大多数字段的完整 manifest.json 可能如下所示:

{
  "mcpb_version": "0.1",
  "name": "My MCP Extension",
  "display_name": "My Awesome MCP Extension",
  "version": "1.0.0",
  "description": "A brief description of what this extension does",
  "long_description": "A detailed description that can include multiple paragraphs explaining the extension's functionality, use cases, and features. It supports basic markdown.",
  "author": {
    "name": "Your Name",
    "email": "yourname@example.com",
    "url": "https://your-website.com"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/your-username/my-mcp-extension"
  },
  "homepage": "https://example.com/my-extension",
  "documentation": "https://docs.example.com/my-extension",
  "support": "https://github.com/your-username/my-extension/issues",
  "icon": "icon.png",
  "screenshots": [
    "assets/screenshots/screenshot1.png",
    "assets/screenshots/screenshot2.png"
  ],
  "server": {
    "type": "node",
    "entry_point": "server/index.js",
    "mcp_config": {
      "command": "node",
      "args": ["${__dirname}/server/index.js"],
      "env": {
        "ALLOWED_DIRECTORIES": "${user_config.allowed_directories}"
      }
    }
  },
  "tools": [
    {
      "name": "search_files",
      "description": "Search for files in a directory"
    }
  ],
  "prompts": [
    {
      "name": "poetry",
      "description": "Have the LLM write poetry",
      "arguments": ["topic"],
      "text": "Write a creative poem about the following topic: ${arguments.topic}"
    }
  ],
  "tools_generated": true,
  "keywords": ["API", "automation", "productivity"],
  "license": "MIT",
  "compatibility": {
    "claude_desktop": ">=1.0.0",
    "platforms": ["darwin", "win32", "linux"],
    "runtimes": {
      "node": ">=16.0.0"
    }
  },
  "user_config": {
    "allowed_directories": {
      "type": "directory",
      "title": "Allowed Directories",
      "description": "Directories the server can access",
      "multiple": true,
      "required": true,
      "default": ["${HOME}/Desktop"]
    },
    "api_key": {
      "type": "string",
      "title": "API Key",
      "description": "Your API key for authentication",
      "sensitive": true,
      "required": false
    },
    "max_file_size": {
      "type": "number",
      "title": "Maximum File Size (MB)",
      "description": "Maximum file size to process",
      "default": 10,
      "min": 1,
      "max": 100
    }
  }
}

要查看扩展和清单,请参考 MCPB 仓库中的示例

manifest.json 中所有必需和可选字段的完整规范可以在我们的 开源工具链 中找到。

构建您的第一个扩展

让我们逐步介绍将现有 MCP 服务器打包为桌面扩展的过程。我们将使用一个简单的文件系统服务器作为示例。

步骤 1:创建清单

首先,为您的服务器初始化清单:

npx @anthropic-ai/mcpb init

这个交互式工具会询问您的服务器信息并生成完整的 manifest.json。如果您想快速生成最基本的 manifest.json,可以使用 --yes 参数运行命令。

步骤 2:处理用户配置

如果您的服务器需要用户输入(如 API 密钥或允许的目录),在清单中声明:

"user_config": {
  "allowed_directories": {
    "type": "directory",
    "title": "Allowed Directories",
    "description": "Directories the server can access",
    "multiple": true,
    "required": true,
    "default": ["${HOME}/Documents"]
  }
}

Claude Desktop 将会:

  • 显示用户友好的配置 UI
  • 在启用扩展之前验证输入
  • 安全存储敏感值
  • 根据开发者配置,将配置作为参数或环境变量传递给您的服务器

在下面的示例中,我们将用户配置作为环境变量传递,但它也可以是参数。

"server": {
   "type": "node",
   "entry_point": "server/index.js",
   "mcp_config": {
   "command": "node",
   "args": ["${__dirname}/server/index.js"],
   "env": {
      "ALLOWED_DIRECTORIES": "${user_config.allowed_directories}"
   }
   }
}

步骤 3:打包扩展

将所有内容打包成 .mcpb 文件:

npx @anthropic-ai/mcpb pack

此命令:

  1. 验证您的清单
  2. 生成 .mcpb 归档

步骤 4:本地测试

将您的 .mcpb 文件拖入 Claude Desktop 的设置窗口。您会看到:

  • 关于您的扩展的人类可读信息
  • 所需的权限和配置
  • 一个简单的"安装"按钮

高级功能

跨平台支持

扩展可以适应不同的操作系统:

"server": {
  "type": "node",
  "entry_point": "server/index.js",
  "mcp_config": {
    "command": "node",
    "args": ["${__dirname}/server/index.js"],
    "platforms": {
      "win32": {
        "command": "node.exe",
        "env": {
          "TEMP_DIR": "${TEMP}"
        }
      },
      "darwin": {
        "env": {
          "TEMP_DIR": "${TMPDIR}"
        }
      }
    }
  }
}

动态配置

使用模板文字获取运行时值:

  • ${__dirname}:扩展的安装目录
  • ${user_config.key}:用户提供的配置
  • ${HOME}, ${TEMP}:系统环境变量

功能声明

帮助用户提前了解功能:

"tools": [
  {
    "name": "read_file",
    "description": "Read contents of a file"
  }
],
"prompts": [
  {
    "name": "code_review",
    "description": "Review code for best practices",
    "arguments": ["file_path"]
  }
]

扩展目录

我们正在推出一个精选的扩展目录,内置于 Claude Desktop 中。用户可以浏览、搜索和一键安装——无需搜索 GitHub 或审查代码。

虽然我们期望桌面扩展规范以及 Claude for macOS 和 Windows 中的实现在未来会不断发展,但我们期待看到扩展可以通过多种方式创造性地扩展 Claude 的功能。

提交您的扩展:

  1. 确保它遵循提交表单中的指南
  2. 在 Windows 和 macOS 上测试
  3. 提交您的扩展
  4. 我们的团队审查质量和安全性

构建开放生态系统

我们致力于围绕 MCP 服务器的开放生态系统,并相信其被多个应用程序和服务普遍采用的能力使社区受益。为了兑现这一承诺,我们正在开源桌面扩展规范、工具链,以及 Claude for macOS 和 Windows 用于实现其自己的桌面扩展支持的模式和关键功能。我们希望 MCPB 格式不仅使本地 MCP 服务器对于 Claude 更加可移植,也适用于其他 AI 桌面应用程序。

我们正在开源:

  • 完整的 MCPB 规范
  • 打包和验证工具
  • 参考实现代码
  • TypeScript 类型和模式

这意味着:

  • 对于 MCP 服务器开发者:打包一次,在支持 MCPB 的任何地方运行
  • 对于应用开发者:无需从零开始即可添加扩展支持
  • 对于用户:所有支持 MCP 的应用程序都有一致的体验

该规范和工具链特意版本化为 0.1,因为我们期待与更大的社区合作,发展和改变这种格式。我们期待收到您的来信。

安全性和企业考虑事项

我们理解扩展引入了新的安全考虑因素,特别是对于企业。我们在桌面扩展的预览版本中内置了几个保障措施:

对于用户

  • 敏感数据保留在操作系统密钥链中
  • 自动更新
  • 能够审计已安装的扩展

对于企业

  • 组策略(Windows)和 MDM(macOS)支持
  • 预安装批准扩展的能力
  • 阻止特定扩展或发布者的黑名单
  • 完全禁用扩展目录
  • 部署私有扩展目录

有关如何在组织内管理扩展的更多信息,请参阅我们的 文档

开始使用

准备好构建自己的扩展了吗?以下是开始方法:

对于 MCP 服务器开发者:查看我们的 开发者文档——或者直接在本地 MCP 服务器目录中运行以下命令开始:

npm install -g @anthropic-ai/mcpb
mcpb init
mcpb pack

对于 Claude Desktop 用户:更新到最新版本,并在设置中查找扩展部分

对于企业:查看我们的企业文档以了解部署选项

使用 Claude Code 构建

在 Anthropic 内部,我们发现 Claude 非常擅长在最少干预下构建扩展。如果您也想使用 Claude Code,我们建议您简要解释您希望扩展做什么,然后将以下上下文添加到提示中:

我希望将其构建为桌面扩展,缩写为"MCPB"。请遵循以下步骤:

1. **彻底阅读规范:**
   - https://github.com/anthropics/mcpb/blob/main/README.md - MCPB 架构概述、功能和集成模式
   - https://github.com/anthropics/mcpb/blob/main/MANIFEST.md - 完整的扩展清单结构和字段定义
   - https://github.com/anthropics/mcpb/tree/main/examples - 参考实现,包括"Hello World"示例

2. **创建正确的扩展结构:**
   - 遵循 MANIFEST.md 规范生成有效的 manifest.json
   - 使用 @modelcontextprotocol/sdk 实现 MCP 服务器,并具有正确的工具定义
   - 包含适当的错误处理和超时管理

3. **遵循最佳开发实践:**
   - 通过 stdio 传输实现正确的 MCP 协议通信
   - 构建具有清晰模式、验证和一致 JSON 响应的工具
   - 利用此扩展将在本地运行的事实
   - 添加适当的日志记录和调试功能
   - 包含适当的文档和设置说明

4. **测试考虑:**
   - 验证所有工具调用都返回正确结构化的响应
   - 验证清单正确加载,主机集成正常工作

生成完整的、可立即测试的生产就绪代码。专注于防御性编程、清晰的错误消息,并遵循准确的 MCPB 规范,以确保与生态系统的兼容性。

结论

桌面扩展代表了用户与本地 AI 工具交互方式的根本性转变。通过消除安装摩擦,我们正在使强大的 MCP 服务器对每个人都可访问——而不仅仅是开发者。

在内部,我们正在使用桌面扩展来共享高度实验性的 MCP 服务器——有些有趣,有些有用。一个团队进行了实验,看看我们的模型在直接连接到 GameBoy 时能走多远,类似于我们的 "Claude 玩 Pokémon" 研究。我们使用桌面扩展打包了一个单独的扩展,它打开了流行的 PyBoy GameBoy 模拟器并让 Claude 控制。我们相信存在无数的机会,可以将模型的功能连接到用户本地机器上已经拥有的工具、数据和应用程序。

显示带有超级马里奥陆地开始屏幕的 PyBoy MCP 的桌面

我们迫不及待地想看到您构建的内容。带来我们数千个 MCP 服务器的同样创造力,现在只需点击一下即可到达数百万用户。准备好分享您的 MCP 服务器了吗?提交您的扩展进行审查

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.