Miro MCP服务器

一个独立的模型上下文协议(MCP)服务器,使任何兼容MCP的LLM能够与Miro白板交互。

  • by henqc
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 henqc/miro-mcp

使用说明

Miro MCP服务器

一个独立的模型上下文协议(MCP)服务器,使任何兼容MCP的LLM都能与Miro白板交互

先决条件

  • Python 3.9或更高版本
  • 具有客户端ID和客户端密码的Miro开发人员帐户
  • MCP兼容LLM客户端

设置

  1. 克隆此存储库或导航到项目目录:
cd miro-mcp
  1. 创建虚拟环境:
python -m venv venv
source venv/bin/activate
  1. 安装依赖项:
pip install -r requirements.txt

配置

  1. 创建一个 .env 项目根目录中的文件,其中包含您的Miro凭据:
MIRO_CLIENT_ID=your_client_id_here
MIRO_CLIENT_SECRET=your_client_secret_here
MIRO_REDIRECT_URL=http://localhost:8080/callback

可用工具

身份验证工具

  • get_auth_url:获取OAuth 2.0授权URL

    • 参数:无
    • 返回:授权URL和说明
  • exchange_auth_code:访问令牌的交换授权码

    • 参数:
      • code (字符串,必填):来自OAuth回调的授权代码
    • 返回:成功状态

董事会管理工具

  • get_board:获取Miro板的信息,包括元数据、名称、描述和设置
    • 参数:
      • board_id (string,必填):板的ID
    • 返回:董事会信息

形状操纵工具

  • create_shape:在板上创建形状

    • 参数:
      • board_id (string,必填):板的ID
      • shape_type (字符串,必填):形状类型(矩形、圆形、三角形、星形、箭头、菱形、八角形、六边形)
      • x (数字,必填):形状位置的X坐标
      • y (数字,必填):形状位置的Y坐标
      • width (数字,必填):形状的宽度
      • height (数字,必填):形状的高度
      • fillColor (字符串,可选):以十六进制格式填充颜色(例如#FF0000)
      • borderColor (字符串,可选):十六进制格式的边框颜色(例如#000000)
      • borderWidth (数字,可选):边框宽度(像素)
      • content (字符串,可选):要在形状中显示的文本内容
    • 返回:创建的形状信息
  • update_shape:更新现有形状的属性

    • 参数:
      • board_id (string,必填):板的ID
      • item_id (字符串,必填):要更新的形状项的ID
      • x (数字,可选):新的X坐标
      • y (数字,可选):新的Y坐标
      • width (数字,可选):新宽度
      • height (数字,可选):新高度
      • fillColor (字符串,可选):新填充颜色
      • borderColor (字符串,可选):新边框颜色
      • borderWidth (数字,可选):新边框宽度
      • content (字符串,可选):新文本内容
    • 返回:更新形状信息
  • delete_shape:从板中删除形状

    • 参数:
      • board_id (string,必填):板的ID
      • item_id (string,必填):要删除的形状项的ID
    • 返回:成功消息

分组工具

  • group_shapes:将多个形状组合在一起

    • 参数:
      • board_id (string,必填):板的ID
      • item_ids (数组,必填):要组合在一起的项目ID列表(至少2个项目)
    • 返回:组/帧信息
  • ungroup_shapes:通过从组/框架中删除形状来取消组合形状

    • 参数:
      • board_id (string,必填):板的ID
      • group_id (string,必填):要取消分组的组/帧的ID
    • 返回:成功消息

用法

运行MCP服务器

MCP服务器使用JSON-RPC协议通过stdio进行通信。要运行它:

python server.py

认证

在使用MCP服务器与Miro板交互之前,您需要进行身份验证并获取访问令牌:

步骤1:获取授权URL

打电话给 get_auth_url 用于检索OAuth授权URL的工具:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_auth_url",
    "arguments": {}
  }
}

响应将包含 auth_url 您需要在浏览器中访问。

第二步:授权申请

  1. 复制 auth_url 从回复中
  2. 在您的网络浏览器中打开它
  3. 登录您的Miro帐户
  4. 审查和批准应用程序请求的权限
  5. 授权后,Miro会将您重定向到配置中指定的回调URL

步骤3:提取授权码

授权后,Miro将重定向到您的回调URL,并使用 code 查询字符串中的参数。URL将如下所示:

http://localhost:8080/callback?code=AUTHORIZATION_CODE_HERE

提取 code URL中的值(后面的所有内容 code=).

步骤4:访问令牌的交换代码

使用 exchange_auth_code 使用授权码完成身份验证的工具:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "exchange_auth_code",
    "arguments": {
      "code": "AUTHORIZATION_CODE_HERE"
    }
  }
}

MCP客户端配置示例

要与MCP兼容的客户端一起使用,请按如下方式配置服务器:

{
  "mcpServers": {
    "miro": {
      "command": "python",
      "args": ["/path/to/miro-mcp/server.py"],
      "env": {
        "MIRO_CLIENT_ID": "your_client_id",
        "MIRO_CLIENT_SECRET": "your_client_secret",
        "MIRO_REDIRECT_URL": "http://localhost:8080/callback"
      }
    }
  }
}

工具调用示例

以下是一些JSON-RPC请求示例:

列出可用工具:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

获取董事会信息:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_board",
    "arguments": {
      "board_id": "your_board_id"
    }
  }
}

示例输出

存储库结构

miro-mcp/
├── server.py              # Main MCP server entry point
├── miro_client.py         # Miro API client wrapper
├── config.py              # Configuration management
├── tool_registry.py       # Tool registration system
├── requirements.txt       # Python dependencies
├── README.md              # This file
└── tools/                 # Tool implementations
    ├── __init__.py
    ├── auth_tools.py      # Authentication tools
    ├── board_tools.py     # Board management tools
    ├── shape_tools.py     # Shape manipulation tools
    └── group_tools.py     # Grouping tools