feat: add mcp-servers/**
This commit is contained in:
32
mcp-servers/grafana/.env.example
Normal file
32
mcp-servers/grafana/.env.example
Normal file
@@ -0,0 +1,32 @@
|
||||
# MCP Grafana service version
|
||||
MCP_GRAFANA_VERSION=latest
|
||||
|
||||
# Grafana version
|
||||
GRAFANA_VERSION=latest
|
||||
|
||||
# MCP Grafana service port
|
||||
MCP_GRAFANA_PORT_OVERRIDE=8000
|
||||
|
||||
# Grafana port
|
||||
GRAFANA_PORT_OVERRIDE=3000
|
||||
|
||||
# Grafana URL
|
||||
GRAFANA_URL=http://grafana:3000
|
||||
|
||||
# Grafana API key (required)
|
||||
GRAFANA_API_KEY=
|
||||
|
||||
# Grafana admin username
|
||||
GRAFANA_ADMIN_USER=admin
|
||||
|
||||
# Grafana admin password
|
||||
GRAFANA_ADMIN_PASSWORD=admin
|
||||
|
||||
# Grafana plugins to install (comma-separated)
|
||||
GRAFANA_INSTALL_PLUGINS=
|
||||
|
||||
# Grafana root URL
|
||||
GRAFANA_ROOT_URL=http://localhost:3000
|
||||
|
||||
# Timezone
|
||||
TZ=UTC
|
||||
118
mcp-servers/grafana/README.md
Normal file
118
mcp-servers/grafana/README.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Grafana MCP Server
|
||||
|
||||
Grafana MCP Server provides integration with Grafana monitoring and visualization platform through the Model Context Protocol.
|
||||
|
||||
## Features
|
||||
|
||||
- 📊 **Dashboard Management** - Create and manage dashboards
|
||||
- 📈 **Query Datasources** - Query data sources
|
||||
- 🔍 **Search Dashboards** - Search dashboards
|
||||
- 🚨 **Incident Investigation** - Investigate incidents
|
||||
- 📉 **Metrics Analysis** - Analyze metrics
|
||||
- 🎨 **Visualization** - Data visualization
|
||||
|
||||
## Architecture
|
||||
|
||||
The service consists of two containers:
|
||||
|
||||
- **mcp-grafana**: MCP server providing AI interaction interface with Grafana
|
||||
- **grafana**: Grafana instance
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Default | Description |
|
||||
| --------------------------- | ----------------------- | ---------------------------------------- |
|
||||
| `MCP_GRAFANA_VERSION` | `latest` | MCP Grafana image version |
|
||||
| `GRAFANA_VERSION` | `latest` | Grafana version |
|
||||
| `MCP_GRAFANA_PORT_OVERRIDE` | `8000` | MCP service port |
|
||||
| `GRAFANA_PORT_OVERRIDE` | `3000` | Grafana port |
|
||||
| `GRAFANA_URL` | `http://grafana:3000` | Grafana instance URL |
|
||||
| `GRAFANA_API_KEY` | - | Grafana API key (required) |
|
||||
| `GRAFANA_ADMIN_USER` | `admin` | Admin username |
|
||||
| `GRAFANA_ADMIN_PASSWORD` | `admin` | Admin password (⚠️ change in production!) |
|
||||
| `GRAFANA_INSTALL_PLUGINS` | - | Plugins to install (comma-separated) |
|
||||
| `GRAFANA_ROOT_URL` | `http://localhost:3000` | Grafana root URL |
|
||||
| `TZ` | `UTC` | Timezone |
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Configure Environment
|
||||
|
||||
Create a `.env` file:
|
||||
|
||||
```env
|
||||
MCP_GRAFANA_VERSION=latest
|
||||
GRAFANA_VERSION=latest
|
||||
MCP_GRAFANA_PORT_OVERRIDE=8000
|
||||
GRAFANA_PORT_OVERRIDE=3000
|
||||
GRAFANA_ADMIN_USER=admin
|
||||
GRAFANA_ADMIN_PASSWORD=your_secure_password
|
||||
GRAFANA_ROOT_URL=http://localhost:3000
|
||||
TZ=Asia/Shanghai
|
||||
```
|
||||
|
||||
### 2. Start Services
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 3. Get API Key
|
||||
|
||||
1. Visit Grafana: <http://localhost:3000>
|
||||
2. Login with admin credentials
|
||||
3. Navigate to **Configuration** → **API Keys**
|
||||
4. Create a new API key
|
||||
5. Add the key to `.env` file: `GRAFANA_API_KEY=your_key_here`
|
||||
6. Restart mcp-grafana service: `docker compose restart mcp-grafana`
|
||||
|
||||
### 4. Verify Services
|
||||
|
||||
```bash
|
||||
# Verify MCP service
|
||||
curl http://localhost:8000/health
|
||||
|
||||
# Verify Grafana service
|
||||
curl http://localhost:3000/api/health
|
||||
```
|
||||
|
||||
## Resource Requirements
|
||||
|
||||
- **MCP Service**: 128MB-512MB memory, 0.25-1.0 CPU
|
||||
- **Grafana**: 256MB-1GB memory, 0.5-2.0 CPU
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
1. **Dashboard Search** - Find dashboards using natural language
|
||||
2. **Data Queries** - Query metric data from data sources
|
||||
3. **Alert Management** - View and manage alert rules
|
||||
4. **Visualization Creation** - Create new visualization panels
|
||||
5. **Incident Analysis** - Investigate and analyze monitoring events
|
||||
|
||||
## Security Recommendations
|
||||
|
||||
⚠️ **Important**: In production environments:
|
||||
|
||||
1. Change default admin password
|
||||
2. Use strong passwords and secure API keys
|
||||
3. Enable HTTPS/TLS encryption
|
||||
4. Restrict network access
|
||||
5. Rotate API keys regularly
|
||||
6. Set appropriate user permissions
|
||||
|
||||
## Data Persistence
|
||||
|
||||
- `grafana_data`: Grafana data directory
|
||||
- `grafana_config`: Grafana configuration directory
|
||||
- `grafana_logs`: Grafana logs directory
|
||||
|
||||
## References
|
||||
|
||||
- [Grafana Official Site](https://grafana.com/)
|
||||
- [Grafana API Documentation](https://grafana.com/docs/grafana/latest/developers/http_api/)
|
||||
- [MCP Documentation](https://modelcontextprotocol.io/)
|
||||
- [Docker Hub - grafana/grafana](https://hub.docker.com/r/grafana/grafana)
|
||||
|
||||
## License
|
||||
|
||||
MIT License
|
||||
118
mcp-servers/grafana/README.zh.md
Normal file
118
mcp-servers/grafana/README.zh.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Grafana MCP Server
|
||||
|
||||
Grafana MCP Server 提供通过模型上下文协议(MCP)与 Grafana 监控和可视化平台集成的能力。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 📊 **仪表板管理** - 创建和管理仪表板
|
||||
- 📈 **查询数据源** - 查询数据源
|
||||
- 🔍 **搜索仪表板** - 搜索仪表板
|
||||
- 🚨 **事件调查** - 调查事件
|
||||
- 📉 **指标分析** - 分析指标
|
||||
- 🎨 **可视化** - 数据可视化
|
||||
|
||||
## 架构
|
||||
|
||||
该服务包含两个容器:
|
||||
|
||||
- **mcp-grafana**:MCP 服务器,提供与 Grafana 的 AI 交互接口
|
||||
- **grafana**:Grafana 实例
|
||||
|
||||
## 环境变量
|
||||
|
||||
| 变量 | 默认值 | 说明 |
|
||||
| --------------------------- | ----------------------- | -------------------------------- |
|
||||
| `MCP_GRAFANA_VERSION` | `latest` | MCP Grafana 镜像版本 |
|
||||
| `GRAFANA_VERSION` | `latest` | Grafana 版本 |
|
||||
| `MCP_GRAFANA_PORT_OVERRIDE` | `8000` | MCP 服务端口 |
|
||||
| `GRAFANA_PORT_OVERRIDE` | `3000` | Grafana 端口 |
|
||||
| `GRAFANA_URL` | `http://grafana:3000` | Grafana 实例 URL |
|
||||
| `GRAFANA_API_KEY` | - | Grafana API 密钥(必需) |
|
||||
| `GRAFANA_ADMIN_USER` | `admin` | 管理员用户名 |
|
||||
| `GRAFANA_ADMIN_PASSWORD` | `admin` | 管理员密码(⚠️ 生产环境请修改!) |
|
||||
| `GRAFANA_INSTALL_PLUGINS` | - | 要安装的插件(逗号分隔) |
|
||||
| `GRAFANA_ROOT_URL` | `http://localhost:3000` | Grafana 根 URL |
|
||||
| `TZ` | `UTC` | 时区 |
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 配置环境
|
||||
|
||||
创建 `.env` 文件:
|
||||
|
||||
```env
|
||||
MCP_GRAFANA_VERSION=latest
|
||||
GRAFANA_VERSION=latest
|
||||
MCP_GRAFANA_PORT_OVERRIDE=8000
|
||||
GRAFANA_PORT_OVERRIDE=3000
|
||||
GRAFANA_ADMIN_USER=admin
|
||||
GRAFANA_ADMIN_PASSWORD=your_secure_password
|
||||
GRAFANA_ROOT_URL=http://localhost:3000
|
||||
TZ=Asia/Shanghai
|
||||
```
|
||||
|
||||
### 2. 启动服务
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 3. 获取 API 密钥
|
||||
|
||||
1. 访问 Grafana:<http://localhost:3000>
|
||||
2. 使用管理员凭据登录
|
||||
3. 导航到 **Configuration** → **API Keys**
|
||||
4. 创建新的 API 密钥
|
||||
5. 将密钥添加到 `.env` 文件:`GRAFANA_API_KEY=your_key_here`
|
||||
6. 重启 mcp-grafana 服务:`docker compose restart mcp-grafana`
|
||||
|
||||
### 4. 验证服务
|
||||
|
||||
```bash
|
||||
# 验证 MCP 服务
|
||||
curl http://localhost:8000/health
|
||||
|
||||
# 验证 Grafana 服务
|
||||
curl http://localhost:3000/api/health
|
||||
```
|
||||
|
||||
## 资源需求
|
||||
|
||||
- **MCP 服务**:128MB-512MB 内存,0.25-1.0 CPU
|
||||
- **Grafana**:256MB-1GB 内存,0.5-2.0 CPU
|
||||
|
||||
## 常见使用场景
|
||||
|
||||
1. **仪表板搜索** - 使用自然语言查找仪表板
|
||||
2. **数据查询** - 从数据源查询指标数据
|
||||
3. **告警管理** - 查看和管理告警规则
|
||||
4. **可视化创建** - 创建新的可视化面板
|
||||
5. **事件分析** - 调查和分析监控事件
|
||||
|
||||
## 安全建议
|
||||
|
||||
⚠️ **重要**:在生产环境中:
|
||||
|
||||
1. 修改默认管理员密码
|
||||
2. 使用强密码和安全的 API 密钥
|
||||
3. 启用 HTTPS/TLS 加密
|
||||
4. 限制网络访问
|
||||
5. 定期轮换 API 密钥
|
||||
6. 设置适当的用户权限
|
||||
|
||||
## 数据持久化
|
||||
|
||||
- `grafana_data`:Grafana 数据目录
|
||||
- `grafana_config`:Grafana 配置目录
|
||||
- `grafana_logs`:Grafana 日志目录
|
||||
|
||||
## 参考链接
|
||||
|
||||
- [Grafana 官方网站](https://grafana.com/)
|
||||
- [Grafana API 文档](https://grafana.com/docs/grafana/latest/developers/http_api/)
|
||||
- [MCP 文档](https://modelcontextprotocol.io/)
|
||||
- [Docker Hub - grafana/grafana](https://hub.docker.com/r/grafana/grafana)
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
74
mcp-servers/grafana/docker-compose.yaml
Normal file
74
mcp-servers/grafana/docker-compose.yaml
Normal file
@@ -0,0 +1,74 @@
|
||||
x-default: &default
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 100m
|
||||
max-file: "3"
|
||||
|
||||
services:
|
||||
mcp-grafana:
|
||||
<<: *default
|
||||
image: mcp/grafana:${MCP_GRAFANA_VERSION:-latest}
|
||||
environment:
|
||||
- GRAFANA_URL=${GRAFANA_URL:-http://grafana:3000}
|
||||
- GRAFANA_API_KEY=${GRAFANA_API_KEY}
|
||||
- MCP_HOST=0.0.0.0
|
||||
- TZ=${TZ:-UTC}
|
||||
ports:
|
||||
- "${MCP_GRAFANA_PORT_OVERRIDE:-8000}:8000"
|
||||
depends_on:
|
||||
grafana:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8000/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.00'
|
||||
memory: 512M
|
||||
reservations:
|
||||
cpus: '0.25'
|
||||
memory: 128M
|
||||
|
||||
grafana:
|
||||
<<: *default
|
||||
image: grafana/grafana:${GRAFANA_VERSION:-latest}
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
|
||||
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
|
||||
- GF_INSTALL_PLUGINS=${GRAFANA_INSTALL_PLUGINS:-}
|
||||
- GF_SERVER_ROOT_URL=${GRAFANA_ROOT_URL:-http://localhost:3000}
|
||||
- TZ=${TZ:-UTC}
|
||||
ports:
|
||||
- "${GRAFANA_PORT_OVERRIDE:-3000}:3000"
|
||||
volumes:
|
||||
- grafana_data:/var/lib/grafana
|
||||
- grafana_config:/etc/grafana
|
||||
- grafana_logs:/var/log/grafana
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.00'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 256M
|
||||
|
||||
volumes:
|
||||
grafana_data:
|
||||
driver: local
|
||||
grafana_config:
|
||||
driver: local
|
||||
grafana_logs:
|
||||
driver: local
|
||||
Reference in New Issue
Block a user