article
README
🚀 Grafana-Loki MCP 服务器
Grafana-Loki MCP 服务器是一个基于 FastMCP 的服务器,它允许用户通过 Grafana 对 Loki 日志进行查询操作,为日志管理和分析提供了便利。
🚀 快速开始
在使用 Grafana-Loki MCP 服务器之前,需要进行相应的配置。以下是 MCP 服务器的配置示例:
{
"mcpServers": {
"loki": {
"command": "uvx",
"args": [
"grafana-loki-mcp",
"-u",
"GRAFANA_URL",
"-k",
"GRAFANA_API_KEY"
]
}
}
}
GRAFANA_URL:您的 Grafana 实例 URL。GRAFANA_API_KEY:具备相应权限的 Grafana API 密钥。
✨ 主要特性
- 日志查询:支持对 Loki 日志进行查询操作。
- 标签与值获取:可以获取日志中的标签和对应的值。
- 结果格式化:支持将查询结果格式化为文本、JSON 和 Markdown 三种形式。
- 双协议支持:支持
stdio和SSE两种传输协议。
📦 安装指南
使用 pip 安装
pip install grafana-loki-mcp
开发环境安装
- 克隆仓库:
git clone https://github.com/tumf/grafana-loki-mcp.git
cd grafana-loki-mcp
- 安装依赖项:
pip install -r requirements.txt
- 运行测试:
python -m pytest tests/
💻 使用示例
基础用法
环境变量设置
export GRAFANA_URL="http://localhost:3000"
export GRAFANA_API_KEY="your_api_key_here"
命令行启动服务器
grafana-loki-mcp --config config.yaml
示例配置文件 config.yaml
mcpServers:
loki:
command: uvx
args:
- grafana-loki-mcp
- -u
- http://localhost:3000
- -k
- your_api_key_here
高级用法
示例代码
import asyncio
from pygql import client
async def main():
# 初始化客户端
cli = await client("http://localhost:8090")
# 查询日志
results = await cli.call(
"query_loki",
{
"query": '{app="my-app"} |= "error"',
"limit": 50,
"max_per_line": 100,
"start": "now-6h",
"end": "now"
}
)
# 格式化结果
formatted = await cli.call(
"format_loki_results",
{
"results": results,
"format_type": "markdown",
"max_per_line": 100
}
)
print(formatted)
asyncio.run(main())
📚 详细文档
可用工具
查询日志 (query_loki)
{
"query": "{app=\"my-app\"} |= \"error\"",
"limit": 50,
"max_per_line": 100,
"start": "now-6h",
"end": "now"
}
获取标签 (get_loki_labels)
{
"query": "{__name__}"
}
格式化结果 (format_loki_results)
{
"results": "...",
"format_type": "markdown",
"max_per_line": 100
}
开发相关
测试
运行测试套件:
pytest tests/ -v
代码规范
使用以下工具确保代码规范:
文档查看
查看 官方文档 了解详细信息。
📄 许可证
本项目遵循 MIT 许可证,具体内容请参见 LICENSE 文件。
微信扫一扫