日志检索服务

一个基于Java的MCP协议服务器,提供日志检索工具,支持多种日志来源和传输方式,适用于AI客户端和远程访问。

  • by PradeepLoganathan
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 PradeepLoganathan/spov-mcp-logs-server

使用说明

spov-mcp-logs-server 翻译为中文可以是“spov-MCP日志服务器”。这里,“spov”可能是一个特定项目或系统的名称,“MCP”通常代表“Multiplayer Computing Platform”(多人计算平台)或其他根据上下文确定的含义,“logs”表示日志,“server”表示服务器。因此,整个名称可以理解为某个特定项目或系统中的MCP日志服务器

Java(一种编程语言) 模型上下文协议(MCP) 使用官方MCP SDK为AI客户端提供日志检索工具的服务器。

SPDX许可证标识符: Apache-2.0(许可证)

特点/功能

MCP 工具: get_logs

  • 从多个来源(文件、模拟Datadog、模拟Elasticsearch)检索日志
  • 从本地文件中返回最后1000行
  • 提供测试用的示例数据,无需外部服务

双传输支持:

  • **stdio(标准输入输出库)**对于本地AI客户端(VS Code Copilot Chat,Claude Desktop)
  • HTTP/SSE用于远程访问和基于网页的集成

要求

  • Java 21及以上版本
  • Maven 3.8+

快速入门

# Clone & build
git clone https://github.com/PradeepLoganathan/spov-mcp-logs-server
cd spov-mcp-logs-server
mvn clean package

# Run stdio server (for VS Code/Claude Desktop)
export LOGS_FILE_PATH=test-logs.txt
java -jar target/spov-mcp-logs-server-1.0.0.jar

# Run HTTP server (for web/remote clients)
export LOGS_FILE_PATH=test-logs.txt
export PORT=8080
java -cp target/spov-mcp-logs-server-1.0.0.jar com.spov.mcp.logs.sdk.HttpMain

在VS Code中使用(GitHub Copilot Chat)

  1. 配置 .vscode/mcp.json:
{
  "servers": {
    "logs-server": {
      "command": "java",
      "args": ["-jar", "/absolute/path/to/spov-mcp-logs-server-1.0.0.jar"],
      "env": {
        "LOGS_FILE_PATH": "/path/to/your/logs.txt"
      }
    }
  }
}

  1. 重启 VS Code
  2. 在Copilot聊天中使用:“使用get_logs命令并指定源为'file'来显示日志给我”

见 VSCODE_SETUP.md 翻译为中文是:“VSCODE安装指南.md” 或 “VSCODE设置说明.md”(具体翻译可能根据上下文有所调整,但基本意思是关于VSCODE的安装或设置的Markdown文件) 以获取详细说明。

与Claude Desktop配合使用

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%/Claude/claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "logs-server": {
      "command": "java",
      "args": ["-jar", "/absolute/path/to/spov-mcp-logs-server-1.0.0.jar"],
      "env": {
        "LOGS_FILE_PATH": "/path/to/your/logs.txt"
      }
    }
  }
}

重启Claude桌面版。

工具:获取日志

从不同来源检索日志。

参数:

  • source (必填): "datadog", "elastic",或者 "file"

来源:

  • datadog返回模拟的Datadog日志(JSON格式)
  • elastic返回模拟的 Elasticsearch 日志(JSON 格式)
  • file从……读取 LOGS_FILE_PATH 环境变量(最后1000行)

示例:

{
  "name": "get_logs",
  "arguments": {
    "source": "file"
  }
}

配置

环境变量:

名称 默认值 用途
LOGS_FILE_PATH - 本地日志文件的路径(对于...是必需的) source: "file")
PORT 8080 HTTP服务器端口(仅限HTTP模式)

建筑学

实现:

  • SdkMain.javastdio 传输(用于本地 AI 客户端)
  • HttpMain.javaHTTP/SSE传输(用于远程/网页客户端)

依赖项:

  • io.modelcontextprotocol.sdk:mcp:0.9.0 - 官方MCP SDK(MCP软件开发工具包)
  • org.slf4j:slf4j-simple:2.0.17 - 记录(日志)
  • org.eclipse.jetty:jetty-server:11.0.24 - HTTP服务器(用于HttpMain)

协议:

  • 通过stdio或HTTP使用JSON-RPC 2.0
  • MCP(可能指某种系统或平台,如“管理控制平台”等,具体根据上下文确定)功能:工具、日志记录

测试

stdio 模式:

export LOGS_FILE_PATH=test-logs.txt
java -jar target/spov-mcp-logs-server-1.0.0.jar
# Server waits for JSON-RPC on stdin

HTTP 模式:

# Terminal 1: Start server
export LOGS_FILE_PATH=test-logs.txt
java -cp target/spov-mcp-logs-server-1.0.0.jar com.spov.mcp.logs.sdk.HttpMain

# Terminal 2: Connect to SSE
curl -N http://localhost:8080/mcp/sse

# Terminal 3: Send requests (use session ID from SSE)
curl -X POST "http://localhost:8080/mcp?sessionId=SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

看 test-http-mcp.sh 翻译为中文是:“测试HTTP MCP脚本”。不过,这里的“MCP”可能是一个特定上下文中的缩写或特定术语,具体含义需要根据上下文来确定。在没有特定上下文的情况下,我们可以将其理解为“测试HTTP(超文本传输协议)相关的MCP(可能指某种配置、模块或协议)脚本” 用于HTTP测试示例。

许可证

Apache许可证,第2版

相关的

博客讲解(概念): https://pradeepl.com/blog/model-context-protocol/构建一个MCP服务器/