Skip to main content
Glama
o4114o

Workflowy MCP Server

by o4114o
README.md
# Workflowy MCP Server

Workflowy MCP Server for Nanobot - 讓 nanobot 可以透過 Model Context Protocol 操作 Workflowy。

## 功能

- `list_targets` - 列出所有可用的 targets (inbox, home 等)
- `list_nodes` - 列出指定 parent 的子節點
- `get_node` - 取得單一節點的詳細資訊
- `create_node` - 建立新節點
- `update_node` - 更新節點內容
- `delete_node` - 刪除節點
- `move_node` - 移動節點到新的父節點
- `complete_node` - 標記節點為完成
- `uncomplete_node` - 取消節點的完成狀態
- `export_all_nodes` - 匯出所有節點

## 安裝

```bash
# 使用 uvx 直接執行
uvx workflowy-mcp

# 或先安裝後使用
pip install workflowy-mcp
workflowy-mcp

# nanobot 使用特定的虛擬環境,先啟動該 venv,然後執行: (推薦)
source /path/to/nanobot-venv/bin/activate
pip install /home/user/workspace/workflowy-mcp

```

## 設定

### 1. 取得 Workflowy API Key

前往 https://workflowy.com/api-key 取得 API Key。

### 2. 設定 nanobot config

在 nanobot 的設定檔中加入:

```json
{
  "tools": {
    "mcpServers": {
      "workflowy": {
        "command": "uvx",
        "args": ["workflowy-mcp"],
        "env": {
          "WORKFLOWY_API_KEY": "your-api-key",
          "WORKFLOWY_DEFAULT_PARENT": "home"
        }
      }
    }
  }
}
```

## 環境變數

| 變數 | 說明 | 必填 | 預設 |
|------|------|------|------|
| `WORKFLOWY_API_KEY` | Workflowy API Key | 是 | - |
| `WORKFLOWY_DEFAULT_PARENT` | 預設 parent_id | 否 | inbox |

## 使用方式

nanobot 啟動後,LLM 可以使用以下 tools:

```
mcp_workflowy_list_targets      - 列出所有 targets
mcp_workflowy_list_nodes        - 列出子節點 (parent_id 預設為 inbox)
mcp_workflowy_get_node          - 取得節點詳情
mcp_workflowy_create_node       - 建立新節點
mcp_workflowy_update_node       - 更新節點
mcp_workflowy_delete_node       - 刪除節點
mcp_workflowy_move_node         - 移動節點
mcp_workflowy_complete_node    - 標記完成
mcp_workflowy_uncomplete_node   - 取消完成
mcp_workflowy_export_all_nodes  - 匯出所有節點
```

### 範例

```python
# 在 inbox 建立新任務
mcp_workflowy_create_node(
    parent_id="inbox",
    name="每週回顧",
    note="每週五下午進行",
    layout_mode="todo"
)

# 列出 inbox 的內容
mcp_workflowy_list_nodes(parent_id="inbox")

# 移動節點到 home
mcp_workflowy_move_node(
    id="xxx-xxx-xxx",
    parent_id="home",
    position="top"
)
```

## parent_id 可用值

- `"inbox"` - 預設的收件匣
- `"home"` - 預設的首頁
- `"None"` - 頂層節點
- UUID - 任意節點的 ID

## 開發

```bash
# 安裝開發依賴
pip install -e ".[dev]"

# 執行
python -m workflowy_mcp

# 測試
pytest
```

## License

MIT