跳转到内容

MCP

MCP(Model Context Protocol)让 Dline 通过 MCP 服务器使用外部工具、资源和提示词。服务器可以是本机进程(STDIO),也可以是远程端点(Streamable HTTP 或 SSE)。

点击 Dline 面板标题栏中的 MCP Servers 按钮。视图包含三个标签:

  • Marketplace:浏览在线目录中的服务器。点击 Install 后,Dline 会启动一个任务,协助你完成安装和配置。
  • Remote Servers:添加远程服务器。
  • Configure:管理已配置的服务器,或编辑配置文件。

也可以点击输入框下方工具栏中的服务器图标(悬停提示为 Manage MCP Servers),在弹出的 MCP Servers 列表中用开关快速启用或停用服务器;点击列表右上角的齿轮图标会直接打开 Configure 标签。

输入框工具栏弹出的 MCP Servers 列表:服务器 release-tools 带有开关,右上角为齿轮图标输入框工具栏弹出的 MCP Servers 列表:服务器 release-tools 带有开关,右上角为齿轮图标

在 Remote Servers 标签中:

  1. 在 Server Name 中填写唯一的名称。
  2. 在 Server URL 中填写完整的 URL。
  3. 在 Transport Type 中选择 Streamable HTTP(默认)或 SSE (Legacy)。
  4. 点击 Add Server。

这个表单不能填写请求头。如需认证头,请改为编辑配置文件。

在 Configure 标签中点击 Configure MCP Servers,Dline 会打开 <documents-root>/settings/mcp_settings.json。<documents-root> 默认是操作系统“文档”目录下的 dline 文件夹;设置 DLINE_DOCS_DIR 后,以该变量的值作为根目录。

{
"mcpServers": {
"local-server": {
"command": "node",
"args": ["/path/to/server.js"],
"env": {
"API_KEY": "${env:MY_API_KEY}"
},
"timeout": 60,
"disabled": false
}
}
}
{
"mcpServers": {
"remote-server": {
"type": "streamableHttp",
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer ${env:MCP_TOKEN}"
}
}
}
}
字段说明
command、args、env、cwdSTDIO 服务器的启动命令、参数、环境变量和工作目录
url、headers远程服务器的地址和请求头
typestdio、sse 或 streamableHttp。只有 url 而没有 type 时按 sse 处理,建议显式填写
timeout请求超时,单位为秒,默认 60,最小 1
disabled为 true 时禁用该服务器
autoApprove允许自动批准的工具名列表

${env:VAR} 在每次连接服务器时解析:先使用为该服务器保存的值,再使用 VS Code 进程的环境变量。两者都没有时,Dline 会弹出掩码输入框请你填写,并只为该服务器保存这个值;保存位置是 Dline 数据目录下仅限当前用户访问的 secret 存储,而不是配置文件。只有在当前窗口打开过 Dline 侧边栏或 Dline 面板后才会弹出输入框;在此之前该服务器保持等待,其他服务器照常连接。取消或提交空值时,该服务器不会连接并显示错误,重启服务器即可再次填写。在 MCP 设置页的服务器行上点击钥匙图标(Clear Saved Variables),会清除为该服务器保存的值并立即重新连接。

项目可以在 <workspace>/.agents/mcp/ 下放置 .yaml、.yml 或 .json 描述文件,每个文件描述一个服务器,只在该工作区生效。子目录同样会被扫描。文件名不参与识别,服务器以 name 区分。

<workspace>/
└── .agents/
└── mcp/
├── project-db.yml
└── remote-docs.json

.agents/mcp/project-db.yml:

name: project-db
description: Query the project database
type: stdio
command: node
args: ["${workspaceFolder}/tools/db-mcp.js"]
env:
DB_URL: "${env:PROJECT_DB_URL}"
timeout: 120

.agents/mcp/remote-docs.json:

{
"name": "remote-docs",
"description": "Search the team documentation service",
"type": "streamableHttp",
"url": "https://docs.example.com/mcp",
"headers": {
"Authorization": "Bearer ${env:DOCS_MCP_TOKEN}"
}
}
  • 必须提供 name,且在同一工作区内唯一。两个文件使用同一个 name 时,按路径排序靠前的文件生效,另一个被忽略并记录警告。description 可选。其他字段与全局配置相同,但不需要外层的 mcpServers。
  • ${workspaceFolder} 会被替换为工作区根目录。stdio 类型未指定 cwd 时,默认以工作区根目录作为工作目录。
  • ${env:VAR} 在服务器连接时按与全局服务器相同的顺序解析。你填写的值只为当前工作区中的该服务器保存,不会共享给全局服务器、其他服务器或其他工作区。
  • 凭据必须通过 ${env:VAR} 提供。以下位置出现明文时,描述文件会被拒绝:字段名中以完整词段包含 token、secret、password、credential、cookie、authorization 或 api_key 的字段(例如 API_TOKEN、db-password、Authorization);同名的 URL 查询参数;写成 --token=<value> 形式的参数。凭据请通过 env 或 headers 传递,不要放在 args 中。
  • 工作区描述文件中的 autoApprove 会被忽略,不能借此自动批准工具。工作区服务器的工具默认不自动批准,你可以在 MCP 服务器管理界面为它们勾选 Auto-approve。这个选择保存在 Dline 针对当前工作区的设置中,不写入仓库;描述文件内容一旦改变就会清除,修改后的服务器需要重新批准。
  • Dline 会监听 .agents/mcp/。新增、修改或删除描述文件后无需重新加载窗口即可生效。校验失败的描述文件会被跳过,错误写入日志。

打开任务时,启用或停用服务器只对当前任务生效;未打开任务时,则保存为工作区设置。参见能力开关作用域。

在 Configure 标签中,每个服务器都可以:

  • 用开关启用或停用,工作区服务器同样提供开关。开关作用于当前工作区,状态保存在本机的 Dline 工作区状态中,不修改 mcp_settings.json 或仓库中的描述文件;
  • 点击 Restart Server 重启;连接失败时点击 Retry Connection 重试;
  • 在 Request Timeout 中选择 30 秒到 1 小时的超时(仅全局配置中的服务器);
  • 为单个工具勾选 Auto-approve,或勾选 Auto-approve all tools(工作区服务器的选择只对当前工作区生效,默认不勾选);
  • 点击 Delete Server 删除。

对于需要 OAuth 的远程服务器,连接时会显示需要认证,服务器行中会出现 Authenticate 按钮。点击后,Dline 会在外部浏览器中打开授权页面。完成授权后,浏览器会回到 Dline 在 http://127.0.0.1 上的本地页面(优先使用 48820–48839 端口)显示结果,Dline 随即自动重新连接该服务器,不会再弹出“打开 VS Code”的提示。Dline 在服务器上登记的客户端名称为 “Dline”。只有首次授权需要浏览器,之后 Dline 会自动刷新已保存的令牌,直到服务器将其撤销。在 VS Code for the Web 中,回调仍经由 VS Code 返回。

  • 只添加你信任的服务器。
  • 凭据使用 ${env:VAR} 引用,不要写入仓库文件。
  • 服务器配置中的 autoApprove 不会绕过全局审批设置,请在批准有副作用的工具调用前检查参数。
问题处理方法
服务器无法连接检查命令或 URL,然后点击 Retry Connection
看不到工具确认服务器已启用并成功连接
认证错误检查 headers 或环境变量;OAuth 服务器请点击 Authenticate
请求超时调大 Request Timeout 或 timeout
工作区服务器没有出现确认文件位于 .agents/mcp/ 下且扩展名为 .yaml、.yml 或 .json,name 没有重复,并检查 Dline 输出中是否有描述文件校验错误