🚀 Kibana MCP Server
本項目基於官方 Elastic Kibana API 文檔,使用 Elastic Stack 8.x (ES8) 的 OpenAPI YAML 規範來動態檢索和管理所有 Kibana API 端點。有關最新詳細信息,請參閱 Kibana API 文檔。
Kibana MCP 服務器的實現,允許任何與 MCP 兼容的客戶端(如 Claude Desktop)通過自然語言或編程請求訪問你的 Kibana 實例。
本項目由社區維護,並非 Elastic 或 MCP 的官方產品。
🚀 快速開始
啟動服務器
KIBANA_URL=http://your-kibana-server:5601 \
KIBANA_USERNAME=your-username \
KIBANA_PASSWORD=your-password \
NODE_TLS_REJECT_UNAUTHORIZED=0 \
npm start
示例 MCP 客戶端配置
將以下內容添加到 Claude Desktop 配置文件中(MacOS 路徑:~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"kibana-mcp-server": {
"command": "node",
"args": ["/path/to/mcp-server-kibana/dist/index.js"],
"env": {
"KIBANA_URL": "http://your-kibana-server:5601",
"KIBANA_USERNAME": "your-username",
"KIBANA_PASSWORD": "your-password",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
✨ 主要特性
- 連接到本地或遠程 Kibana 實例
- 安全認證(用戶名/密碼)
- 支持 SSL/TLS 和自定義 CA 證書
- 將 Kibana API 端點作為工具和資源公開
- 從 MCP 客戶端搜索、查看和執行 Kibana API
- 類型安全、可擴展且易於集成
📦 安裝指南
安裝依賴
npm install
構建服務器
npm run build
開發模式下自動重建
npm run watch
💻 使用示例
示例查詢
- "What is the status of my Kibana server?"
- "List all available Kibana API endpoints."
- "Show details for the POST /api/saved_objects/_find endpoint."
- "Execute a custom API request for /api/status."
- "Get a list of all dashboards in Kibana."
- "Query API endpoints related to endpoint events."
- "List all case-related API endpoints."
- "Create a new case in Kibana."
- "Create a new dashboard in Kibana."
Claude Desktop 中的兩種提示模式
當與 Claude Desktop 一起使用此服務器時,支持兩種不同的提示交互模式:
1. 基於工具的提示模式
- 工作原理:Claude Desktop 可以直接調用服務器工具(如
get_status、execute_api、search_kibana_api_paths 等)來回答你的問題或執行操作。
- 適用人群:希望獲得對話式、引導式體驗的用戶。服務器將自動搜索、執行和解釋 Kibana API。
- 示例:"Show all Kibana API endpoints related to saved objects."
- 測試提示:在 Claude Desktop 中選擇
kibana-tool-expert 提示進行集成測試,然後開始使用。
2. 基於資源的提示模式
- 工作原理:Claude Desktop 通過資源 URI(如
kibana-api://paths 或 kibana-api://path/GET/%2Fapi%2Fstatus)與服務器交互,服務器返回結構化數據供 Claude 解析。
- 適用人群:高級用戶、僅支持資源訪問的 MCP 客戶端或需要原始 API 元數據的編程場景。
- 示例:"Get resource kibana-api://paths?search=dashboard"
注意:resources 中的兩個端點(kibana-api://paths 和 kibana-api://path/{method}/{encoded_path})有對應的基礎工具(list_all_kibana_api_paths、get_kibana_api_detail)。這種設計確保了與無法智能選擇多個資源的 MCP 客戶端的兼容性,使 Claude Desktop 等工具更容易與 Kibana 交互。
提示:大多數用戶建議使用工具模式以獲得更自然、強大的體驗;資源模式為高級和兼容性用例提供了最大的靈活性。
📚 詳細文檔
目錄結構
├── index.ts # 服務器入口點
├── src/
│ ├── types.ts # 類型定義和模式
│ ├── base-tools.ts # 工具註冊和 API 邏輯
│ ├── prompts.ts # 提示註冊(專家和資源助手)
│ └── resources.ts # 資源註冊(API 路徑/URI)
├── 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_objects
kibana-api://path/GET/%2Fapi%2Fstatus
工具
| 工具名稱 |
描述 |
輸入參數 |
get_status |
獲取 Kibana 服務器的當前狀態 |
無 |
execute_api |
執行自定義 Kibana API 請求 |
method (GET/POST/PUT/DELETE)、path (字符串)、body (可選)、params (可選) |
search_kibana_api_paths |
按關鍵字搜索 Kibana API 端點 |
search (字符串) |
list_all_kibana_api_paths |
列出所有 Kibana API 端點 |
無 |
get_kibana_api_detail |
獲取特定 Kibana API 端點的詳細信息 |
method (字符串)、path (字符串) |
提示
| 提示名稱 |
描述 |
kibana-tool-expert |
工具專家模式(強烈建議在 Claude Desktop 中使用),支持通過工具對 Kibana API 進行智能分析、搜索、執行和解釋。推薦大多數用戶使用。 |
kibana-resource-helper |
資源助手模式,指導如何通過資源 URI 訪問和使用 Kibana API 信息。適用於僅支持資源訪問或需要原始 API 元數據的客戶端。 |
配置
通過環境變量配置服務器:
| 變量名稱 |
描述 |
是否必需 |
KIBANA_URL |
Kibana 服務器地址(如 http://localhost:5601) |
是 |
KIBANA_USERNAME |
Kibana 用戶名 |
是 |
KIBANA_PASSWORD |
Kibana 密碼 |
是 |
KIBANA_CA_CERT |
CA 證書路徑(可選,用於 SSL 驗證) |
否 |
KIBANA_TIMEOUT |
請求超時時間(毫秒,默認 30000) |
否 |
KIBANA_MAX_RETRIES |
最大請求重試次數(默認 3) |
否 |
NODE_TLS_REJECT_UNAUTHORIZED |
設置為 0 以禁用 SSL 證書驗證(謹慎使用) |
否 |
🔧 技術細節
由於 MCP 服務器通過 stdio 進行通信,調試可能不太方便。建議使用 MCP Inspector:
npm run inspector
啟動後,Inspector 將提供一個可通過瀏覽器訪問的調試工具 URL。
📄 許可證
本項目採用 Apache License 2.0 許可。詳情請參閱 LICENSE 文件。
🔍 故障排除
- 檢查 MCP 配置是否正確
- 確保 Kibana 地址可訪問
- 驗證認證憑據是否具有足夠的權限
- 如果使用自定義 CA,確保證書路徑正確且可讀
- 如果使用
NODE_TLS_REJECT_UNAUTHORIZED=0,請注意安全風險
- 檢查終端輸出的錯誤消息