Integrations
Provides containerized execution of the pprof analyzer with bundled dependencies like Graphviz, enabling consistent profiling analysis environments across systems.
Enables analysis of pprof profile files hosted on GitHub via raw URLs, allowing examination of performance profiles directly from GitHub repositories.
Offers macOS-specific functionality for launching interactive pprof web UI sessions, with the ability to initiate and manage background profiling processes.
简体中文| English
Pprof 分析器 MCP 服务器
这是一个用 Go 实现的模型上下文协议 (MCP) 服务器,提供了分析 Go pprof 性能配置文件的工具。
特征
analyze_pprof
工具:- 分析指定的 Go pprof 文件并返回序列化的分析结果(例如,Top N 列表或火焰图 JSON)。
- 支持的配置文件类型:
cpu
:分析代码执行过程中的 CPU 时间消耗,以查找热点。heap
:分析当前内存使用情况(堆分配)以查找内存消耗高的对象和函数。goroutine
:显示所有当前 goroutine 的堆栈跟踪,用于诊断死锁、泄漏或过度使用 goroutine。allocs
:分析程序执行期间的内存分配(包括已释放的内存),以定位频繁分配的代码。(尚未实现)mutex
:分析互斥锁的争用情况,查找导致阻塞的锁。(尚未实现)block
:分析导致 goroutine 阻塞的操作(例如,通道等待、系统调用)。(尚未实现)
- 支持的输出格式:
text
、markdown
、json
(前 N 个列表)、flamegraph-json
(分层火焰图数据,默认)。text
,markdown
:人类可读的文本或 Markdown 格式。json
:以结构化的 JSON 格式输出 Top N 结果(针对cpu
、heap
、goroutine
实现)。flamegraph-json
:以 JSON 格式输出分层火焰图数据,兼容 d3-flame-graph(已实现cpu
、heap
和默认格式)。输出紧凑。
- 可配置 Top N 结果数量(
top_n
,默认为 5,对text
、markdown
、json
格式有效)。
generate_flamegraph
工具:- 使用
go tool pprof
为指定的 pprof 文件生成火焰图(SVG 格式),保存到指定路径,并返回路径和 SVG 内容。 - 支持的配置文件类型:
cpu
、heap
、allocs
、goroutine
、mutex
、block
。 - 要求用户指定输出 SVG 文件路径。
- **重要提示:**此功能依赖于已安装的Graphviz 。
- 使用
open_interactive_pprof
工具(仅限 macOS):- 尝试在后台为指定的 pprof 文件启动
go tool pprof
交互式 Web UI。如果未提供http_address
,则默认使用端口:8081
。 - 成功启动后返回后台
pprof
进程的进程 ID (PID)。 - **仅限 macOS:**此工具仅适用于 macOS。
- **依赖项:**要求
go
命令在系统的 PATH 中可用。 - **限制:**服务器无法捕获后台
pprof
进程产生的错误。从远程 URL 下载的临时文件直到进程终止(手动通过disconnect_pprof_session
或 MCP 服务器退出)才会自动清理。
- 尝试在后台为指定的 pprof 文件启动
disconnect_pprof_session
工具:- 尝试使用其 PID 终止先前由
open_interactive_pprof
启动的后台pprof
进程。 - 首先发送中断信号,如果中断失败则发送终止信号。
- 尝试使用其 PID 终止先前由
安装(作为库/工具)
您可以使用go install
直接安装此软件包:
这会将pprof-analyzer-mcp
可执行文件安装到你的$GOPATH/bin
或$HOME/go/bin
目录。确保此目录位于系统 PATH 中,以便直接运行该命令。
从源代码构建
确保您已安装 Go 环境(建议使用 Go 1.18 或更高版本)。
在项目根目录( pprof-analyzer-mcp
)中,运行:
这将在当前目录中生成一个名为pprof-analyzer-mcp
(或 Windows 上的pprof-analyzer-mcp.exe
)的可执行文件。
使用go install
(推荐)
你也可以使用go install
将可执行文件安装到$GOPATH/bin
或$HOME/go/bin
目录中。这样你就可以直接从命令行运行pprof-analyzer-mcp
(前提是该目录已添加到系统的 PATH 环境变量中)。
使用 Docker 运行
使用 Docker 是运行服务器的一种便捷方式,因为它捆绑了必要的 Graphviz 依赖项。
- **构建 Docker 镜像:**在项目根目录(
Dockerfile
所在的位置)中运行:Copy - 运行 Docker 容器:Copy
-i
标志保持 STDIN 打开,这是此 MCP 服务器使用的 stdio 传输所必需的。--rm
标志会在容器退出时自动删除该容器。
- **为 Docker 配置 MCP 客户端:**要将您的 MCP 客户端(如 Roo Cline)连接到 Docker 内运行的服务器,请更新您的
.roo/mcp.json
:在客户端尝试运行此命令之前,请确保Copypprof-analyzer-mcp
映像已在本地构建。
发布(通过 GitHub Actions 自动执行)
该项目使用GoReleaser和 GitHub Actions 来自动化发布流程。当符合v*
模式的 Git 标签(例如v0.1.0
、 v1.2.3
)推送到代码库时,会自动触发发布。
发布步骤:
- **进行更改:**开发新功能或修复错误。
- **提交变更:**使用常规提交格式提交变更(例如,
feat: ...
、fix: ...
)。这对于自动生成变更日志至关重要。Copy - **推送更改:**将您的提交推送到 GitHub 上的主分支。Copy
- **创建并推送标签:**准备发布时,创建一个新的 Git 标签并将其推送到 GitHub。Copy
- **自动发布:**推送标签将触发
.github/workflows/release.yml
中定义的GoReleaser
GitHub Action。此操作将:- 为 Linux、macOS 和 Windows(amd64 和 arm64)构建二进制文件。
- 根据自上次标记以来的常规提交生成变更日志。
- 使用变更日志创建一个新的 GitHub 版本,并将构建的二进制文件和校验和作为资产附加。
您可以在 GitHub 仓库的“操作”选项卡中查看发布工作流程进度。
配置 MCP 客户端
此服务器使用stdio
传输协议。您需要在 MCP 客户端(例如 VS Code 的 Roo Cline 扩展)中进行配置。
通常,这涉及将以下配置添加到项目根目录中的.roo/mcp.json
文件:
**注意:**请根据您的构建方法( go build
或go install
)以及可执行文件的实际位置调整command
值。确保 MCP 客户端能够找到并执行此命令。
配置完成后,重新加载或重新启动您的 MCP 客户端,它应该自动连接到PprofAnalyzer
服务器。
依赖项
- Graphviz :
generate_flamegraph
工具需要 Graphviz 来生成 SVG 火焰图(go tool pprof
命令在生成 SVG 时会调用dot
)。请确保您的系统已安装 Graphviz,并且dot
命令已添加到系统的 PATH 环境变量中。安装 Graphviz:- macOS(使用 Homebrew):Copy
- Debian/Ubuntu:Copy
- CentOS/Fedora:Copy
- Windows(使用 Chocolatey):Copy
- **其他系统:**参考Graphviz官方下载页面。
- macOS(使用 Homebrew):
使用示例(通过 MCP 客户端)
连接服务器后,您可以使用file://
、 http://
或https://
URI 调用analyze_pprof
和generate_flamegraph
工具来获取配置文件。
示例:分析 CPU 配置文件(文本格式,前 5 名)
示例:分析堆配置文件(Markdown 格式,前 10 名)
示例:分析 Goroutine Profile(文本格式,Top 5)
示例:生成 CPU 配置文件的火焰图
示例:为堆配置文件生成火焰图(inuse_space)
示例:分析 CPU 配置文件(JSON 格式,Top 3)
示例:分析 CPU 配置文件(默认火焰图 JSON 格式)
示例:分析堆配置文件(显式火焰图 JSON 格式)
示例:分析远程 CPU 配置文件(来自 HTTP URL)
示例:分析在线 CPU 配置文件(来自 GitHub 原始 URL)
示例:为在线堆配置文件生成火焰图(来自 GitHub 原始 URL)
示例:打开交互式 Pprof UI 进行在线 CPU 性能分析(仅限 macOS)
示例:断开 Pprof 会话
未来改进(TODO)
- 实现
allocs
、mutex
、block
profiles 的完整分析逻辑。 - 为
allocs
、mutex
、block
配置文件类型实现json
输出格式。 - 根据
output_format
在 MCP 结果中设置适当的 MIME 类型。 - 添加更强大的错误处理和日志级别控制。
- ~~考虑支持远程 pprof 文件 URI(例如,
http://
、https://
)。~~(已完成)
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
这是一个用 Go 实现的模型上下文协议 (MCP) 服务器,提供了分析 Go pprof 性能配置文件的工具。
Related MCP Servers
- -securityAlicense-qualityGo server implementing Model Context Protocol (MCP) for filesystem operations.Last updated -228GoMIT License
- -securityAlicense-qualityThis server implements the Model Context Protocol (MCP) to handle asynchronous tasks with real-time status tracking, robust error handling, and automatic resource management.Last updated -21JavaScriptMIT License
- -securityAlicense-qualitywhat is go-mcp-postgres? go-mcp-postgres is a Model Context Protocol (MCP) server designed for interacting with Postgres databases, allowing for easy CRUD operations and automation without the need for a Node.js or Python environment.Last updated -4GoMIT License
- -securityAlicense-qualityA TypeScript-based MCP server providing a complete interface to the Delve debugger for Go programs, enabling debugging, tracing, and analyzing Go code through natural language commands.Last updated -1TypeScriptMIT License