使用说明
Kibana的MCP服务器
MCP服务器使用FastMCP和Pydantic为Kibana REST API端点提供工具。
特性
🔐 认证
- 承载令牌身份验证:内置FastMCP令牌验证
- API关键支持:使用安全访问
Authorization: Bearer <token>头球 - Kibana集成:支持
KIBANA_API_KEY用于Kibana身份验证
🌐 空间支持
所有工具都支持可选 space 针对特定Kibana空间的参数(例如。, default, marketing).
📊 数据视图
get_all_data_views(space)-获取所有数据视图get_data_view(id, space)-获取特定数据视图create_data_view(data_view, override, space)-创建新的数据视图update_data_view(id, data_view, override, space)-更新数据视图
💾 保存的对象
find_saved_objects(..., space)-使用过滤器搜索已保存的对象create_saved_object(type, attributes, id, references, space)-创建已保存的对象get_saved_object(type, id, space)-获取已保存的对象update_saved_object(type, id, attributes, references, space)-更新已保存的对象
🏢 空间管理
get_all_spaces()-获取所有Kibana空间get_space(id)-获取特定空间create_space(id, name, ...)-创建新空间update_space(id, name, ...)-更新空间
快速开始
使用Docker Compose(推荐)
- 复制环境文件:
cp .env.example .env
- 编辑
.env根据您的配置:
KIBANA_URL=https://your-kibana-instance.com
KIBANA_API_KEY=your-kibana-api-key
# MCP_API_KEY=optional-bearer-token # If not set, auto-generated on startup
- 启动服务:
docker compose up -d
设置包括:
- MCP Kibana服务器:内置令牌验证的直接服务
- 验证设置:
# Check server logs for auto-generated token
docker compose logs mcp-server
# Test 1: Without auth (should return 401)
curl http://localhost:8080/mcp
# Expected: HTTP/1.1 401 Unauthorized
# Test 2: With bearer token from logs (should return 200)
curl -H "Authorization: Bearer <token-from-logs>" http://localhost:8080/mcp
# Expected: HTTP/1.1 200 OK
- 查看日志:
# View server logs
docker compose logs -f mcp-server
建筑
Client (with Bearer token)
↓
MCP Kibana Server (/mcp endpoint)
↓
Kibana API
地方发展
没有Docker
- 安装依赖项:
pip install uv
uv sync
- 创建
.env文件:
KIBANA_URL=http://localhost:5601
KIBANA_API_KEY=your-api-key-here
- 在stdio模式下运行 (本地开发不需要身份验证):
python -m mcp_server_kibana.server stdio
与MCP检查员一起
npx @modelcontextprotocol/inspector
然后连接到:
- 使用Docker:
http://localhost:8080/mcp(要求Authorization: Bearer <token>头球 - 本地标准:使用检查器的stdio连接模式
生产部署
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
KIBANA_URL |
是 | 您的Kibana实例URL |
KIBANA_API_KEY |
是 | 用于Kibana身份验证的API密钥 |
MCP_API_KEY |
否 | 承载令牌(如果未设置,则自动生成) |
LOG_LEVEL |
否 | 日志记录级别(默认值:INFO) |
部署模式
1.生产(Docker Compose):
- 带有/mcp端点的HTTP服务器
- 自动生成的承载令牌
- 内置身份验证
2.发展(地方):
- 直接输入模式(无身份验证)
- 带有自动生成令牌的HTTP模式
- MCP检查器兼容
3.ASGI生产:
- 与Uvicorn/Gunicorn一起使用
uvicorn mcp_server_kibana.server:app- 全面支持ASGI中间件
安全最佳实践
-
使用强API密钥:令牌在启动时自动安全生成
-
定期旋转按键:更新
MCP_API_KEY定期 -
在生产环境中使用HTTPS:使用SSL在反向代理后部署
HTTPS配置
对于生产HTTPS,部署在反向代理(nginx、Caddy等)后面,该代理处理SSL终止并将请求转发到端口8080上的MCP服务器。
客户端配置
克劳德桌面
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"kibana": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer <token-from-server-logs>"
}
}
}
}
游标/其他MCP客户端
配置为:
- 端点:
http://localhost:8080/mcp - 头球:
Authorization: Bearer <token-from-server-logs>
Docker管理
常用命令
# Start services
docker compose up -d
# Stop services
docker compose down
# Restart services
docker compose restart
# View running containers
docker compose ps
# View logs
docker compose logs -f
# Rebuild and restart
docker compose up -d --build
# Remove all containers and volumes
docker compose down -v
测试
认证测试
# Test 1: No authentication (should fail with 401)
curl -v http://localhost:8080/mcp
# Expected: HTTP/1.1 401 Unauthorized
# Test 2: Valid bearer token (should succeed with 200)
curl -v -H "Authorization: Bearer <token-from-logs>" http://localhost:8080/mcp
# Expected: HTTP/1.1 200 OK
# Test 3: Invalid bearer token (should fail with 401)
curl -v -H "Authorization: Bearer wrong-key" http://localhost:8080/mcp
# Expected: HTTP/1.1 401 Unauthorized
MCP协议测试
# Initialize session (requires auth)
curl -X POST "http://localhost:8080/mcp" \
-H "Authorization: Bearer <token-from-logs>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":1}'
故障排除
连接被拒绝
症状: curl: (7) Failed to connect
解决方案:
- 检查容器是否正在运行:
docker compose ps - 验证端口8080是否未使用:
lsof -i :8080或netstat -tuln | grep 8080 - 检查Docker日志:
docker compose logs -f - 重新启动服务:
docker compose restart
401未经授权
症状: HTTP/1.1 401 Unauthorized
解决方案:
- 验证
Authorization: Bearer <token>请求中包含标头 - 检查令牌值是否匹配
MCP_API_KEY在.env文件 - 查看服务器日志以了解身份验证失败:
docker compose logs mcp-server - 确保令牌值中没有多余的空格
Kibana连接问题
症状:调用Kibana工具时出错
解决方案:
- 验证
KIBANA_URL正确且可访问 - 测试Kibana API密钥:
curl -H "Authorization: ApiKey YOUR_KEY" https://your-kibana/api/status - 确保
KIBANA_API_KEY具有适当的权限 - 检查MCP服务器日志:
docker compose logs mcp-server - 验证从容器到Kibana的网络连接
容器无法启动
症状:集装箱立即出口
解决方案:
- 检查日志:
docker compose logs mcp-server - 验证中的环境变量
.env - 确保中没有语法错误
docker-compose.yml - 尝试重建:
docker compose up -d --build
端口已在使用中
症状: Bind for 0.0.0.0:8080 failed: port is already allocated
解决方案:
- 停止冲突服务:
docker ps和docker stop <container> - 更改端口
docker-compose.yml(例如。,8081:8080) - 使用端口终止进程:
lsof -ti:8080 | xargs kill -9
ASGI生产部署
# Install production server
pip install uvicorn[standard]
# Run with Uvicorn
uvicorn mcp_server_kibana.server:app --host 0.0.0.0 --port 8080
# Run with Gunicorn
gunicorn mcp_server_kibana.server:app -k uvicorn.workers.UvicornWorker
项目结构
mcp_server_kibana/
├── src/mcp_server_kibana/
│ ├── clients/ # Kibana HTTP client
│ ├── config/ # Configuration settings
│ ├── tools/ # MCP tool implementations
│ ├── utils/ # Utility modules
│ ├── models.py # Pydantic models
│ └── server.py # Main server + ASGI app
├── Dockerfile # Docker configuration
├── docker-compose.yml # Container setup
├── .env.example # Environment template
└── README.md # This file
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
Apache 2.0