Getting Started · Features · Docs · Website · Open Source · Schedule a Demo
\[!注意\] 您在寻找Python SDK吗?看看这里 mcpcat python.
为什么要使用MCPcat? 🤔
MCPcat通过捕获用户分析和跟踪工具调用,帮助开发人员和产品所有者构建、改进和监控他们的MCP服务器。
MCPcat用于:
- 用户会话回放 🎬. 与您的用户一起了解他们为什么使用您的MCP服务器,您缺少哪些功能,以及他们来自哪些客户端。
- 跟踪调试 🔍. 查看用户陷入困境的地方,跟踪并查找LLM何时被API弄糊涂,并在MCP服务器的所有部署中调试会话。
- 现有平台支持 📊. 为您现有的可观察性平台(OpenTetry、Datadog、Sentry)开箱即用地进行日志记录和跟踪,消除了自己实现遥测的繁琐工作。
支持的MCP库
MCPcat为两个最流行的Go MCP库提供一流的支持:
| 库 | 安装 |
|---|---|
| mcp走 (mark3labs) | go get github.com/mcpcat/mcpcat-go-sdk/mcpgo |
| 去sdk (官方) | go get github.com/mcpcat/mcpcat-go-sdk/officialsdk |
导入与您已使用的MCP库匹配的包。两者都暴露了同样的东西 Track() API和共享相同的功能集。
入门指南
创建一个帐户并获取您的项目ID mcpcat.io有关详细的设置说明,请访问我们的 文档.
加一 Track() 在启动服务器之前调用:
mark3labs/mcp去:
import mcpcat "github.com/mcpcat/mcpcat-go-sdk/mcpgo"
shutdown, err := mcpcat.Track(mcpServer, "proj_YOUR_PROJECT_ID", nil)
if err != nil { /* handle error */ }
defer shutdown(context.Background())官方go-sdk:
import mcpcat "github.com/mcpcat/mcpcat-go-sdk/officialsdk"
shutdown, err := mcpcat.Track(mcpServer, "proj_YOUR_PROJECT_ID", nil)
if err != nil { /* handle error */ }
defer shutdown(context.Background())Track() 返回一个关机函数——在应用程序退出之前调用它以清空所有排队的事件。
高级功能
用户标识
使用回调来标识您的用户会话,以便将用户信息附加到会话中的每个事件。
mark3labs/mcp去:
import (
"github.com/mark3labs/mcp-go/mcp"
mcpcat "github.com/mcpcat/mcpcat-go-sdk/mcpgo"
)
shutdown, err := mcpcat.Track(s, "proj_YOUR_PROJECT_ID", &mcpcat.Options{
Identify: func(ctx context.Context, req *mcp.CallToolRequest) *mcpcat.UserIdentity {
return &mcpcat.UserIdentity{
UserID: "user_12345", UserName: "demo_user",
UserData: map[string]any{"email": "demo@example.com"},
}
},
})官方go-sdk:
import (
"github.com/modelcontextprotocol/go-sdk/mcp"
mcpcat "github.com/mcpcat/mcpcat-go-sdk/officialsdk"
)
shutdown, err := mcpcat.Track(s, "proj_YOUR_PROJECT_ID", &mcpcat.Options{
Identify: func(ctx context.Context, req *mcp.CallToolRequest) *mcpcat.UserIdentity {
return &mcpcat.UserIdentity{
UserID: "user_12345", UserName: "demo_user",
UserData: map[string]any{"email": "demo@example.com"},
}
},
})敏感数据补救
MCPcat会编辑发送到其服务器的所有数据,并在静止时进行加密,但为了提高安全性,它提供了一个钩子,可以在所有文本数据离开服务器之前对其进行自己的编辑。
shutdown, err := mcpcat.Track(s, "proj_YOUR_PROJECT_ID", &mcpcat.Options{
RedactSensitiveInformation: func(text string) string {
return emailRegex.ReplaceAllString(text, "[REDACTED]")
},
})调试模式
启用调试日志以进行故障排除。调试日志将写入 ~/mcpcat.log.
shutdown, err := mcpcat.Track(s, "proj_YOUR_PROJECT_ID", &mcpcat.Options{Debug: true})与现有钩子一起使用(仅限mcp-go)
如果您的服务器已经使用mcp-go挂钩,请通过以下方式传递它们 Options.Hooks MCPCat将在您的钩子旁边附加钩子:
shutdown, err := mcpcat.Track(s, "proj_YOUR_PROJECT_ID", &mcpcat.Options{Hooks: hooks})配置选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
DisableReportMissing | bool | false | 何时 true,防止 get_more_tools 工具无法注册 |
DisableToolCallContext | bool | false | 何时 true,防止 context 避免在工具调用时注入参数 |
Debug | bool | false | 启用调试日志记录 ~/mcpcat.log |
RedactSensitiveInformation | func(string) string | nil | 发送前对所有文本数据进行自定义编辑 |
Identify | 回拨 | nil | 将用户信息附加到会话 |
Hooks | *server.Hooks | nil | 要合并的现有钩子(仅限mcp-go) |
免费开源
MCPcat对合格的开源项目是免费的。我们相信支持使MCP成为可能的生态系统。如果您维护开源MCP服务器,您可以免费访问我们的完整分析平台。
如何申请:电子邮件hi@mcpcat.io使用您的存储库链接
_已经在使用MCPcat?我们将立即升级您的帐户。_
社区猫🐱
认识MCPcat背后的猫!将您的猫添加到我们的社区,提交带有猫照片的PR docs/cats/ 目录。
_想添加你的猫吗?创建一个PR,将猫的照片添加到 docs/cats/ 并更新此部分!_
