日志查询服务器

Seq MCP Server是一个连接AI代理与Seq集中式日志平台的模型上下文协议服务器,支持通过自然语言交互查询日志事件、执行SQL分析、检查仪表板和警报。

  • by Finfinder
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Finfinder/SeqMcpServer

使用说明

Sequ MCP服务器

A. 模型上下文协议(MCP) 将AI代理连接到的服务器 序列 --集中式结构化日志平台。此服务器使LLM能够通过自然语言交互搜索日志事件、执行SQL查询、检查仪表板、警报、信号等。

反馈、问题和贡献

  • 通过GitHub Issues报告bug和功能想法:https://github.com/Finfinder/SeqMcpServer/issues
  • 更大的目标通过里程碑和固定的路线图问题进行跟踪。
  • 实时协作笔记 贡献.md.

用例

  • 原木调查:使用Seq筛选器表达式搜索和筛选日志事件。让AI帮助您发现错误、跟踪问题并分析日志数据中的模式。
  • SQL分析:对Seq事件流执行SQL查询。使用转换为Seq SQL的自然语言聚合、分组和分析日志数据。
  • 仪表板检查:浏览共享仪表板及其图表定义,以了解监控配置。
  • 警报监控:检查配置的警报及其当前状态,以快速评估系统运行状况。
  • 信号发现:列出共享信号(保存的过滤器/视图),以了解您的团队如何对日志数据进行分类。
  • 基础设施洞察:检索服务器诊断、保留策略和系统指标,以提高操作意识。

先决条件

  • .NET 9.0 SDK 或更高版本
  • 跑步 序列 例子 2025.1或更晚 (本地或远程)
  • MCP兼容客户端(VS Code、Claude Desktop、Cursor、Windsurf或任何其他MCP主机)

版本兼容性

每个SeqMcpServer版本都是针对特定版本的 Seq。Api SDK,它确定了所需的最小Seq服务器版本。选择与您的Seq安装相匹配的MCP服务器版本。

SeqMcpServer 序列。Api SDK 序列Api 最小序列服务器 。NET 状态
2.0.1 2025.2.2 v11 2025.1+ 9.0 当前
2.0.0 2025.2.2 v11 2025.1+ 9.0 维护
1.1.0 2024.3.0 v10 2024.x及更早版本¹ 9.0 维护
1.0.0 2024.3.0 v10 2024.x及更早版本¹ 9.0 维护

¹ Seq。Api SDK版本号遵循Seq服务器发布周期。SDK 2024.3.0针对Seq 2024.x进行测试。支持API v10的较旧Seq版本也可以工作,但尚未正式测试。

提示: 不确定使用哪个版本?如果您的Seq服务器 2025.1或更新版本,使用SeqMcpServer 2.0.0.对于Seq 2024.x 或更早,使用SeqMcpServer 1.1.0.版本兼容性表将随着新版本针对较新的Seq API版本而更新。


入门指南

1.构建服务器

git clone <repository-url>
cd src/SeqMcpServer
dotnet build

2.配置您的MCP客户端

服务器通过以下方式进行通信 标准 并且完全通过环境变量进行配置。

VS Code

将以下内容添加到VS代码MCP设置中(.vscode/mcp.json 或用户设置):

{
  "servers": {
    "seq": {
      "type": "stdio",
      "command": "dotnet",
      "args": ["run", "--project", "/absolute/path/to/SeqMcpServer"],
      "env": {
        "SEQ_URL": "http://localhost:5341",
        "SEQ_API_KEY": "your-seq-api-key"
      }
    }
  }
}
Claude Desktop

编辑您的 claude_desktop_config.json:

{
  "mcpServers": {
    "seq": {
      "command": "dotnet",
      "args": ["run", "--project", "/absolute/path/to/SeqMcpServer"],
      "env": {
        "SEQ_URL": "http://localhost:5341",
        "SEQ_API_KEY": "your-seq-api-key"
      }
    }
  }
}
Cursor

添加到光标MCP配置中:

{
  "mcpServers": {
    "seq": {
      "command": "dotnet",
      "args": ["run", "--project", "/absolute/path/to/SeqMcpServer"],
      "env": {
        "SEQ_URL": "http://localhost:5341",
        "SEQ_API_KEY": "your-seq-api-key"
      }
    }
  }
}
Using a compiled binary

为了获得更好的启动性能,请先发布服务器:

dotnet publish -c Release -o ./publish

然后直接在MCP客户端配置中引用二进制文件:

{
  "servers": {
    "seq": {
      "type": "stdio",
      "command": "/absolute/path/to/publish/SeqMcpServer.exe",
      "env": {
        "SEQ_URL": "http://localhost:5341",
        "SEQ_API_KEY": "your-seq-api-key"
      }
    }
  }
}

配置

服务器是通过环境变量专门配置的,不需要配置文件。

变量 必填 默认 描述
SEQ_URL 没有 http://localhost:5341 Seq实例的基本URL
SEQ_API_KEY 没有 (无) 按API密钥进行身份验证。如果省略,则连接时不进行身份验证

注: 启动诊断(包括服务器版本和身份验证状态)被写入 stderr 在不干扰MCP stdio传输的情况下实现可见性。


可用工具

服务器暴露 8个MCP工具 提供对Seq功能的全面访问:

日志查询

工具 说明
seq_query_logs 使用筛选表达式搜索序列日志事件
seq_run_sql 对Seq日志数据执行SQL查询

配置和监控

工具 说明
seq_list_signals 列出共享信号(保存的过滤器/视图)
seq_list_dashboards 列出带有图表定义的共享仪表板
seq_get_alerts 获取已配置的警报及其当前状态
seq_get_retention 在Seq中配置保留策略

服务器信息

工具 说明
seq_get_diagnostics 获取Seq服务器诊断和系统指标
seq_get_version 获取MCP服务器版本和运行时信息

工具参考

seq_query_logs

使用筛选表达式搜索Seq日志事件。返回具有时间戳、级别、消息和属性的匹配事件。

参数:

参数 类型 必填 默认 说明
filter string 没有 "" 序列滤波器表达式(例如。, @Level = "Error", Application = "MyApp").为所有事件留空。
count int 没有 50 返回的最大事件数(1-500)
fromUtc string 否 最近24小时 ISO 8601开始时间(例如。, 2025-01-15T00:00:00Z)
toUtc string 否 现在 ISO 8601结束时间
trace bool 没有 false 启用Seq服务器端查询跟踪。不会更改响应格式。

示例提示:

  • “显示最近10个错误日志”
  • “查找过去一小时内PaymentService的所有日志”
  • “搜索包含警告或错误级别的'timeout'的日志”

seq_run_sql

使用标准Seq SQL语法对Seq日志数据执行SQL查询。

参数:

参数 类型 必填 默认 说明
query string 是 -- 要执行的SQL查询(例如。, select count(*) from stream group by @Level)
fromUtc string 否 最近24小时 ISO 8601范围开始
toUtc string 否 现在 ISO 8601范围结束
trace bool 没有 false 启用Seq服务器端查询跟踪。不会更改响应格式。

安全: A. LIMIT 1000 如果没有指定限制以防止过度的数据检索,则会自动附加子句。

示例提示:

  • “统计过去24小时内按级别分组的日志事件”
  • “显示本周最常见的10条错误消息”
  • “每个端点的平均响应时间是多少?”

seq_list_signals

列出序列中定义的所有共享信号(保存的日志过滤器/视图)。

无需参数。

退货: 每个共享信号的信号ID、标题、描述和过滤器表达式。


seq_list_dashboards

列出Seq中配置的所有共享仪表板及其图表定义。

无需参数。

退货: 仪表板ID、标题和嵌套图表定义,包括带筛选器和分组子句的查询。


seq_get_alerts

从Seq获取所有配置的警报及其当前状态。

无需参数。

退货: 警报状态数据,包括配置和当前触发状态。


seq_get_retention

在Seq中配置所有保留策略,显示日志数据的保留时间。

无需参数。

退货: 策略ID、保留期(以天为单位)和相关的信号表达式。


seq_get_diagnostics

获取Seq服务器诊断,包括摄取状态、存储使用情况和系统指标。

无需参数。

退货: 包含摄取、存储和系统健康指标的全面诊断报告。


seq_get_version

获取MCP服务器版本、名称和运行时信息。

无需参数。

退货: 服务器名称、版本号和。NET运行时描述。


建筑

SeqMcpServer/
├── Program.cs              # Entry point, DI registration, MCP server setup
├── VersionInfo.cs          # Assembly-based version resolution
└── Tools/
    ├── JsonDefaults.cs     # Shared JSON serialization options
    ├── QueryLogsTool.cs    # seq_query_logs  — event search
    ├── SqlQueryTool.cs     # seq_run_sql     — SQL queries
    ├── SignalsTool.cs      # seq_list_signals
    ├── DashboardsTool.cs   # seq_list_dashboards
    ├── AlertsTool.cs       # seq_get_alerts
    ├── RetentionPoliciesTool.cs  # seq_get_retention
    ├── DiagnosticsTool.cs  # seq_get_diagnostics
    └── VersionTool.cs      # seq_get_version
  • 运输: 标准输入/输出
  • 工具发现: 自动通过 [McpServerToolType] 和 [McpServerTool] 属性
  • Seq集成: SDK优先方法-- Seq。Api SDK 用于键入访问(7个工具),命名为 HttpClient 用于原始API端点(1个工具)
  • 错误处理: 所有工具都返回JSON序列化错误——没有异常传播到MCP主机

安全考虑

SeqMcpServer充当 透明代理 在AI代理(LLM)和Seq API之间。用户提供的SQL查询(seq_run_sql)和过滤表达式(seq_query_logs)在没有服务器端净化的情况下转发到Seq。这是经过精心设计的:

  • Seq SQL是只读的 --Seq查询语言仅支持 SELECT 事件流上的语句和聚合。没有DML操作(INSERT、UPDATE、DELETE)或DDL操作(CREATE、DROP、ALTER)。
  • 授权由Seq执行 -Seq服务器基于API密钥权限来控制访问。MCP服务器不实现自己的授权层。
  • 内置护栏 --MCP服务器自动附加 LIMIT 1000 对于缺少限制子句的SQL查询,将日志查询的事件计数限制在1-500,以防止过度的数据检索。

建议: 始终将Seq API密钥与 所需的最低权限 (最小特权原则)。如果密钥只需要读取日志,则不要授予管理或写入权限。请参阅 Seq API关键文档 有关配置关键权限的详细信息。


技术栈

组件 版本
.净值 9.0
模型上下文协议 0.1.0-复习。9
Seq。应用程序编程接口 2025.2.2
微软。扩展。主机 9.0.0
微软。扩展。Http 9.0.0

有关SeqMcpServer版本与Seq服务器兼容性的详细映射,请参阅 版本兼容性.


测试

该项目包括单元测试和集成测试。

单元测试

dotnet test SeqMcpServer.Tests.Unit

无需外部依赖——完全在进程内使用模拟的HTTP处理程序运行。

集成测试

dotnet test SeqMcpServer.Tests.Integration

需要 码头工人 — 测试容器 自动启动 datalust/seq:2025.2 容器,种子测试数据,运行所有测试并清理。

所有测试

dotnet test

代码质量

该项目不断被分析 SonarCloud 为了代码质量和安全。

  • 基于CI的分析:The sonar.yml 工作流运行SonarScanner。NET每次推送 main、版本分支和拉取请求。
  • 代码覆盖率:单元和集成测试通过以下方式生成OpenCover覆盖率报告 床罩,上传到SonarCloud进行覆盖分析和PR装饰。
  • 公关装修:SonarCloud会自动将分析结果作为对拉取请求的评论发布,包括新问题、质量门状态和覆盖范围更改。
  • 质量门:该项目使用“声纳方式”质量门——新代码在合并之前必须通过所有条件。

SonarQube for IDE(实时分析)

SonarQube集成开发环境 (前身为SonarLink)直接在VS code中提供实时代码分析。随着 已连接模式,它同步SonarCloud的质量配置文件,确保在本地和CI中应用相同的规则。

要求: Java 17+,SonarCloud帐户,可访问 finfinder 组织。

安装:

  1. 从VS Code Marketplace安装扩展:搜索“SonarQube for IDE”或运行:
    code --install-extension SonarSource.sonarlint-vscode
    
  2. 在VS Code中打开此项目。扩展程序将检测 .sonarlint/connectedMode.json 共享绑定,并提示您配置连接模式。
  3. 点击 “使用配置” 出现提示时,请提供您的 用户令牌.
  4. 要生成用户令牌,请转到 SonarCloud安全 并创建新令牌(类型: 用户令牌).

重要提示: 您的用户令牌是个人令牌,必须 不 提交到存储库。每个开发人员生成自己的令牌。

连接模式提供了什么:

  • SonarCloud的同步质量配置文件规则
  • 抑制服务器上标记为“接受/误报”的问题
  • 专注于新代码分析
  • 关于质量门更改的智能通知
  • 分支感知与项目的版本化分支模型兼容

SonarQube MCP服务器(可选)

这 SonarQube MCP服务器 使AI代理(GitHub Copilot)能够直接从VS Code查询SonarCloud分析结果。此集成由 code-reviewer 和 software-engineer 代理人。

要求: 码头工人

将以下内容添加到您的 .vscode/mcp.json:

{
  "servers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
        "-e", "SONAR_TOKEN",
        "-e", "SONAR_HOST_URL=https://sonarcloud.io",
        "-e", "SONAR_ORGANIZATION=finfinder",
        "mcp/sonarqube"
      ],
      "env": {
        "SONAR_TOKEN": "${input:sonarToken}"
      }
    }
  }
}

生成一个 SONAR_TOKEN首选 SonarCloud安全 并使用创建新令牌 执行分析 范围。


贡献

欢迎投稿!请阅读 贡献.md 了解如何开始的指导方针。


安全

要报告安全漏洞,请参阅 安全.md 以获取说明。


更新日志

看 更改日志.md 查看详细的变化历史。


许可证

该项目根据 MIT许可证.