feat: add mcp-servers/**

This commit is contained in:
Sun-ZhenXing
2025-10-23 09:08:07 +08:00
parent ece59b42bf
commit f603ed5db9
57 changed files with 3061 additions and 95 deletions

View 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

View 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

View 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

View 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