使用说明
MCP日志NL查询服务器
该项目提供了一个模型上下文协议(MCP)服务器,允许开发人员和AI代理使用自然语言查询Google Cloud Logging。服务器使用Vertex AI Gemini 2.5将自然语言查询翻译成谷歌云日志查询语言(LQL),然后查询云日志并返回结果。
特性
- 自然语言到LQL的翻译 使用顶点AI Gemini 2.5
- 灵活的日志查询:筛选受监视的资源、日志名称、严重性、时间等
- REST API 便于集成
- 准备部署 Google Cloud Run或GKE
API使用
端点
1.自然语言查询
POST /logs/nl_query
请求:
{
"query": "Show me all error logs from yesterday for my Cloud Run service 'my-service'",
"max_results": 20
}
答复:
{
"lql": "resource.type = \"cloud_run_revision\" AND resource.labels.service_name = \"my-service\" AND severity = ERROR AND timestamp >= \"2025-04-17T00:00:00Z\" AND timestamp < \"2025-04-18T00:00:00Z\"",
"entries": [ ... log entries ... ]
}
2.LQL过滤器查询
POST /logs/query
请求:
{
"filter": "resource.type=\"cloud_run_revision\" AND severity=ERROR",
"max_results": 20
}
答复:
{
"lql": "resource.type=\"cloud_run_revision\" AND severity=ERROR",
"entries": [ ... log entries ... ]
}
OpenAPI和工具
- OpenAPI/Swagger文档可在
/docs和/openapi.json跑步时。 - 这两个端点也可以作为代理框架(Smithery、Claude Desktop等)的MCP工具被发现。
curl命令示例
curl -X POST $MCP_BASE_URL/logs/nl_query -H 'Content-Type: application/json' -d '{"query": "Show error logs for my Cloud Run service", "max_results": 2}'
curl -X POST $MCP_BASE_URL/logs/query -H 'Content-Type: application/json' -d '{"filter": "resource.type=\"cloud_run_revision\" AND severity=ERROR", "max_results": 2}'
测试
- 示例测试脚本:
test_main.py(见回购)
.gitignore
- 标准Python忽略包含(见repo)
部署
在Google Cloud Run上运行
您可以将此服务器部署到 谷歌云运行 一个完全托管、可扩展的解决方案。
步骤:
-
构建Docker镜像:
gcloud builds submit --tag gcr.io/YOUR_PROJECT_ID/mcp-logging-server -
部署到云运行:
gcloud run deploy mcp-logging-server \ --image gcr.io/YOUR_PROJECT_ID/mcp-logging-server \ --platform managed \ --region YOUR_REGION \ --allow-unauthenticated \ --port 8080替换
YOUR_PROJECT_ID和YOUR_REGION使用您的实际GCP项目ID和地区(例如。,us-central1). -
设置环境变量:
- 在Cloud Run部署UI中或使用
--set-env-vars标志,提供:VERTEX_PROJECT=your-gcp-project-idVERTEX_LOCATION=us-central1(或您所在的地区)
- 资格证书:
- 更倾向于使用具有正确IAM角色(日志查看器、Vertex AI用户)的Cloud Run服务帐户。
- 您通常不需要设置
GOOGLE_APPLICATION_CREDENTIALS除非使用非默认服务帐户密钥,否则请在Cloud Run上运行。
- 在Cloud Run部署UI中或使用
-
IAM权限:
- 确保Cloud Run服务帐户具有:
roles/logging.viewerroles/aiplatform.user
- 确保Cloud Run服务帐户具有:
-
访问服务:
- 部署后Cloud Run将提供服务URL(例如。,
https://mcp-logging-server-xxxxxx.a.run.app). - 将此用作您的
$MCP_BASE_URL在API请求中。
- 部署后Cloud Run将提供服务URL(例如。,
谷歌云身份验证设置
此项目需要Google Cloud应用程序默认凭据(ADC)才能访问日志记录和顶点AI API。
设置凭据的步骤:
- 创建服务帐户:
- 转到 谷歌云控制台→ IAM和管理员→ 服务帐户.
- 选择您的项目。
- 创建或选择具有以下权限的服务帐户: 日志查看器 和 顶点AI用户.
- 创建并下载密钥:
- 在服务帐户中,单击“管理密钥”→ “添加密钥”→ “创建新密钥”(选择JSON)。
- 将JSON密钥文件下载到您的计算机。
- 设置环境变量:
- 在终端中,将环境变量设置为下载密钥的路径:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json" - 替换
/path/to/your/service-account-key.json与实际路径。
- 在终端中,将环境变量设置为下载密钥的路径:
- (可选)设置项目和位置:
- 您可能还需要:
export VERTEX_PROJECT=your-gcp-project-id export VERTEX_LOCATION=us-central1
- 您可能还需要:
- 验证身份验证:
- 运行一个简单
gcloud或Python客户端调用,以确保身份验证正常工作。 - 如果你看到
DefaultCredentialsError,检查您的环境变量和文件路径。
- 运行一个简单
先决条件
- Python 3.9+
- 启用日志记录和Vertex AI API的Google Cloud项目
- 具有日志查看器和Vertex AI用户权限的服务帐户
- 设置环境变量:
VERTEX_PROJECT:您的GCP项目IDVERTEX_LOCATION:顶点AI区域(默认值:us-central1)GOOGLE_APPLICATION_CREDENTIALS:服务帐户JSON密钥文件的路径
地方发展
pip install -r requirements.txt
export VERTEX_PROJECT=your-project-id
export VERTEX_LOCATION=us-central1
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
python main.py
部署到云端运行
gcloud builds submit --tag gcr.io/$VERTEX_PROJECT/mcp-logging-server
gcloud run deploy mcp-logging-server \
--image gcr.io/$VERTEX_PROJECT/mcp-logging-server \
--platform managed \
--region $VERTEX_LOCATION \
--allow-unauthenticated
自然语言查询示例
- 显示Kubernetes集群的所有日志
- 显示来自计算引擎和AWS EC2实例的错误日志
- 查找项目“我的项目”的管理员活动审核日志
- 查找包含单词“独角兽”的日志
- 找到同时有独角兽和凤凰的原木
- 查找textPayload同时包含独角兽和凤凰的日志
- 查找textPayload包含短语“独角兽凤凰”的日志
- 显示Cloud Run服务“我的服务”昨天的日志
- 显示最近30分钟的日志
- 在GKE中显示包含request_log的logName日志
- 使用正则表达式显示pod_name与foo或bar匹配的日志
- 显示严重性为警告或更高的计算引擎日志
- 在us-central中显示Cloud SQL实例的日志1
- 显示包含“付款”的发布/子主题的日志
- 显示两个时间戳之间的日志条目的日志
- 显示jsonPayload.message与正则表达式'foo.*bar'匹配的日志
- 显示labels.env不是prod的日志
有关更多LQL示例,请参阅 官方文件.
许可证
Apache 2.0