LogMCP
MCP服务器,赋予AI代理查询、分析和处理应用程序日志的能力。
LogMCP通过以下方式将AI助手(GitHub Copilot、Claude等)连接到您的日志数据 模型上下文协议。用自然语言提问,获得即时答案,并自动化事件响应工作流程。
______________________________________________________________________
✨ 它能做什么?
| 能力 | 示例 |
|---|---|
| 查询日志 | *“显示过去一小时欧盟地区的所有错误”* |
| 分析模式 | *“是什么导致401身份验证失败的激增?”* |
| 调试问题 | *“查找超过500毫秒的慢速请求并确定根本原因”* |
| 关联事件 | *“在此错误开始之前是否有任何部署?”* |
| 自动化操作 | *“总结这些错误并创建Jira票证”* |
| 支持团队 | *“用简单的语言向客户解释这个503错误”* |
______________________________________________________________________
🎯 为什么选择LogMCP?
问题:
- 工程师花费数小时搜索数百万条日志行
- 分布式微服务使关联变得困难
- 没有工程帮助,支持团队无法回答客户问题
- 工具(日志、Jira、GitHub)之间的上下文切换会减缓事件响应
解决方案:
- AI代理使用自然语言查询日志
- 自动模式检测和摘要
- 日志+Jira+GitHub的一个接口(通过官方MCP服务器)
- 支持团队无需升级即可获得即时答案
______________________________________________________________________
🏗️ 建筑
┌─────────────────────────────────────────────────────────────┐
│ VS Code Agent Mode │
│ (GitHub Copilot, Claude, GPT, etc.) │
└─────────────────────────────┬───────────────────────────────┘
│ MCP Protocol
▼
┌─────────────────────────────────────────────────────────────┐
│ MCP Servers │
├─────────────────┬──────────────────┬────────────────────────┤
│ LogMCP │ GitHub MCP │ Atlassian MCP │
│ (this repo) │ (official) │ (official) │
├─────────────────┼──────────────────┼────────────────────────┤
│ • get_logs │ • create_issue │ • create_jira_issue │
│ • to_epoch │ • create_pr │ • search_issues │
│ • to_readable │ • search_code │ • update_issue │
│ • send_teams │ • list_commits │ • add_comment │
└────────┬────────┴──────────────────┴────────────────────────┘
│
│ HTTP/REST
▼
┌─────────────────┐ ┌─────────────────────────────────────┐
│ Log Server │◄─────│ Your Log Source │
│ (SQLite) │ │ • Demo logs (included) │
└─────────────────┘ │ • Sumologic, Datadog, Splunk, etc. │
│ • CloudWatch, Elasticsearch │
│ • Any JSON log source │
└─────────────────────────────────────┘______________________________________________________________________
🚀 快速开始
先决条件
1.克隆存储库
git clone https://github.com/rayan-fawaz/mcp-log-agent.git
cd mcp-log-agent2.启动日志服务器
cd log-server/cmd
go run main.go您将看到:
Loading demo logs from ../demo_logs
Loaded 10 logs for NA region
Loaded 10 logs for EU region
Loaded 10 logs for AP region
Log server starting on port :80813.启动MCP服务器
打开一个新终端:
cd mcp-server/cmd
go run main.go您将看到:
LogMCP server running on port 80804.配置VS代码
添加到您的VS代码设置(Ctrl+Shift+P → “打开用户设置JSON”):
{
"mcp": {
"servers": {
"logmcp": {
"type": "http",
"url": "http://localhost:8080/mcp"
}
}
}
}5.试试看!
打开VS代码代理模式(副驾驶聊天)并询问:
从北美地区获取1768473996370和1768473996 400之间的日志
欧盟地区正在发生什么错误?总结这些模式。
将2026年1月18日10:46:36转换为历元毫秒
______________________________________________________________________
🔌 连接您自己的日志
LogMCP附带了演示日志,但您可以轻松连接自己的日志源。
选项1:替换演示日志(最简单)
将日志导出为JSON并将其放置在 demo_logs/:
[
{
"raw": {
"time": 1768473996379,
"log": "lvl=error reqID=abc-123 status=500 msg=\"Database timeout\""
}
}
]选项2:连接Sumologic
修改 log-server/data/sqlite.go 从Sumologic API获取:
// In loadDemoData() or create a new function:
func fetchFromSumologic(query string, start, end int64) ([]LogEntry, error) {
// Sumologic Search Job API
client := &http.Client{}
req, _ := http.NewRequest("POST",
"https://api.sumologic.com/api/v1/search/jobs",
strings.NewReader(fmt.Sprintf(`{"query":"%s","from":%d,"to":%d}`, query, start, end)))
req.SetBasicAuth(os.Getenv("SUMOLOGIC_ACCESS_ID"), os.Getenv("SUMOLOGIC_ACCESS_KEY"))
// ... handle response
}选项3:连接到其他来源
日志服务器是一个简单的REST API。你可以:
| 来源 | 整合方法 |
|---|---|
| 弹性搜索 | 用ES客户端替换SQLite查询 |
| 云监控 | 使用AWS SDK获取日志组 |
| 数据狗 | 使用数据狗日志API |
| 斯普兰克 | 使用Splunk REST API |
| 基于文件 | 直接从日志文件读取 |
看 贡献.md 获取详细的集成指南。
选项4:构建自定义适配器
创建新的日志源适配器:
// log-server/adapters/your_source.go
type YourSourceAdapter struct {
apiKey string
}
func (a *YourSourceAdapter) GetLogs(start, end int64, region string) ([]LogEntry, error) {
// Implement your log fetching logic
}______________________________________________________________________
🛠️ MCP工具参考
| 工具 | 说明 | 参数 |
|---|---|---|
get_logs | 按地区和时间范围查询日志 | region (NA/EU/AP), start (纪元ms), end (纪元ms) |
to_epoch | 将人工日期转换为纪元毫秒 | year, month, day, time (时:分:秒) |
to_readable | 将纪元转换为可读日期 | epoch_ms |
send_teams | 向Microsoft团队发送消息 | message |
工具响应示例
get_logs:
{
"region": "NA",
"count": 5,
"logs": [
{"time": 1768473996379, "message": "lvl=error status=500 msg=\"DB timeout\""},
{"time": 1768473996380, "message": "lvl=info status=200 msg=\"Request completed\""}
]
}______________________________________________________________________
🔗 添加GitHub和Jira集成
LogMCP与官方MCP服务器协同工作。更新您的VS代码设置:
{
"mcp": {
"servers": {
"logmcp": {
"type": "http",
"url": "http://localhost:8080/mcp"
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": ""
}
},
"atlassian": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-atlassian"],
"env": {
"ATLASSIAN_API_TOKEN": "",
"ATLASSIAN_EMAIL": "you@company.com",
"ATLASSIAN_DOMAIN": "yourcompany.atlassian.net"
}
}
}
}
}现在你可以问:
查找过去一小时内的所有500个错误,并创建一个包含摘要的GitHub问题
______________________________________________________________________
📁 项目结构
mcp-log-agent/
├── log-server/ # REST API for log storage & queries
│ ├── cmd/main.go # Entry point
│ ├── data/sqlite.go # Database layer (swap for your source)
│ ├── service/server.go # HTTP handlers
│ └── utils/loader.go # Log parsing utilities
├── mcp-server/ # MCP protocol server
│ ├── cmd/main.go # MCP tools & handlers
│ ├── mcp.json # VS Code config
│ └── mcp.example.json # Config with GitHub/Jira
├── demo_logs/ # Sample log data
│ ├── sample_logs_na.json # North America region
│ ├── sample_logs_eu.json # Europe region
│ └── sample_logs_ap.json # Asia Pacific region
└── demo/
└── prompts.md # Example prompts to try______________________________________________________________________
⚙️ 配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
LOG_SERVER_PORT | 8081 | 日志REST API的端口 |
MCP_SERVER_PORT | 8080 | MCP服务器的端口 |
LOG_SERVER_URL | http://localhost:8081 | MCP访问日志服务器的URL |
DEMO_LOGS_PATH | ../demo_logs | 演示日志文件的路径 |
TEAMS_WEBHOOK_URL | - | Microsoft Teams webhook URL |
复制 .env.example 到 .env 并根据需要进行配置。
______________________________________________________________________
🧪 API 参考
日志服务器公开这些REST端点:
| 方法 | 端点 | 描述 |
|---|---|---|
| 得到 | /logs?region=NA&start_date=X&end_date=Y | 查询日志 |
| 得到 | /health | 健康检查 |
| 得到 | /stats | 按地区列出的日志计数 |
| 得到 | /time/epoch?year=2026&month=1&day=18&time=10:30:00 | 转换为纪元 |
| 得到 | /time/readable?epoch_ms=1768473996379 | 转换为可读 |
______________________________________________________________________
🙏 致谢
______________________________________________________________________
⭐ 如果你觉得这个仓库有用,就把它标上!
