jetbalsa
服务介绍
OpenSearch MCP 服务器
一个用于查询和分析存储在 OpenSearch 中的 Wazuh 安全日志的模型上下文协议 (MCP) 服务器。
功能
- 使用高级过滤搜索安全警报
- 获取特定警报的详细信息
- 生成安全事件统计信息
- 可视化随时间变化的警报趋势
- 长时间运行操作的进度报告
- 结构化的错误处理
前提条件
- Node.js v16 或更高版本
- 访问包含 Wazuh 安全日志的 OpenSearch 实例
安装
选项 1:直接从 GitHub 使用 npx(推荐)
您可以使用 npx 直接运行此工具,而无需克隆仓库:
bash
从 GitHub 运行最新版本
npx github:jetbalsa/mcp-opensearch-js
启用调试模式运行
npx github:jetbalsa/mcp-opensearch-js --debug
您也可以指定特定的分支或提交
npx github:jetbalsa/mcp-opensearch-js#main
选项 2:本地安装
-
克隆此仓库:
bash
git clone https://github.com/jetbalsa/mcp-opensearch-js.git
cd mcp-opensearch-js -
安装依赖项:
bash
npm install -
配置环境变量:
bash
cp .env.example .env -
编辑
.env文件以添加您的 OpenSearch 连接详情:OPENSEARCH_URL=https://your-opensearch-endpoint:9200
OPENSEARCH_USERNAME=your-username
OPENSEARCH_PASSWORD=your-password
DEBUG=false
运行服务器
启动服务器:
bash
npm start
这将以 stdio 模式启动服务器。
启用调试日志记录:
bash
npm run stdio:debug
使用 MCP CLI 测试:
bash
npm run dev
这将使用 FastMCP CLI 工具以交互方式测试服务器。
使用 MCP Inspector 测试:
bash
npm run inspect
这将启动服务器并将其连接到 MCP Inspector 以进行可视化调试。
服务器工具
服务器提供以下工具:
1. 搜索警报
在 Wazuh 数据中搜索安全警报。
参数:
query:搜索查询文本timeRange:时间范围(例如,1h, 24h, 7d)maxResults:返回的最大结果数index:要搜索的索引模式
2. 获取警报详情
通过 ID 获取特定警报的详细信息。
参数:
id:警报 IDindex:索引模式
3. 警报统计
获取关于安全警报的统计信息。
参数:
timeRange:时间范围(例如,1h, 24h, 7d)field:聚合字段(例如,rule.level, agent.name)index:索引模式
4. 可视化警报趋势
随时间可视化警报趋势。
参数:
timeRange:时间范围(例如,1h, 24h, 7d)interval:分组的时间间隔(例如,1h, 1d)query:用于过滤警报的查询index:索引模式
示例用法
使用 MCP CLI 工具:
tools
可用工具:
- searchAlerts: 在 Wazuh 数据中搜索安全警报
- getAlertDetails: 通过 ID 获取特定警报的详细信息
- alertStatistics: 获取关于安全警报的统计信息
- visualizeAlertTrend: 随时间可视化警报趋势
tools.searchAlerts(query: "rule.level:>10", timeRange: "12h", maxResults: 5)
与客户端一起使用
要将此 MCP 服务器与客户端实现一起使用:
javascript
import { Client } from "@modelcontextprotocol/sdk";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const client = new Client(
{
name: "example-client",
version: "1.0.0",
},
{
capabilities: {},
},
);
const transport = new SSEClientTransport(new URL(http://localhost:3000/sse));
await client.connect(transport);
// 使用工具
const result = await client.executeTool("searchAlerts", {
query: "rule.level:>10",
timeRange: "24h",
maxResults: 10
});
console.log(result);
许可证
MIT