GCP遥测MCP服务器
用于Google Cloud Platform遥测服务的模型上下文协议(MCP)服务器,提供与GCP可观察性工具的无缝集成。
特性
云日志
- ✅ 使用结构化数据写入日志条目
- ✅ 支持多种严重级别(调试、信息、警告、错误、严重)
- ✅ 自定义标签和结构化有效载荷
- ✅ 列出具有过滤和分页功能的日志条目
云监控
- ✅ 创建自定义指标描述符
- ✅ 写入时间序列数据点
- ✅ 使用高级过滤查询时间序列数据
- ✅ 支持所有度量类型(量规、Δ、累积)
- ✅ 支持所有值类型(BOOL、INT64、DOUBLE、STRING、DISTRIBUTION)
- ✅ 高级聚合选项(对齐期、缩减器)
- ✅ 删除自定义指标描述符
- ✅ 列出可用的度量描述符
- ✅ 发现可用的Google Cloud服务指标
云跟踪
- ✅ 使用高级过滤和分页功能列出痕迹
- ✅ 通过跟踪ID获取特定跟踪
- ✅ 使用新数据更新/修补跟踪跨度
- ✅ 支持分布式跟踪分析
云分析器
- ✅ 为应用程序创建新的分析会话
- ✅ 使用现有分析数据创建脱机配置文件
- ✅ 更新配置文件元数据和数据
- ✅ 列出带有分页的配置文件
- ✅ 支持多种配置文件类型(CPU、HEAP、THREADS、CONTENTION、WALL)
先决条件
- 转到1.24.2或更高版本
- 启用了适当API的谷歌云项目
- 已配置身份验证凭据(请参阅 认证)
安装
来源
git clone https://github.com/kitagry/gcp-telemetry-mcp.git
cd gcp-telemetry-mcp
go build -o gcp-telemetry-mcp认证
此服务器使用Google Cloud身份验证。配置以下选项之一:
- 服务帐户密钥文件:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"- 应用程序默认凭据 (如果在GCP上运行):
gcloud auth application-default login- 工作负载标识 (适用于GKE/Cloud Run部署)
配置
设置所需的环境变量:
export GOOGLE_CLOUD_PROJECT="your-project-id"用法
运行服务器
./gcp-telemetry-mcp或者使用Go:
go run main.goMCP工具
服务器提供以下MCP工具:
云日志工具
write_log_entry
将日志条目写入Cloud Logging。
参数:
log_name(string,必填):要写入的日志的名称severity(字符串,必填):日志严重性(调试、信息、警告、错误、严重)message(字符串,必填):日志消息labels(对象,可选):日志标签的键值对payload(对象,可选):结构化数据有效载荷
例子:
{
"log_name": "my-application-log",
"severity": "INFO",
"message": "User login successful",
"labels": {
"user_id": "12345",
"environment": "production"
},
"payload": {
"event": "user_login",
"timestamp": "2024-01-01T12:00:00Z",
"ip_address": "192.168.1.1"
}
}list_log_entries
列出Cloud Logging中的日志条目。
参数:
filter(字符串,可选):云日志过滤表达式limit(number,可选):要返回的最大条目数(默认值:50)
例子:
{
"filter": "severity>=ERROR",
"limit": 100
}云监控工具
create_metric_descriptor
在云监控中创建自定义指标描述符。
参数:
type(字符串,必填):度量类型(例如,“custom.googleapis.com/my_Metric”)metric_kind(字符串,必填):度量类型(量规、Δ或累积)value_type(string,必填):值类型(BOOL、INT64、DOUBLE、string或DISTRIBUTION)description(字符串,必填):度量的描述display_name(字符串,可选):指标的显示名称
例子:
{
"type": "custom.googleapis.com/app/response_time",
"metric_kind": "GAUGE",
"value_type": "DOUBLE",
"description": "Application response time in seconds",
"display_name": "App Response Time"
}write_time_series
将时间序列数据写入云监控。
参数:
metric_type(字符串,必填):用于写入数据的度量类型resource_type(string,必填):资源类型(例如“global”、“gce_instance”)value(数字,必填):要写入的度量值metric_labels(对象,可选):可选公制标签timestamp(字符串,可选):数据点的时间戳(ISO 8601格式,默认为现在)
例子:
{
"metric_type": "custom.googleapis.com/app/response_time",
"resource_type": "global",
"value": 0.125,
"metric_labels": {
"service": "api",
"version": "v1.2.0"
},
"timestamp": "2024-01-01T12:00:00Z"
}list_time_series
列出来自云监控的时间序列数据。
参数:
filter(字符串,必填):监视筛选器表达式start_time(字符串,必填):查询的开始时间(ISO 8601格式)end_time(字符串,必填):查询的结束时间(ISO 8601格式)aggregation(对象,可选):聚合配置
例子:
{
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/usage\"",
"start_time": "2024-01-01T10:00:00Z",
"end_time": "2024-01-01T12:00:00Z",
"aggregation": {
"alignment_period": "60s",
"per_series_aligner": "ALIGN_MEAN",
"cross_series_reducer": "REDUCE_MEAN",
"group_by_fields": ["resource.zone"]
}
}list_metric_descriptors
列出云监控中的度量描述符。
参数:
filter(字符串,可选):过滤度量描述符的表达式
例子:
{
"filter": "metric.type=starts_with(\"custom.googleapis.com/\")"
}delete_metric_descriptor
从云监控中删除自定义指标描述符。
参数:
metric_type(字符串,必填):要删除的度量类型
例子:
{
"metric_type": "custom.googleapis.com/my_old_metric"
}list_available_metrics
列出云监控中的可用指标,包括谷歌云服务指标。
参数:
filter(字符串,可选):过滤指标表达式(例如,'metric.type=starts_with(“compute.googleapis.com/”)')page_size(number,可选):要返回的最大指标数(默认值:100)page_token(字符串,可选):分页的页面标记
例子:
{
"filter": "metric.type=starts_with(\"compute.googleapis.com/\")",
"page_size": 50
}云跟踪工具
list_traces
列出Cloud Trace中的跟踪。
参数:
start_time(字符串,必填):查询的开始时间(ISO 8601格式)end_time(字符串,必填):查询的结束时间(ISO 8601格式)filter(字符串,可选):筛选表达式(例如,“span_name_prefix:”api“”)order_by(字符串,可选):按字段排序(例如,“start_time-desc”)page_size(数字,可选):要返回的最大跟踪数(默认值:100)page_token(字符串,可选):分页的页面标记
例子:
{
"start_time": "2024-01-01T10:00:00Z",
"end_time": "2024-01-01T12:00:00Z",
"filter": "span_name_prefix:\"api\"",
"order_by": "start_time desc",
"page_size": 50
}get_trace
从Cloud trace获取特定跟踪。
参数:
trace_id(字符串,必填):要检索的跟踪ID
例子:
{
"trace_id": "1234567890abcdef1234567890abcdef"
}patch_traces
更新Cloud trace中的跟踪跨度。
参数:
trace_id(字符串,必填):要更新的跟踪IDspans(数组,必填):要更新或创建的span对象数组
例子:
{
"trace_id": "1234567890abcdef1234567890abcdef",
"spans": [
{
"span_id": "span123",
"name": "updated-operation",
"start_time": "2024-01-01T12:00:00Z",
"end_time": "2024-01-01T12:00:05Z",
"parent_id": "parent123",
"kind": "RPC_CLIENT",
"labels": {
"service": "api",
"version": "v2.0"
}
}
]
}云分析器工具
create_profile
在Cloud Profiler中创建新的配置文件。
参数:
target(字符串,必填):目标部署名称profile_type(字符串,必填):配置文件类型(CPU、HEAP、THREADS、CONTENTION或WALL)duration(字符串,可选):配置文件持续时间(例如,“60秒”、“5米”,默认为“60秒)labels(对象,可选):配置文件的可选标签
例子:
{
"target": "my-app-v1",
"profile_type": "CPU",
"duration": "60s",
"labels": {
"service": "web-server",
"version": "v1.2.0"
}
}create_offline_profile
使用现有的分析数据在Cloud Profiler中创建脱机配置文件。
参数:
target(字符串,必填):目标部署名称profile_type(字符串,必填):配置文件类型(CPU、HEAP、THREADS、CONTENTION或WALL)profile_data(字符串,必填):Base64编码的配置文件数据duration(字符串,可选):配置文件持续时间(例如,60秒、5米)labels(对象,可选):配置文件的可选标签
例子:
{
"target": "my-app-v1",
"profile_type": "HEAP",
"profile_data": "base64encodedprofiledata==",
"duration": "30s",
"labels": {
"service": "api-server",
"environment": "production"
}
}update_profile
在Cloud Profiler中更新配置文件。
参数:
profile_name(字符串,必填):要更新的配置文件名称profile_data(字符串,可选):更新了base64编码的配置文件数据labels(对象,可选):更新了配置文件的标签update_mask(字符串,可选):要更新的字段(例如,“labels,profile_bytes”)
例子:
{
"profile_name": "projects/my-project/profiles/12345",
"profile_data": "newbase64encodeddata==",
"labels": {
"service": "updated-service",
"version": "v1.3.0"
},
"update_mask": "labels,profile_bytes"
}list_profiles
列出Cloud Profiler中的配置文件。
参数:
page_size(number,可选):要返回的最大配置文件数(默认值:100)page_token(字符串,可选):分页的页面标记
例子:
{
"page_size": 50,
"page_token": "next_page_token_here"
}发展
运行测试
go test ./...项目结构
.
├── main.go # MCP server implementation and tool handlers
├── logging/
│ ├── client.go # Cloud Logging client implementation
│ └── client_test.go # Tests for logging client
├── monitoring/
│ ├── client.go # Cloud Monitoring client implementation
│ └── client_test.go # Tests for monitoring client
├── trace/
│ ├── client.go # Cloud Trace client implementation
│ └── client_test.go # Tests for trace client
├── profiler/
│ ├── client.go # Cloud Profiler client implementation
│ └── client_test.go # Tests for profiler client
├── go.mod # Go module definition
├── go.sum # Go dependency checksums
└── README.md # This file错误处理
服务器为常见问题提供详细的错误消息:
- 缺失
GOOGLE_CLOUD_PROJECT环境变量 - 身份验证失败
- 日志记录和监视操作的参数无效
- 云日志API错误
- 云监控API错误
- 时间序列数据验证错误
- 度量描述符创建/删除失败
- 云跟踪API错误
- 跟踪检索和跨度更新失败
- 云档案器API错误
- 配置文件创建和更新失败
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
支持
对于问题和疑问:
- 在GitHub存储库中创建问题
- 查看谷歌云日志文档,了解日志记录的具体问题
- 查看谷歌云监控文档,了解监控的具体问题
- 查看Google Cloud Trace文档,了解有关跟踪的具体问题
- 查看Google Cloud Profiler文档,了解分析器特定的问题
