mcpField
M
MCP Server for Perses

MCP Server for Perses

本地服务
github.com/perses数据与分析323 周前更新

关于 MCP Server for Perses

MCP Server for Perses 是一个本地运行的 MCP 服务,使 OpenCode、Claude Desktop、VS Code、Cursor 等 LLM 宿主能够以标准方式操作 Perses 应用。适合使用 Perses 管理仪表盘与数据源的团队。

主要功能

  1. 01支持 stdio 与 Streamable HTTP 两种传输模式
  2. 02管理项目、仪表盘与临时仪表盘
  3. 03管理全局与项目级数据源并可代理查询
  4. 04可通过只读模式限制写操作
  5. 05支持基本认证与 Bearer 令牌认证

适用场景

  1. 01在编辑器或 AI 客户端中查询与编辑 Perses 仪表盘
  2. 02通过 Perses 代理向数据源后端发送查询请求
  3. 03将 Grafana 仪表盘迁移到 Perses

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露用于管理 Perses 项目、仪表盘、数据源、角色等资源的工具。部分资源可通过 resources 配置项选择性注册。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Perses

Perses 的 MCP 服务

概述

Perses MCP 服务是一个本地 Model Context Protocol (MCP) 服务,可让大模型宿主(OpenCode、Claude Desktop、VS Code、Cursor)以标准化方式与 Perses 应用交互。

演示

OpenCode

https://github.com/user-attachments/assets/03706209-abef-47f2-8067-67c723537750

入门

先决条件
  • 一个正在运行的 Perses 实例
  • MCP 服务二进制文件——从发布页面下载,解压并赋予其可执行权限:
    chmod +x /path/to/perses-mcp-server
    
1. 创建配置文件

创建一个 YAML 配置文件(例如 perses-mcp-config.yaml)。有关各身份验证方法的详情,请参阅身份验证。

# MCP transport mode: "stdio" or "http"
transport: stdio

# Address to listen on for HTTP transport (e.g., ":8000")
listen_address: ":8000"

# Restrict the server to read-only operations
read_only: false

# Comma-separated list of resources to register (if empty, all resources are registered)
resources: ""

# Perses server connection configuration
perses_server:
  url: "http://localhost:8080"

  # Authentication (choose one method):
  # It is recommended to use environment variables for sensitive values.
  # Refer the "Environment Variables" section.

  # Option 1: Basic authentication (login/password)
  # native_auth:
  #   login: "admin"
  #   password: "password"

  # Option 2: Bearer token (e.g., from `percli whoami --show-token`)
  # authorization:
  #   type: Bearer
  #   credentials: "<YOUR_TOKEN>"
  #   # credentials_file: "/path/to/token/file"  # Alternative: read token from file

  # TLS configuration (optional)
  # tls_config:
  #   ca_file: "/path/to/ca.pem"
  #   insecure_skip_verify: false

说明

配置值按以下顺序解析(后者优先):内置默认值 < YAML 配置文件 < 环境变量。

可用资源

resources 字段接受以下资源名称(不区分大小写,以逗号分隔):

资源说明
dashboard仪表板管理工具
ephemeraldashboard临时仪表板管理工具
project项目管理工具
datasource项目级数据源工具
globaldatasource全局数据源工具
role项目级角色工具
globalrole全局角色工具
rolebinding项目级角色绑定工具
globalrolebinding全局角色绑定工具
variable项目级变量工具
globalvariable全局变量工具
plugin插件工具
migrateGrafana → Perses 仪表板迁移工具
环境变量

YAML 文件中的配置值可以使用带有 PERMCP_ 前缀的环境变量覆盖。变量名由 YAML 键全部转为大写,并用 _ 连接嵌套键生成。

例如,YAML 路径 perses_server.native_auth.password 会转换为 PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORD。

这对于密码和令牌等敏感值尤其有用,可避免将它们存储在配置文件中。

环境变量配置路径说明
PERMCP_TRANSPORTtransport传输模式
PERMCP_LISTEN_ADDRESSlisten_addressHTTP 监听地址
PERMCP_READ_ONLYread_only只读模式
PERMCP_RESOURCESresources要注册的资源
PERMCP_PERSES_SERVER_URLperses_server.urlPerses 服务 URL
PERMCP_PERSES_SERVER_NATIVE_AUTH_LOGINperses_server.native_auth.login基本身份验证用户名
PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORDperses_server.native_auth.password基本身份验证密码
PERMCP_PERSES_SERVER_AUTHORIZATION_TYPEperses_server.authorization.type授权类型(例如 Bearer)
PERMCP_PERSES_SERVER_AUTHORIZATION_CREDENTIALSperses_server.authorization.credentials授权令牌

有关环境变量如何覆盖配置文件的详情,请参阅 Perses 配置文档。

2. 将 MCP 服务添加到客户端

标准配置适用于大多数客户端:

{
  "mcpServers": {
    "perses-mcp": {
      "command": "<ABSOLUTE_PATH_TO_PERSES_MCP_BINARY>",
      "args": [
        "--config",
        "<ABSOLUTE_PATH_TO_CONFIG_YAML>"
      ]
    }
  }
}

提示

请将敏感的身份验证值作为环境变量传递,而不是存储在配置文件中:

基本身份验证:PERMCP_PERSES_SERVER_NATIVE_AUTH_LOGIN 和 PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORD

Bearer 令牌:PERMCP_PERSES_SERVER_AUTHORIZATION_CREDENTIALS

完整列表请参阅环境变量。

OpenCode

将以下内容添加到 mcp 下的 OpenCode 配置中。更多详情请参阅 OpenCode MCP 文档。

{
  "mcp": {
    "perses": {
      "command": [
        "<ABSOLUTE_PATH_TO_PERSES_MCP_BINARY>",
        "--config",
        "<ABSOLUTE_PATH_TO_CONFIG_YAML>"
      ],
      "environment": {
        "PERMCP_PERSES_SERVER_NATIVE_AUTH_LOGIN": "{env:PERMCP_PERSES_SERVER_NATIVE_AUTH_LOGIN}",
        "PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORD": "{env:PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORD}"
      },
      "enabled": true,
      "type": "local"
    }
  }
}
Claude Code

使用 Claude Code CLI 添加 Perses MCP 服务。更多详情请参阅 Claude Code MCP 文档。

claude mcp add --transport stdio \
  --env PERMCP_PERSES_SERVER_NATIVE_AUTH_LOGIN=<YOUR_LOGIN> \
  --env PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORD=<YOUR_PASSWORD> \
  perses-mcp -- <ABSOLUTE_PATH_TO_PERSES_MCP_BINARY> --config <ABSOLUTE_PATH_TO_CONFIG_YAML>
Claude Desktop

创建或编辑 Claude Desktop 配置文件,路径如下:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json

也可以通过 Claude > Settings > Developer > Edit Config 打开此文件。

{
  "mcpServers": {
    "perses-mcp": {
      "command": "<ABSOLUTE_PATH_TO_PERSES_MCP_BINARY>",
      "args": [
        "--config",
        "<ABSOLUTE_PATH_TO_CONFIG_YAML>"
      ],
      "env": {
        "PERMCP_PERSES_SERVER_NATIVE_AUTH_LOGIN": "<YOUR_LOGIN>",
        "PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORD": "<YOUR_PASSWORD>"
      }
    }
  }
}

重启 Claude Desktop 以使更改生效。

VS Code

将以下内容添加到 VS Code MCP 配置文件中。更多详情请参阅 VS Code MCP 文档。

{
  "servers": {
    "perses-mcp": {
      "command": "<ABSOLUTE_PATH_TO_PERSES_MCP_BINARY>",
      "args": [
        "--config",
        "<ABSOLUTE_PATH_TO_CONFIG_YAML>"
      ],
      "env": {
        "PERMCP_PERSES_SERVER_NATIVE_AUTH_LOGIN": "<YOUR_LOGIN>",
        "PERMCP_PERSES_SERVER_NATIVE_AUTH_PASSWORD": "<YOUR_PASSWORD>"
      }
    }
  }
}

Streamable HTTP 模式

Streamable HTTP 模式允许 MCP 服务通过 HTTP 与大模型宿主通信。这适用于远程托管,或允许多个客户端连接到同一个服务实例。

更多详情请参阅 MCP 协议规范文档。

在配置文件中设置 transport: http:

transport: http
listen_address: ":8000"
perses_server:
  url: "http://localhost:8080"
  native_auth:
    login: "admin"
    password: "password"

然后将 MCP 客户端指向 HTTP 端点:

VS Code
{
  "servers": {
    "perses-http": {
      "type": "http",
      "url": "http://localhost:8000/mcp"
    }
  }
}

身份验证

有两种方式可以通过 Perses 实例对 MCP 服务进行身份验证。在配置文件的 perses_server 下添加相应配置块。

基本身份验证(用户名/密码)

直接使用 Perses 用户名和密码:

native_auth:
  login: "your-username"
  password: "your-password"
Bearer 令牌(通过 percli)
  1. 安装 percli 并登录 Perses 服务:
percli login <PERSES_SERVER_URL>

例如,percli login https://demo.perses.dev

  1. 登录成功后,获取令牌:
percli whoami --show-token
  1. 在配置文件中使用该令牌:
authorization:
  type: Bearer
  credentials: "<YOUR_TOKEN>"

警告

Bearer 令牌会根据 Perses 服务的 access_token_ttl 设置自动过期(默认值:15 分钟)。你可以在 Perses 应用的配置中更改此设置。

命令行用法

perses-mcp-server --config /path/to/config.yaml
标志默认值描述
--config""YAML 配置文件的路径
-log.levelinfo日志级别(选项:panic、fatal、error、warning、info、debug、trace)
-log.formattext日志格式(选项:text、json)
-log.method-tracefalse在日志中将调用方法作为字段包含

工具

说明


以只读模式运行时(配置中设为 read_only: true),仅可使用检索信息的工具。只读模式下会禁用所有写入操作(创建、更新、删除)。

项目
工具描述必需参数
perses_list_projects列出所有项目-
perses_get_project_by_name按名称获取项目name
perses_create_project创建新项目project
perses_update_project更新现有项目name
perses_delete_project删除项目name
仪表板
工具描述必需参数
perses_list_dashboards列出指定项目的所有仪表板project
perses_get_dashboard_by_name按名称获取项目中的仪表板project、name
perses_create_dashboard根据项目和仪表板配置创建仪表板project、dashboard
perses_update_dashboard更新项目中的现有仪表板project、dashboard
perses_delete_dashboard从项目中删除仪表板project、name

有关仪表板配置,请参阅 Perses 仪表板

临时仪表板

临时仪表板是带有 TTL(生存时间)的临时仪表板。过期后会自动清理。

工具描述必需参数
perses_list_ephemeral_dashboards列出指定项目的所有临时仪表板project
perses_get_ephemeral_dashboard_by_name按名称获取项目中的临时仪表板project、name
perses_create_ephemeral_dashboard根据项目和仪表板配置创建临时仪表板project、dashboard
perses_update_ephemeral_dashboard更新项目中的现有临时仪表板project、dashboard
perses_delete_ephemeral_dashboard从项目中删除临时仪表板project、name

有关临时仪表板配置,请参阅 Perses 临时仪表板

数据源
工具描述必填参数可选参数
perses_list_global_datasources列出所有全局数据源--
perses_get_global_datasource_by_name按名称获取全局数据源name-
perses_query_global_datasource通过 Perses 代理向全局数据源后端发送 HTTP 请求datasource_namemethod, path, query_params, body, headers
perses_create_global_datasource创建新的全局数据源name, type, urldisplay_name, proxy_type
perses_update_global_datasource更新现有全局数据源name, type, urldisplay_name, proxy_type
perses_delete_global_datasource删除全局数据源name-
perses_list_project_datasources列出指定项目的所有数据源project-
perses_get_project_datasource_by_name按名称获取项目数据源project, name-
perses_query_project_datasource通过 Perses 代理向项目数据源后端发送 HTTP 请求project, datasource_namemethod, path, query_params, body, headers
perses_create_project_datasource在项目中创建新的数据源project, datasource-
perses_update_project_datasource更新项目中的现有数据源project, datasource-
perses_delete_project_datasource从项目中删除数据源project, name-
查询数据源

perses_query_project_datasource 和 perses_query_global_datasource 会通过 Perses 代理将 HTTP 请求转发到已配置的数据源后端。这意味着:

  • 凭据会自动注入 — Perses 中配置的数据源密钥(Bearer 令牌、Basic 认证、OAuth)会在服务端应用;这些凭据绝不会暴露给工具调用方。
  • 会强制执行允许访问的端点 — 只能访问数据源 allowedEndpoints 配置中允许的端点。
  • method 默认为 GET。仅接受 GET 和 POST。
  • path 是相对于数据源的端点路径,例如,Prometheus 使用 /api/v1/query_range,Loki 使用 /loki/api/v1/query_range。
  • query_params 是由键值字符串对组成的对象,会作为查询字符串参数附加。
  • body 是原始字符串正文(JSON 或 application/x-www-form-urlencoded)。提供正文时,Content-Type 默认为 application/json。
  • headers 允许传递额外的请求标头。工具输入始终禁止使用 Authorization 标头;请使用 Perses 密钥进行身份验证。
  • 响应正文上限为 1 MiB,以避免超出大模型上下文限制。

示例 — 通过全局数据源执行 Prometheus 瞬时查询:

{
  "datasource_name": "my-prometheus",
  "method": "POST",
  "path": "/api/v1/query",
  "query_params": {
    "query": "up",
    "time": "2024-01-01T00:00:00Z"
  }
}

示例 — 通过项目数据源执行 Prometheus 范围查询:

{
  "project": "my-project",
  "datasource_name": "my-prometheus",
  "method": "POST",
  "path": "/api/v1/query_range",
  "query_params": {
    "query": "rate(http_requests_total[5m])",
    "start": "2024-01-01T00:00:00Z",
    "end": "2024-01-01T01:00:00Z",
    "step": "60"
  }
}
角色
工具描述必需参数
perses_list_global_roles列出所有全局角色-
perses_get_global_role_by_name按名称获取全局角色name
perses_create_global_role创建新的全局角色name、actions、scopes
perses_update_global_role更新现有全局角色name、actions、scopes
perses_delete_global_role删除全局角色name
perses_list_global_role_bindings列出所有全局角色绑定-
perses_get_global_role_binding_by_name按名称获取全局角色绑定name
perses_create_global_role_binding创建新的全局角色绑定name、role、subjects
perses_update_global_role_binding更新现有全局角色绑定name、role、subjects
perses_delete_global_role_binding删除全局角色绑定name
perses_list_project_roles列出指定项目的所有角色project
perses_get_project_role_by_name按名称获取项目角色project、name
perses_create_project_role创建新的项目角色project、name、actions、scopes
perses_update_project_role更新现有项目角色project、name、actions、scopes
perses_delete_project_role删除项目角色project、name
perses_list_project_role_bindings列出项目的所有角色绑定project
perses_get_project_role_binding_by_name按名称获取项目角色绑定project、name
perses_create_project_role_binding创建新的项目角色绑定project、name、role、subjects
perses_update_project_role_binding更新现有项目角色绑定project、name、role、subjects
perses_delete_project_role_binding删除项目角色绑定project、name
插件
工具描述必填参数
perses_list_plugins列出所有插件-
变量
工具描述必填参数
perses_list_global_variables列出所有全局变量-
perses_get_global_variable_by_name按名称获取全局变量name
perses_create_global_variable创建新的全局变量name、value
perses_update_global_variable更新现有全局变量name、value
perses_delete_global_variable删除全局变量name
perses_list_project_variables列出指定项目的所有变量project
perses_get_project_variable_by_name按名称获取项目变量project、name
perses_create_project_variable创建项目级变量name、project
perses_update_project_variable更新现有项目变量project、name、value
perses_delete_project_variable删除项目变量project、name

本地开发

从源代码构建

如果你想从源代码构建 MCP 服务(用于开发或贡献),请在源代码根目录中运行以下命令:

make build

这会创建一个包含名为 mcp-server 的二进制文件的 bin 目录。复制该二进制文件的绝对路径,以便在 MCP 服务配置中使用。

许可证

代码采用 Apache 2.0 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。