mcpField
S
sourcemap-retrace-mcp

sourcemap-retrace-mcp

本地服务
github.com/vola-trebla开发工具023 周前更新

关于 sourcemap-retrace-mcp

sourcemap-retrace-mcp 是帮助开发者排查压缩后 JavaScript 生产错误的 MCP 服务。它将堆栈帧映射回 TypeScript 源码位置,提供周边代码,并检查 source map 是否有效。

主要功能

  1. 01将压缩堆栈帧映射到 TypeScript 位置
  2. 02获取带定位标记的周边源码行
  3. 03审计 source map 是否存在及源码路径

适用场景

  1. 01将生产错误追溯到源码位置
  2. 02查看映射错误附近的代码
  3. 03部署前检查 source map

MCP 相关

它向 MCP 客户端提供堆栈追溯、源码上下文检索和 source map 审计工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vola-trebla-sourcemap-retrace": {
"command": "npx",
"args": [
"-y",
"sourcemap-retrace-mcp"
]
}
}
}
启动命令npx -y sourcemap-retrace-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmsourcemap-retrace-mcp0.2.0

工具

7

收录的工具列表 · 更新于 3 周前

参数类型必填说明
stackTracestring是原始压缩错误堆栈跟踪(多行字符串)
sourcemapDirstring是包含 .map 文件的目录(或存放 .js.map 文件的 dist 目录)

详细介绍

🗺️ sourcemap-retrace-mcp

npm CI License: MIT

你的应用在生产环境中崩溃了。堆栈跟踪毫无用处。你的 AI Agent 完全不知道 Bug 出在哪里。

MCP 服务利用 source map,将压缩后的生产环境堆栈跟踪还原为原始 TypeScript 源文件、行和列的位置——免得你的 Agent 花 20 分钟猜测混淆代码的含义。


🤔 问题

你的监控工具发来这样的信息:

TypeError: Cannot read properties of undefined (reading 'userId')
    at e.<anonymous> (main.a3f2c1.js:1:47821)
    at h (vendor.d4e5f6.js:1:12045)
    at processQueue (main.a3f2c1.js:1:89234)

你让 Agent 帮忙调试。Agent 读取 main.a3f2c1.js。这是一个包含 40,000 个字符的压缩 JavaScript 文件。它完全不知道第 47821 列的 e.<anonymous> 是什么意思。

sourcemap-retrace-mcp 会将其映射回:

    at validateSession (src/auth/session.ts:142:8)
    at handleRequest (src/api/middleware.ts:67:3)

现在 Agent 确切知道该查看哪里了。


🛠️ 工具

retrace_stack

将压缩后的堆栈跟踪还原为原始 TypeScript 源代码位置。传入原始堆栈跟踪以及包含 .js.map 文件的目录。

Retrace Results
  Frames mapped: 3  |  Unmapped: 1

TypeError: Cannot read properties of undefined (reading 'userId')
    at validateSession (src/auth/session.ts:142:8)
    at handleRequest (src/api/middleware.ts:67:3)
    at processQueue (src/queue/processor.ts:28:12)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)
retrieve_code_context

显示映射后的错误位置周围的原始源代码行,并附带行号和列指示符。

Code Context
  File: src/auth/session.ts
  Target: line 142, column 8

  139 │   const session = await getSession(token);
  140 │   if (!session) throw new AuthError("invalid token");
  141 │
> 142 │   return session.userId;
        │         ^
  143 │ }
  144 │
  145 │ export async function refreshSession(token: string) {
audit_sourcemap_match

验证 dist 目录中的 .map 文件是否存在,以及它们指向的源文件是否确实存在于磁盘上。在部署前发现过期或缺失的映射文件。

Sourcemap Audit
  Directory: dist/
  Files checked: 4
  OK: 3  |  Missing maps: 0  |  Broken sources: 1

  ✓ main.a3f2c1.js — 47 source(s) mapped
  ✓ vendor.d4e5f6.js — 312 source(s) mapped
  ✓ worker.b1c2d3.js — 8 source(s) mapped
  ⚠ legacy.e7f8a9.js — 2 source(s) not found on disk:
      ../src/utils/deprecated.ts
      ../src/utils/compat.ts

⚡ 设置

{
  "mcpServers": {
    "sourcemap-retrace": {
      "command": "npx",
      "args": ["-y", "sourcemap-retrace-mcp"]
    }
  }
}

🚀 使用方法

“我遇到了生产环境错误。这是堆栈跟踪:[粘贴内容]。我的 dist 文件在 /path/to/dist。请还原堆栈跟踪,显示错误周围的代码,并告诉我问题出在哪里。”

Agent 会运行 retrace_stack,然后对映射后的位置运行 retrieve_code_context,最后就能读取实际发生崩溃的 TypeScript 代码。

也非常适合与以下工具搭配使用:


📦 链接

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。