CMDC.MCP.Config (cmdc v0.5.0)

Copy Markdown View Source

MCP server 配置发现与解析。

从标准文件位置发现 mcp.json 配置,并转换为 CMDC 内部格式 %{name: String.t(), transport: tuple} 列表。

发现顺序(越靠前优先级越高)

项目本地(相对 working_dir):

  1. .vscode/mcp.json
  2. .github/mcp.json
  3. .cursor/mcp.json
  4. .cmdc/mcp.json
  5. .mcp.json

用户全局

  1. ~/.cmdc/mcp.json

同名 server 以第一次出现为准(项目本地覆盖全局)。

支持的格式

同时兼容两种 JSON 顶层键:

  • "servers" — CMDC 原生格式
  • "mcpServers" — Cursor / VS Code 格式

支持的 transport

  • Stdio 服务器:command + args + 可选 env
  • HTTP/SSE 服务器:type("http" 或 "sse")+ url + 可选 headers

Summary

Functions

从标准文件路径发现 MCP server 配置。

解析单个 mcp.json 文件,返回 server 配置列表。

解析 VS Code 格式的单条 server 配置。

Functions

discover(working_dir, opts \\ [])

@spec discover(
  String.t(),
  keyword()
) :: [map()]

从标准文件路径发现 MCP server 配置。

参数

  • working_dir — 项目根目录路径
  • opts — 可选:
    • :extra_files — 额外配置文件路径列表(绝对路径或相对 working_dir 的路径)

返回

[%{name: String.t(), transport: tuple}] 列表,按 server name 去重(先出现者优先)。

parse_file(path)

@spec parse_file(String.t()) :: [map()]

解析单个 mcp.json 文件,返回 server 配置列表。

文件不存在或格式无效时返回 []

parse_server(name, config)

@spec parse_server(String.t(), map()) :: map() | nil

解析 VS Code 格式的单条 server 配置。

返回 %{name: String.t(), transport: tuple}nil(格式无效时)。