API 规范
该项目基于官方的 Elastic Kibana API 文档,并使用 Elastic Stack 8.x (ES8) 的 OpenAPI YAML 规范动态检索和管理所有 Kibana API 端点。详情请参阅 Kibana API 文档。
一个实现 Kibana MCP 服务器,允许任何兼容 MCP 的客户端(如 Claude Desktop)通过自然语言或编程请求访问您的 Kibana 实例。
此项目由社区维护,不是 Elastic 或 MCP 的官方产品。
💡 相关项目
若要实现完整的 Elastic Stack 集成,请与 Elasticsearch MCP 服务器 结合使用,以直接进行 Elasticsearch 数据操作。它们共同提供了对您的 Elastic Stack 环境的全面可观测性和数据管理能力。
# 全局安装(推荐)
npm install -g @tocharian/mcp-server-kibana
# 或本地安装
npm install @tocharian/mcp-server-kibana
git clone https://github.com/TocharianOU/mcp-server-kibana.git
cd mcp-server-kibana
npm install
npm run build
# 设置您的 Kibana 凭证并运行
KIBANA_URL=http://your-kibana-server:5601 \
KIBANA_USERNAME=your-username \
KIBANA_PASSWORD=your-password \
npx @tocharian/mcp-server-kibana
# 设置您的 Kibana 会话 Cookie 并运行
KIBANA_URL=http://your-kibana-server:5601 \
KIBANA_COOKIES="sid=your-session-id; security-session=your-security-session" \
npx @tocharian/mcp-server-kibana
# 设置您的 Kibana API 密钥并运行
KIBANA_URL=http://your-kibana-server:5601 \
KIBANA_API_KEY=your-base64-encoded-api-key \
npx @tocharian/mcp-server-kibana
在您的 Claude Desktop 配置文件中添加以下内容:
配置文件位置:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"kibana-mcp-server": {
"command": "npx",
"args": ["@tocharian/mcp-server-kibana"],
"env": {
"KIBANA_URL": "http://your-kibana-server:5601",
"KIBANA_USERNAME": "your-username",
"KIBANA_PASSWORD": "your-password",
"KIBANA_DEFAULT_SPACE": "default",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
{
"mcpServers": {
"kibana-mcp-server": {
"command": "npx",
"args": ["@tocharian/mcp-server-kibana"],
"env": {
"KIBANA_URL": "http://your-kibana-server:5601",
"KIBANA_COOKIES": "sid=your-session-id; security-session=your-security-session",
"KIBANA_DEFAULT_SPACE": "default",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
{
"mcpServers": {
"kibana-mcp-server": {
"command": "npx",
"args": ["@tocharian/mcp-server-kibana"],
"env": {
"KIBANA_URL": "http://your-kibana-server:5601",
"KIBANA_API_KEY": "your-base64-encoded-api-key",
"KIBANA_DEFAULT_SPACE": "default",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
# 创建 .env 文件
cat > kibana-mcp.env << EOF
KIBANA_URL=http://your-kibana-server:5601
KIBANA_USERNAME=your-username
KIBANA_PASSWORD=your-password
NODE_TLS_REJECT_UNAUTHORIZED=0
EOF
# 使用环境文件运行
env $(cat kibana-mcp.env | xargs) npx @tocharian/mcp-server-kibana
作为独立的 HTTP 服务运行,用于远程访问和 API 集成:
# 启动 HTTP 服务器(默认端口 3000)
MCP_TRANSPORT=http \
KIBANA_URL=http://your-kibana-server:5601 \
KIBANA_USERNAME=your-username \
KIBANA_PASSWORD=your-password \
npx @tocharian/mcp-server-kibana
# 或自定义端口和主机
MCP_TRANSPORT=http \
MCP_HTTP_PORT=9000 \
MCP_HTTP_HOST=0.0.0.0 \
KIBANA_URL=http://your-kibana-server:5601 \
KIBANA_USERNAME=your-username \
KIBANA_PASSWORD=your-password \
npx @tocharian/mcp-server-kibana
HTTP 模式特性:
http://host:port/mcp 端点暴露 MCP 服务器http://host:port/health示例 HTTP 客户端用法:
// 初始化连接
const response = await fetch('http://localhost:3000/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'initialize',
params: {
protocolVersion: '2024-11-05',
capabilities: {},
clientInfo: { name: 'my-client', version: '1.0.0' }
},
id: 1
})
});
const sessionId = response.headers.get('mcp-session-id');
// 后续请求包括会话 ID
const toolsResponse = await fetch('http://localhost:3000/mcp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'mcp-session-id': sessionId
},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'tools/list',
params: {},
id: 2
})
});
├── index.ts # 服务器入口点
├── src/
│ ├── types.ts # 类型定义和模式
│ ├── base-tools.ts # 工具注册和 API 逻辑
│ ├── prompts.ts # 提示注册(专家和资源助手)
│ ├── resources.ts # 资源注册(API 路径/URI)
│ ├── vl_search_tools.ts # 可视化层 - 搜索工具
│ ├── vl_get_tools.ts # 可视化层 - 获取工具
│ ├── vl_create_tools.ts # 可视化层 - 创建工具
│ ├── vl_update_tools.ts # 可视化层 - 更新工具
│ └── vl_delete_tools.ts # 可视化层 - 删除工具
├── kibana-openapi-source.yaml # Kibana API OpenAPI 索引
├── README.md # 英文文档
├── README_zh.md # 中文文档
| 资源 URI | 描述 |
|---|---|
kibana-api://paths | 返回所有可用的 Kibana API 端点(可通过 search 参数过滤) |
kibana-api://path/{method}/{encoded_path} | 返回特定 API 端点的详细信息 |
示例:
kibana-api://paths?search=saved_objectskibana-api://path/GET/%2Fapi%2Fstatus| 工具名称 | 描述 | 输入参数 |
|---|---|---|
get_status | 获取 Kibana 服务器当前状态 | space(可选字符串)- 目标 Kibana 空间 |
execute_kb_api | 执行自定义 Kibana API 请求 | method(GET/POST/PUT/DELETE),path(字符串),body(可选),params(可选),space(可选字符串) |
get_available_spaces | 获取可用的 Kibana 空间和当前上下文 | include_details(可选布尔值)- 包含完整的空间详细信息 |
search_kibana_api_paths | 通过关键词搜索 Kibana API 端点 | search(字符串) |
list_all_kibana_api_paths | 列出所有 Kibana API 端点 | 无 |
get_kibana_api_detail | 获取特定 Kibana API 端点的详细信息 | method(字符串),path(字符串) |
| 工具名称 | 描述 | 输入参数 |
|---|---|---|
vl_search_saved_objects | 搜索 Kibana 已保存的对象(通用) | types(必需数组),search(可选),fields(可选),perPage(可选),page(可选),space(可选) |
vl_get_saved_object | 通过类型和 ID 获取单个已保存的对象 | type(必需),id(必需),useResolve(可选),space(可选) |
vl_create_saved_object | 创建新的已保存对象(通用) | type(必需),attributes(必需),id(可选),overwrite(可选),references(可选),space(可选) |
vl_update_saved_object | 更新单个已保存的对象 | type(必需),id(必需),attributes(必需),references(可选),version(可选),space(可选) |
vl_bulk_update_saved_objects | 批量更新多个已保存的对象 | objects(必需数组),space(可选) |
vl_bulk_delete_saved_objects | 批量删除多个已保存的对象 | objects(必需数组),force(可选),space(可选) |
支持的已保存对象类型: dashboard,visualization,index-pattern,search,config,lens,map,tag,canvas-workpad,canvas-element
| 提示名称 | 描述 |
|---|---|
kibana-tool-expert | 工具专家模式(强烈推荐在 Claude Desktop 中使用),支持通过工具进行智能分析、搜索、执行和解释 Kibana API。推荐大多数用户使用。 |
kibana-resource-helper | 资源助手模式,指导如何通过资源 URI 访问和使用 Kibana API 信息。适合仅支持资源访问的客户端或需要原始 API 元数据的情况。 |
通过环境变量配置服务器:
| 变量名称 | 描述 | 必需 |
|---|---|---|
KIBANA_URL | Kibana 服务器地址(例如 http://localhost:5601) | 是 |
KIBANA_API_KEY | Kibana API 密钥(base64 编码,用于 API 密钥认证) | 否* |
KIBANA_USERNAME | Kibana 用户名(用于基本认证) | 否* |
KIBANA_PASSWORD | Kibana 密码(用于基本认证) | 否* |
KIBANA_COOKIES | Kibana 会话 Cookie(用于 Cookie 认证) | 否* |
KIBANA_DEFAULT_SPACE | 默认 Kibana 空间(默认:'default') | 否 |
KIBANA_CA_CERT | CA 证书路径(可选,用于 SSL 验证) | 否 |
KIBANA_TIMEOUT | 请求超时时间(毫秒,默认 30000) | 否 |
KIBANA_MAX_RETRIES | 最大重试次数(默认 3) | 否 |
NODE_TLS_REJECT_UNAUTHORIZED | 设置为 0 以禁用 SSL 证书验证(谨慎使用) | 否 |
*必须提供以下认证方法之一:KIBANA_API_KEY,KIBANA_COOKIES,或同时提供 KIBANA_USERNAME 和 KIBANA_PASSWORD。优先顺序:API 密钥 > 基本认证 > Cookie。
| 变量名称 | 描述 | 默认值 | 取值 |
|---|---|---|---|
MCP_TRANSPORT | 传输模式选择 | stdio | stdio,http |
MCP_HTTP_PORT | HTTP 服务器端口(当使用 HTTP 传输时) | 3000 | 1-65535 |
MCP_HTTP_HOST | HTTP 服务器主机(当使用 HTTP 传输时) | localhost | 任意有效主机 |
传输模式详情: