Log-MCP

by caijianying

Not rated
GitHub

About

Log-MCP 是一个基于 Model Context Protocol (MCP) 的远程日志查询服务,通过 SSH 连接远程服务器,为 Claude Code 等 AI 助手提供日志查询能力。该项目支持 HTTP 和 STDIO 两种传输模式,可以方便地集成到各种开发环境中。

Details

Author
caijianying
Categories
Other, Infrastructure

Setup

Install Log-MCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/caijianying/log-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

Log-MCP 是一个基于 Model Context Protocol (MCP) 的远程日志查询服务,通过 SSH 连接远程服务器,为 Claude Code 等 AI 助手提供日志查询能力。该项目支持 HTTP 和 STDIO 两种传输模式,可以方便地集成到各种开发环境中。

- 多服务器支持- 支持配置多个远程服务器,统一管理日志查询
- SSH 连接池- 高效的 SSH 连接池管理,支持连接复用和自动重连
- 多种日志操作- 支持列出日志文件、读取日志内容、搜索日志、实时查看日志尾部
- 灵活的传输模式- 支持 HTTP 和 STDIO 两种传输模式,适配不同使用场景
- 安全性保障- 参数验证、路径验证、Shell 转义等多重安全机制
- 日志级别过滤- 支持按日志级别(info、warn、error、debug)过滤查询
- 正则表达式搜索- 支持使用正则表达式进行日志内容搜索
- 上下文行显示- 搜索结果可显示匹配行的上下文内容

- MCP 协议- 实现 Model Context Protocol 规范,提供标准化的工具调用接口
- Apache MINA SSHD- 基于 Apache MINA SSHD 实现 SSH 连接和命令执行
- 连接池技术- 使用 Apache Commons Pool2 实现 SSH 连接池管理
- 双传输模式- 支持 Undertow HTTP Server 和 STDIO 两种传输方式
- JSON-RPC 2.0- 基于 JSON-RPC 2.0 协议进行请求响应处理

构建完成后,会在target目录下生成log-mcp-1.0.0.jar文件。

编辑src/main/resources/config.json文件,配置远程服务器信息:

{ "servers": [ { "name": "local-server", "host": "192.168.5.169", "port": 22, "username": "root", "privateKeyPath": "${ssh.cert.path}", "logRootPath": "/home/docker/logs/fantomfite-admin/", "description": "169测试服务器", "default": true } ], "logLevels": ["info", "warn", "error", "debug"], "logFilePattern": "{level}/log-{level}-{date}.{seq}.log" }
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.5.169

或手动将公钥内容追加到远程服务器的~/.ssh/authorized_keys文件中。

- 私钥文件路径在配置文件中通过privateKeyPath字段指定
- 支持使用环境变量,如${ssh.cert.path}
- 确保私钥文件格式正确(支持 OpenSSH 和 PEM 格式)
- 目前不支持密码认证方式,仅支持私钥文件认证

claude mcp add log-mcp-stdio java -- \ -Dssh.cert.path=/Users/jianyingcai/id_rsa \ -Dlog.config=/Users/jianyingcai/IdeaProjects/mcp/log-mcp/target/classes/config.json \ -jar /Users/jianyingcai/IdeaProjects/mcp/log-mcp/target/log-mcp-1.0.0.jar
java -Dtransport.mode=http \ -Dserver.port=8892 \ -Dssh.cert.path=/Users/jianyingcai/id_rsa \ -Dlog.config=/Users/jianyingcai/IdeaProjects/mcp/log-mcp/target/classes/config.json \ -jar target/log-mcp-1.0.0.jar
claude mcp add --transport http log-mcp http://127.0.0.1:8892/mcp
cat ~/.claude.json | grep 'log-mcp' -C 5
{ "servers": [ { "name": "local-server", "host": "192.168.5.169", "description": "169测试服务器", "status": "connected" } ] }

- server(可选): 目标服务器名称
- level(可选): 日志级别过滤
- startDate(可选): 开始日期 (YYYY-MM-DD)
- endDate(可选): 结束日期 (YYYY-MM-DD)

{ "server": "local-server", "files": [ { "path": "error/log-error-2026-05-04.0.log", "size": "4.3KB", "level": "error", "lastModified": "2026-05-04 04:22:28" } ], "totalFiles": 1 }

- filePath(必需): 日志文件相对路径
- server(可选): 目标服务器名称
- startLine(可选): 起始行号
- endLine(可选): 结束行号
- maxLines(可选): 最大读取行数

{ "server": "local-server", "file": "error/log-error-2026-05-04.0.log", "totalLines": 45, "lines": ["2026-05-04 04:22:28.774 [http-nio-8888-exec-9] ERROR ..."] }

- keyword(必需): 搜索关键词
- server(可选): 目标服务器名称
- levels(可选): 日志级别数组,默认 ["debug", "info"]
- startDate(可选): 开始日期 (YYYY-MM-DD)
- endDate(可选): 结束日期 (YYYY-MM-DD)
- useRegex(可选): 是否使用正则表达式
- contextLines(可选): 上下文行数
- maxResults(可选): 最大结果数

{ "server": "local-server", "keyword": "ERROR", "results": [ { "file": "error/log-error-2026-05-04.0.log", "lineNumber": 1, "content": "2026-05-04 04:22:28.774 [http-nio-8888-exec-9] ERROR ..." } ], "totalMatches": 1 }

- server(可选): 目标服务器名称
- level(可选): 日志级别,默认 "info"
- lines(可选): 行数,默认 50

{ "server": "local-server", "file": "info/log-info-2026-05-06.0.log", "totalLines": 50, "lines": ["2026-05-06 10:30:15.123 [main] INFO ..."] }
{ "name": "server-name", // 服务器名称(唯一标识) "host": "192.168.1.100", // 服务器地址 "port": 22, // SSH 端口 "username": "root", // SSH 用户名 "privateKeyPath": "${ssh.cert.path}", // SSH 私钥路径(支持环境变量) "logRootPath": "/var/logs/", // 日志根目录 "description": "生产服务器", // 服务器描述 "default": true // 是否为默认服务器 }
{ "sshPool": { "maxConnectionsPerServer": 3, // 每个服务器最大连接数 "connectionTimeout": 30000, // 连接超时时间(毫秒) "idleTimeout": 300000, // 空闲超时时间(毫秒) "maxRetries": 2 // 最大重试次数 } }
{ "queryDefaults": { "maxResults": 100, // 默认最大结果数 "maxResultsLimit": 1000, // 最大结果数限制 "maxReadLines": 500, // 默认最大读取行数 "maxReadLinesLimit": 5000, // 最大读取行数限制 "contextLines": 3, // 默认上下文行数 "searchTimeout": 30000, // 搜索超时时间(毫秒) "defaultTailLines": 50 // 默认 tail 行数 } }
搜索包含 "NullPointerException" 的日志

- 参数验证- 所有输入参数都经过严格验证
- 路径验证- 防止路径遍历攻击
- Shell 转义- 所有 Shell 命令参数都经过转义处理
- SSH 私钥认证- 仅支持 SSH 私钥文件认证,不支持密码认证,提供更高的安全性
- 连接池管理- 自动管理连接生命周期,防止资源泄漏
- 确认logRootPath配置正确
- 检查日志文件命名格式是否匹配logFilePattern
- 验证服务器上日志文件是否存在
- 检查服务是否正常启动
- 查看日志输出是否有错误信息
- 验证~/.claude.json配置是否正确

- Java 21- 编程语言
- Maven- 项目构建工具
- Apache MINA SSHD 2.12.0- SSH 客户端
- Jackson 2.17.0- JSON 序列化/反序列化
- Apache Commons Pool2 2.12.0- 连接池管理
- Undertow 2.3.12- HTTP 服务器(HTTP 模式)
- SLF4J + Logback- 日志框架

log-mcp/ ├── src/main/java/com/example/logmcp/ │ ├── LogMcpServer.java # 主入口 │ ├── config/ # 配置管理 │ ├── model/ # 数据模型 │ ├── pool/ # SSH 连接池 │ ├── protocol/ # JSON-RPC 协议 │ ├── security/ # 安全验证 │ ├── service/ # 业务逻辑 │ ├── tools/ # MCP 工具实现 │ └── transport/ # 传输层(HTTP/STDIO) ├── src/main/resources/ │ ├── config.json # 服务器配置 │ └── logback.xml # 日志配置 └── pom.xml # Maven 配置

- Fork 本仓库
- 创建特性分支 (git checkout -b feature/AmazingFeature)
- 提交更改 (git commit -m 'Add some AmazingFeature')
- 推送到分支 (git push origin feature/AmazingFeature)
- 提交 Pull Request

本项目采用 Apache License 2.0 许可证 - 详见LICENSE文件

若觉得有方便到您,欢迎 Star 哦。若有建议,请提 Issue。大家共同进步!

- 作者:小白菜
- GitHub:
https://github.com/caijianying

Secure Zero-Trust SSH Gateway for AI Agents. A Go-based Model Context Protocol (MCP) server featuring runtime Regex Command Firewalls and multi-host isolation.

Model Context Protocol server for secure AsusWRT router administration via SSH. Provides 42+ read-only monitoring tools and guarded mutation tools for managing AsusWRT/Merlin routers.

A server for managing Counter-Strike 2 servers using the RCON protocol.

Incident forensic with log files analyzing

Security gateway for AI agents. Provides scoped tokens with automatic credential injection, human-in-the-loop approval for dangerous commands, SSH execution, vault management, organization skills, wiki, agent memories, and full audit logging. Self-hosted or cloud.

🤖 ⚡️ MCP server ( MacOS) — control remote desktops via VNC

Seamlessly bring real-time production context—logs, metrics, and traces—into your local environment to auto-fix code faster.

Provides access to OpenTelemetry traces and metrics through Logfire.

Rent a real Linux VPS as an AI agent — pay USDC (x402 on Base) or card, SSH in under 60s, no signup; provision, exec, firewall, and storage.

awaBerry Agentic allows for secure remote access to any terminal based device for workflows allowing any Agent and Large Language Model based routine to execute commands on your devices for getting access to required data - and to also write genrated data back.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.