# Jdy MCP Query

> Query 简道云/JDY personal MCP for workflow todos, product requirements, business data lists, record details, field mapping, and cursor pagination. Use jdy-mcp-write for write operations.

- Skill: `volcanong1998-bot/jdy-mcp-query` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add volcanong1998-bot/jdy-mcp-query`
- Raw SKILL.md: https://api.skillmd.com/api/skills/volcanong1998-bot/jdy-mcp-query/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: volcanong1998-bot (https://skillmd.com/u/volcanong1998-bot)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/volcanong1998-bot/jdy-mcp-query

---


# JDY MCP Query

Use this skill for read-only 简道云/JDY personal MCP queries. Do not perform write operations without explicit user confirmation.

## Configuration

Never commit or share a personal MCP URL or token. Each user must provide their own endpoint:

```bash
export JDY_MCP_SERVER_URL='https://mcp.jiandaoyun.com/mcp/<your-own-credential>'
```

Or pass `--server-url` to the helper script.

## Workflow Todos

For `member_workflow_task_list`, use cursor pagination:

1. First request: `{ "limit": 100 }`.
2. Next request: `{ "limit": 100, "task_id": "<last task_id from the previous page>" }`.
3. Continue until `has_more` is `false`.

Do not use `skip`: it is not part of the current input schema and unknown inputs can be ignored.

For product requirements, filter after collection with `form_title == "产品需求"`. To read a task's record details, map `app_id`, `form_id -> entry_id`, and `instance_id -> data_id`, then call `member_data_get`.

Use the helper when appropriate:

```bash
python3 scripts/query_workflow_todos.py --form-title 产品需求 --details
```

## Business Data

For business data queries, discover the app, entry, and widgets before listing records:

1. `member_app_list`
2. `member_app_entry_list`
3. `member_app_entry_widget_list`
4. `member_data_list` with explicit fields and filters

Paginate `member_data_list` with the final row's `_id` as the next `data_id` cursor until fewer than `limit` rows are returned. Verify the field names using widget metadata; do not assume display labels are valid field identifiers.

## Reliability

- Do not fabricate data if a query fails; report the failed API step.
- Retry rate-limit errors with exponential backoff.
- Prefer requesting only required fields.
- Treat silently ignored filters as unverified until a control query proves they apply.

