dxt
扫码查看

一键安装本地MCP服务端的桌面扩展工具

dxt

综合介绍

dxt (Desktop Extensions) 是由Anthropic公司开发并开源的一个项目。它的核心目标是简化本地MCP(Model-Context Protocol)服务器的安装和分发流程。你可以把它想象成类似Chrome浏览器的.crx扩展文件或VS Code的.vsix插件文件,但它是专门为本地AI工具服务的。一个.dxt文件本质上是一个zip压缩包,里面包含了运行一个本地AI工具所需的所有文件(比如一个Python脚本或一个可执行文件)以及一个名为manifest.json的配置文件。这个配置文件详细描述了工具的功能和运行方式。通过这种方式,像Claude桌面版这样的应用程序就可以实现一键安装和管理这些本地工具,为用户提供无缝的集成体验,同时也为开发者创建和分享自己的AI工具提供了极大的便利。

功能列表

  • 统一的打包规范: 提供了一套标准的扩展打包格式(.dxt),将本地服务器和配置文件打包成单个文件,方便分发和安装。
  • 命令行工具 (CLI): 附带一个名为dxt的命令行工具,可以帮助开发者快速初始化配置文件manifest.json并打包生成.dxt文件。
  • 跨平台和语言支持: 扩展的服务器部分可以是Node.js、Python应用,甚至是编译好的二进制可执行文件,具有很高的灵活性。
  • 简化的用户安装: 终端用户只需点击或打开.dxt文件,支持该规范的桌面应用(如Claude)即可自动完成安装、配置和更新。
  • 丰富的配置选项manifest.json文件支持多种配置,包括定义服务器的启动方式、环境变量、工具能力以及UI元素(如图标和名称)等。
  • 开源生态: 项目开源了规范、工具链和核心实现代码,旨在鼓励更多AI桌面应用和开发者加入,共同构建一个开放的本地AI工具生态系统。

使用帮助

dxt的核心是让开发者可以轻松打包自己的本地工具,并让用户可以轻松安装。下面是详细的使用流程和说明。

1. 安装DXT命令行工具

为了创建自己的dxt扩展,你首先需要安装官方提供的命令行工具。这个工具基于Node.js,你可以通过npm(Node.js包管理器)在你的终端或命令行工具中全局安装它:

npm install -g @anthropic-ai/dxt

安装成功后,你就可以在系统的任何路径下使用dxt命令。

2. 创建一个扩展项目

假设你已经有了一个本地工具,比如一个用Python编写的、可以操作本地文件的脚本。现在我们把它打包成一个dxt扩展。

项目文件结构示例 (Python):你的项目文件夹看起来可能像这样:

my_python_tool/
├── server/
│   ├── main.py        # 你的Python服务主入口
│   └── utils.py       # 其他辅助模块
├── requirements.txt   # Python依赖列表
└── icon.png           # (可选) 扩展的图标

3. 初始化 manifest.json

manifest.json是dxt扩展的灵魂,它告诉宿主应用(如Claude桌面版)这个扩展叫什么、如何运行它、它有什么功能等等。

进入你的项目根目录(my_python_tool/),然后运行初始化命令:

dxt init

这个命令会以交互式问答的方式引导你填写manifest.json所需的字段。它会问你扩展的ID、名称、作者、描述以及服务器的入口点(比如server/main.py)等信息。完成之后,你的项目根目录下就会生成一个manifest.json文件。

manifest.json 文件详解:这是一个最基本的manifest.json文件示例:

{
"id": "com.example.my-python-tool",
"name": "我的Python工具",
"description": "一个可以读写本地文件的示例工具。",
"author": "你的名字",
"version": "0.1.0",
"server": {
"type": "python",
"entry_point": "server/main.py"
},
"mcp_config": {
"tools": [
{
"id": "read_file",
"description": "读取指定路径的文件内容",
"parameters": {
"type": "object",
"properties": {
"path": { "type": "string", "description": "文件的绝对路径" }
},
"required": ["path"]
}
}
]
}
}
  • id: 扩展的唯一标识符,通常采用反向域名格式。
  • name: 显示在应用中的扩展名称。
  • server: 定义了服务器的类型和入口。type可以是pythonnodebinaryentry_point是启动脚本的相对路径。
  • mcp_config: 定义了工具的具体能力,遵循Model-Context Protocol协议。这里定义了一个名为read_file的工具。

4. 打包扩展

当你准备好所有文件(服务器代码、依赖项、manifest.json)后,就可以使用pack命令将它们打包成一个.dxt文件了。在项目根目录下运行:

dxt pack

该命令会读取manifest.json,并将所有必要的文件压缩成一个名为{id}-{version}.dxt的文件,例如com.example.my-python-tool-0.1.0.dxt

依赖项打包注意事项:

  • Python: 你需要将requirements.txt中列出的所有依赖包一并打包。通常的做法是使用pip install -r requirements.txt -t server/lib命令将依赖安装到特定目录(如server/lib),然后将整个lib文件夹一起打包。
  • Node.js: 你需要在打包前运行npm install --production,这会生成一个node_modules文件夹。你需要将这个文件夹完整地包含在你的扩展包中。

5. 安装和使用扩展

开发者完成打包后,就可以将这个.dxt文件分发给用户了。用户拿到文件后,可以直接用支持dxt规范的桌面应用(如Claude for macOS/Windows)打开。应用会展示一个安装对话框,用户确认后,应用会自动将扩展解压到正确的目录并根据manifest.json的配置来运行它。安装完成后,用户就可以在与AI的对话中调用你提供的工具了。

应用场景

  1. 本地文件系统操作可以创建一个扩展,让AI助手安全地读取、写入或修改你电脑上的本地文件。例如,让AI直接读取一个report.docx文档的内容并进行总结,或者将生成的代码直接保存为script.py文件到指定目录。
  2. 自动化工作流开发者可以编写一个连接内部系统(如Jira、Notion)的工具,并打包成dxt扩展。这样,团队成员就可以通过与AI对话来完成特定任务,例如“帮我在Jira上创建一个关于登录页面BUG的工单”,AI会调用本地工具完成API请求。
  3. 专业领域的本地工具集成数据科学家可以将其常用的Python数据分析脚本(如使用pandas、matplotlib)打包,让AI能够调用这些脚本处理本地的CSV文件并生成图表。这样就无需将敏感数据上传到云端,保证了数据安全。
  4. 软件或服务的快速原型开发开发者在开发一个新的AI功能时,可以先用dxt快速构建一个本地原型进行测试和迭代。因为dxt简化了部署和分发,所以可以非常方便地与测试用户分享和收集反馈,而无需搭建复杂的云服务。

QA

  1. 什么是MCP (Model-Context Protocol)?MCP是一个由Anthropic提出的协议,用于规范AI模型与外部工具(Tools)之间的通信。它定义了工具应该如何声明自己的能力(比如函数名、参数),以及模型如何调用这些工具并获得返回结果。dxt正是基于这个协议来让Claude等模型与本地安装的扩展进行交互。
  2. 我可以用哪些编程语言来开发dxt扩展?你可以使用多种语言。官方示例明确支持Node.js、Python和预编译的二进制可执行文件(如用Go、Rust、C++编译的程序)。理论上,任何能够通过标准输入/输出(stdio)进行通信的程序都可以被封装成dxt扩展。
  3. dxt扩展安全吗?安装它会不会有风险?dxt扩展是在你的本地计算机上运行代码,因此它拥有与普通本地应用相同的权限。你应该只安装来自可信任来源的扩展。支持dxt的应用(如Claude)在安装时会明确提示用户,并提供管理和卸载扩展的功能。Anthropic也致力于构建一个安全的生态系统,但最终用户仍需保持警惕。
  4. 我开发的扩展是否只能在Claude桌面版上使用?不是。虽然dxt是由Anthropic发起并首先应用在Claude的桌面产品中,但它的整个规范和工具链都是开源的。Anthropic鼓励其他AI桌面应用也来支持dxt规范,目标是创建一个通用的、跨应用的本地工具生态。如果你是一个AI应用开发者,也可以在你的应用中集成对dxt的支持。
微信微博Email复制链接