
LikeC4 MCP 服务器接入指南用模型上下文协议查询与可视化软件架构【免费下载链接】likec4Visualize, collaborate, and evolve the software architecture with always actual and live diagrams from your code项目地址: https://gitcode.com/GitHub_Trending/li/likec4likec4/mcp是 LikeC4 官方提供的 Model Context ProtocolMCP服务器它把工作区内的 LikeC4 项目DSL 模型、部署节点与视图以只读工具的形式暴露给支持 MCP 的 AI 客户端编辑器、聊天助手等让 Agent 可以直接搜索元素、查询关系图、读取视图甚至在聊天内渲染交互式架构图。读完本文你将掌握如何配置启动该服务器stdio / HTTP 两种传输方式、理解它提供的 20 余个只读工具与能力边界并能在 VS Code、Claude 等宿主中把 LikeC4 模型变成可被 AI 检索和引用的架构知识源。什么是likec4/mcpLikeC4 的核心理念是“用代码描述软件架构”模型与视图都定义在.c4DSL 文件中。likec4/mcp则把这一套模型能力接入 MCP 生态它通过 Model Context Protocol 的stdio标准输入输出或 streamable HTTP 传输方式启动一个 MCP 服务器向客户端暴露经过解析的已解析 LikeC4 模型resolved model包括元素、部署节点、关系、视图等。在仓库中该包的实现位于 packages/mcppackage.json声明其bin为likec4-mcp依赖likec4/language-server、likec4/language-services、likec4/core等核心包并基于modelcontextprotocol/sdk与hono/mcp构建。需要特别注意的是 MCP 与 CLI 的能力边界原文明确说明packages/mcp/README.md 亦如此MCP 工具暴露的是工作区内已解析的 LikeC4 模型搜索、图查询、视图不会生成likec4/leanix-bridge产物、执行 LeanIX 同步也不会导出带leanixprofile 的 Draw.io。这类能力请使用 CLIlikec4 gen leanix …、likec4 sync leanix …、likec4 export drawio --profile leanix以及仓库中的 Agent Skill 参考文档 skills/likec4-dsl/references/bridge-leanix-drawio.md。快速开始在客户端中配置 MCP 服务器likec4/mcp通过 npm 分发最常见的接入方式是在支持 MCP 的客户端如 VS Code、Claude Desktop 等的mcpServers配置中声明它。README 给出的标准配置如下{ mcpServers: { likec4: { command: npx, args: [ -y, likec4/mcp ], env: { LIKEC4_WORKSPACE: ${workspaceFolder} } } } }配置要点command与args使用npx -y likec4/mcp-y表示自动安装无需预先全局安装。env.LIKEC4_WORKSPACE指定要解析的 LikeC4 工作区目录。若未设置该环境变量服务器会以当前目录作为工作区见 packages/mcp/README.md。该包默认使用stdio传输transport启动 MCP 服务器。以 CLI 方式使用也可以全局安装后以 CLI 方式运行npm install -g likec4/mcp likec4-mcp -hCLI 帮助输出对应 src/cli.ts 中基于citty定义的参数USAGE likec4-mcp [OPTIONS] [WORKSPACE] ARGUMENTS WORKSPACE. change workspace, defaults to current directory, can be set by LIKEC4_WORKSPACE env directory OPTIONS --stdio use stdio transport (this is default) --http use streamable http transport --portnumber change http port (default: 33335) --no-watch disable watch for changes (consume less resources if you have static workspace)除了 README 中列出的参数从 cli.ts 的源码还可以看到两个补充选项--graphvizbinary|wasm选择用二进制dot还是 WebAssembly 版 Graphviz 做布局默认wasm免安装依赖--watch默认开启文件监听使用--no-watch可关闭监听以节省资源适合静态工作区。CLI 内部对参数做了约束--stdio与--http/--port互斥setup阶段会抛出stdio and http are mutually exclusive。同时注意node 22.22.3是运行该包的版本要求见 package.json。两种传输方式stdio 与 streamable HTTPstdio默认默认情况下 MCP 服务器通过标准输入/输出与宿主进程通信这也是绝大多数桌面客户端的接入方式。实现位于 src/server/StdioLikeC4MCPServer.ts它基于StdioServerTransport连接McpServer并监听 stdin 的end/close事件在输入关闭时自动清理服务器见 src/index.ts 中startLikeC4MCP的生命周期管理。HTTPstreamable通过--http或指定--port可切换到 streamable HTTP 传输。实现位于 src/server/StreamableLikeC4MCPServer.ts要点基于 Hono 构建 HTTP 应用默认端口 33335--port可改提供GET /health健康检查端点MCP 协议端点位于POST/GET /mcp使用StreamableHTTPTransportMemoryEventStore维护会话默认开启全源 CORSorigin: *便于远程客户端或浏览器环境接入绑定0.0.0.0可从外部访问。服务器内部架构与生命周期从源码看likec4/mcp的启动链路清晰startLikeC4MCPsrc/index.ts→initLikeC4MCP用defu合并默认配置mcp: stdio、graphviz: wasm、watch: true等调用likec4/language-services的fromWorkspace(workspace, {...})加载工作区开启manualLayouts: true将语言服务实例注入全局上下文setLanguageServicesCtx见 src/ctx.ts按传输方式实例化StdioLikeC4MCPServer或StreamableLikeC4MCPServer。服务器启动后调用createMCPServersrc/server/createMCPServer.ts创建McpServer服务器名LikeC4版本号取自package.json声明 capabilitiestools、prompts、resources、logging、completions通过函数式 pipe 依次注册全部工具、prompt 与资源instructions中内置给 LLM 的使用约定所有工具只读且幂等project参数可选、默认default优先用search-element/read-project-summary/list-projects定位项目。日志stdio 模式下日志写入 stderr避免污染协议通道HTTP 模式下使用彩色输出见configureLanguageServerLogger({ useStdErr: opts.mcp stdio, ... })。集成测试 src/tests/createMCPServer.int.spec.ts 验证了服务器身份nameLikeC4、version 为语义化版本、tools/prompts/resources/logging 能力声明、工具描述与输入 schema 完整性以及 JSON Schema 2020-12 方言声明等契约。可用工具一览服务器共注册 20 个工具。集成测试EXPECTED_TOOLS见 src/tests/createMCPServer.int.spec.ts对全部工具做了精确断言按功能可分为四类发现与导航工具作用关键输入list-projects列出工作区中的所有 LikeC4 项目id、title、folder、sources无read-project-summary项目规格说明、配置、全部元素、部署节点与视图的清单project?search-element跨项目按 id/标题/kind/shape/标签/metadata 搜索元素与部署节点search至少 2 字符read-element元素完整详情关系、includedInViews、deployedInstances、metadata、sourceLocationid,project?read-deployment部署节点或已部署实例的详情id,project?read-view视图完整详情nodes/edges与 sourceLocationviewId,project?关系与图查询工具作用关键输入find-relationships两元素之间的直接与间接关系element1,element2,project?query-graph查询层级ancestors/descendants/siblings/children/parent与单跳关系incomers/outgoerselementId,queryType,includeIndirect?query-incomers-graph递归上游依赖/生产者的完整子图比多次 query-graph 高效elementId,maxDepth?,maxNodes?query-outgoers-graph递归下游消费者/依赖者的完整子图elementId,maxDepth?,maxNodes?find-relationship-paths两元素之间的全部关系链有界 BFSmaxDepth默认 3、上限 5最多 100 条路径sourceId,targetId,maxDepth?,includeIndirect?标签与元数据过滤工具作用关键输入query-by-metadata按 metadata 键值对精确/包含/存在匹配搜索key,value?,matchMode?query-by-tags布尔逻辑allOf/anyOf/noneOf标签过滤allOf?,anyOf?,noneOf?query-by-tag-pattern标签前缀/包含/后缀模式匹配pattern,matchMode?聚合、比较与渲染工具作用关键输入batch-read-elements单次请求批量读取多个元素摘要含 links、sourceLocation最多 50 个ids[]subgraph-summary汇总某个元素的后代深度、metadata、关系计数最多 200 条elementId,maxDepth?,metadataKeys?element-diff对比两个元素在属性、标签、metadata、关系上的差异element1Id,element2Idrender-view在支持 MCP Apps 的宿主聊天内渲染可交互pan/zoom/fit的视图viewId,project?,render?preview-view用 DSL 文本预览一个全新视图基于现有项目真实元素不落盘dsl,project?open-view在编辑器中打开 LikeC4 视图需 MCP 运行在编辑器内viewId,project?注createMCPServer中注册的工具实际为 20 个除上表外还包含apply-semantic-layout通过 LLM 采样为视图应用语义布局属于改写型工具见 src/tools/apply-semantic-layout.ts以及apply_semantic_layoutpromptsrc/prompts/applySemanticLayout.ts。工具的通用行为与约定只读、幂等、JSON Schema 2020-12所有工具声明了readOnlyHint: true与idempotentHint: true注解open-view的注解为对项目模型只读且幂等但会触发编辑器 UI 动作。参数与输出统一用 Zod 定义并由 src/utils.ts 中的likec4Tool帮助函数包装注册输入/输出 schema 均声明为 JSON Schema 2020-12mcpToolSchema添加$schema元数据MCP SDK 1.x 默认会生成 draft-07 方言因此直接注册的工具必须使用该帮助函数见 utils.ts字符串返回被包装为content: [{ type: text, text }]有outputSchema的工具返回structuredContent结构化内容异常统一转换为isError: true的CallToolResult带文本错误信息。协议层行为由测试 src/tests/tool-protocol.int.spec.ts 验证正常路径返回structuredContent不存在的元素、非法参数类型、未知工具名都会返回isError: true。project 参数与默认值绝大多数工具都接受可选的project参数默认defaultprojectIdSchema见 src/tools/_common.ts。工作区可以同时包含多个项目参考仓库examples/multi-project目录的配置因此推荐先用list-projects明确目标项目 id。sourceLocation 与编辑器跳转read-element、read-view、read-deployment、find-relationships、batch-read-elements等工具会通过语言服务的locate能力返回sourceLocationpathrange。服务器 instructions 明确建议响应中出现sourceLocation时应把该位置作为链接提供给用户方便在编辑器中直接跳转到 DSL 源文件。关键工具深入解析search-element带查询语法的元素搜索src/tools/search-element.ts 实现了大小写不敏感的检索支持前缀查询语法kind:value按 kind 精确过滤shape:value按 shape 过滤meta:key按是否拥有某 metadata 键过滤#value按标签包含匹配其他文本匹配元素 idFQN或标题的包含关系。搜索至少需要 2 个字符结果返回total与found最多 20 条每条含typeelement/deployment-node判别、项目 id、includedInViews 等可直接作为其他工具的输入。实现上通过languageServices.computedModel(project.id)遍历所有项目并对元素与部署节点分别过滤。query-graph七种图查询src/tools/query-graph.ts 提供ancestors、descendants、siblings、children、parent、incomers、outgoers七种查询类型层级类查询直接使用元素模型的关系方法element.ancestors()、element.descendants()等includeIndirect对层级查询无效incomers/outgoers为单跳查询includeIndirecttrue默认时包含经由嵌套元素产生的间接关系结果上限 100 条超出时truncated: true根元素的parent查询返回空数组。递归图遍历incomers / outgoers / relationship-pathsquery-incomers-graph.ts 与 query-outgoers-graph.ts 共用_common.ts中的traverseGraphBFS 实现支持maxDepth默认 10上限 50与maxNodes默认 200上限 2000双重限界内置 visited 集合做环检测返回带depth、邻居含关系标签与技术栈的完整子图。典型场景数据库元素的上游写入者全链路、API 服务的下游消费方与变更影响面blast radius分析。find-relationship-paths.ts 在两点之间做 BFS 路径发现每条路径记录有序的 relationship 步骤kind/title/description/technology/tags结果按长度升序排列拒绝 source 与 target 相同。render-view与preview-view把图带进对话这两个工具面向支持MCP Apps模型上下文协议扩展应用的宿主能在聊天内渲染交互式架构图render-viewsrc/tools/render-view.ts给定viewId渲染已有视图支持fullModel是否附带完整模型数据默认按视图裁剪、render.sizecompact/standard/large默认standard、render.fitView默认 true、render.initialZoom覆盖 fitView。实现上使用languageServices.layoutedModel获取布局后的视图再通过buildRenderPayloadsrc/tools/_common.ts构建viewmodel载荷默认按视图裁剪模型只包含该视图涉及的节点、祖先、关系与部署实体避免超大响应本地 SVG 图标会被内联为 data URI。preview-viewsrc/tools/preview-view.ts接受一段view id ... { ... }DSL 文本视图 id 必须全新已存在则报错并提示改用render-view。实现上从现有项目文档构造虚拟源码加上新视图 DSL 后调用fromSources构建隔离的临时实例完成解析、校验与布局全程不落盘。集成测试 src/tests/preview-view.int.spec.ts 验证了预览不持久化预览后调用render-view渲染该 id 会失败。注意事项预览样式可能与真实项目不完全一致自定义主题/样式扩展不作用于预览且仅识别view idelement view声明dynamic view/deployment view会报通用错误。查询类的边界与性能设计为了不让响应体积失控聚合类工具都设置了明确上限query-by-metadata/query-by-tags/query-by-tag-pattern最多 50 条subgraph-summary最多 200 条maxDepth默认 10、上限 20可用metadataKeys裁剪返回的 metadatafind-relationship-paths最多 100 条路径query-graph最多 100 条。batch-read-elements单次最多 50 个 id未找到的 id 放入notFound数组而非报错适合作为多元素摘要的批量替代其返回的links与sourceLocation与read-element一致仅当还需要关系、部署实例、defaultView 时才必须用read-element。element-diff对比两个元素的差异src/tools/element-diff.ts 对两个同项目元素做并排对比属性kind/title/description/technology/shape/color的逐项 diff、标签的三分仅 A / 仅 B / 共有、metadata 的四分仅 A / 仅 B / 值不同 / 相同、以及关系数量的三类统计入边/出边的独有与共享计数。适合排查两个相似节点为何配置不同之类的模型审查场景。资源与提示词Resources / Prompts除工具外服务器还提供 MCP 资源与提示词在 createMCPServer.ts 中声明 capabilities项目资源likec4://project/{projectId}src/resource/project.ts以application/json返回项目的 id、title、folder并支持列出与参数补全completion。测试 src/tests/resources.int.spec.ts 验证了likec4://project/default的读写往返与未知项目返回空 contents 的行为。渲染 UI 资源ui://likec4/render-view.htmlsrc/resource/render-view.ts向 MCP Apps 宿主提供渲染render-view的 HTML 客户端脚本与样式来自构建产物dist/app/render-view-client.js/.css见 src/appAssets.ts。提示词apply_semantic_layoutsrc/prompts/applySemanticLayout.ts生成调用apply-semantic-layout工具的引导消息projectId/viewId均支持服务端补全。与 CLI / LeanIX / Draw.io 的分工一句话总结能力边界MCP 负责读与聊CLI 负责写与导出。需要向 AI 暴露模型供检索、提问、渲染视图 → 用likec4/mcp需要生成likec4/leanix-bridge产物、执行 LeanIX 同步、或导出带leanixprofile 的 Draw.io 文件 → 用 CLIlikec4 gen leanix …、likec4 sync leanix …、likec4 export drawio --profile leanix详细流程参见仓库的 skills/likec4-dsl/references/bridge-leanix-drawio.md模型与视图的 DSL 语法、include 谓词、部署视图等细节可查阅 skills/likec4-dsl/references 下的参考文档model.md、views.md、deployment.md、predicates.md 等。常见排查与进阶建议启动后无输出 / 客户端连不上确认LIKEC4_WORKSPACE指向包含*.c4与可选likec4.config.*的目录stdio 模式下日志走 stderr不要与协议流混用。search-element查不到结果检查搜索串是否至少 2 个字符、是否用了kind:/shape:/meta:/#前缀语法先用list-projects与read-project-summary确认项目与元素存在。响应过大render-view/preview-view默认裁剪模型fullModel: false图查询收紧maxDepth/maxNodessubgraph-summary用metadataKeys裁剪 metadata。调试与测试仓库提供了完整的集成测试套件src/tests覆盖协议往返、预览不落盘、资源读取、stdio 生命周期与打包冒烟测试可作为理解服务器行为的第一手参考。版本要求运行likec4/mcp需要 Node.js ≥ 22.22.3见 packages/mcp/package.json。小结likec4/mcp把 LikeC4 的代码即架构能力接入 MCP 生态通过 20 个只读工具、一个渲染类工具、一个语义布局工具、若干资源与提示词AI 助手可以在不触碰 DSL 文件的前提下完成元素定位、关系溯源、影响面分析、视图渲染与视图草稿预览。接入只需一行npx -y likec4/mcp的配置配合LIKEC4_WORKSPACE指定工作区即可。对于需要 LeanIX 同步与 Draw.io 导出等写操作场景则应交由 CLI 与 Agent Skill 处理——两者正好互补共同构成 LikeC4 的自动化架构治理闭环。【免费下载链接】likec4Visualize, collaborate, and evolve the software architecture with always actual and live diagrams from your code项目地址: https://gitcode.com/GitHub_Trending/li/likec4创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考