@josephyan/qingflow-app-user-mcp 0.2.0-beta.33 → 0.2.0-beta.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/skills/qingflow-app-user/SKILL.md +6 -0
- package/skills/qingflow-record-analysis/SKILL.md +6 -0
- package/skills/qingflow-record-crud/SKILL.md +6 -0
- package/skills/qingflow-task-ops/SKILL.md +6 -0
- package/src/qingflow_mcp/__init__.py +1 -1
- package/src/qingflow_mcp/server.py +8 -0
- package/src/qingflow_mcp/server_app_builder.py +1 -0
- package/src/qingflow_mcp/server_app_user.py +8 -0
- package/src/qingflow_mcp/tools/feedback_tools.py +6 -0
package/README.md
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
Install:
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npm install @josephyan/qingflow-app-user-mcp@0.2.0-beta.
|
|
6
|
+
npm install @josephyan/qingflow-app-user-mcp@0.2.0-beta.35
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Run:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npx -y -p @josephyan/qingflow-app-user-mcp@0.2.0-beta.
|
|
12
|
+
npx -y -p @josephyan/qingflow-app-user-mcp@0.2.0-beta.35 qingflow-app-user-mcp
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Environment:
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -43,6 +43,12 @@ Route to exactly one of these specialized paths:
|
|
|
43
43
|
- if the task can stay read-only, do not write or act
|
|
44
44
|
- if the current MCP capability is unsupported, the workflow is awkward, or the user's need still cannot be satisfied after reasonable use, summarize the gap, ask whether to submit feedback, and call `feedback_submit` only after explicit user confirmation
|
|
45
45
|
|
|
46
|
+
## Shared Helper
|
|
47
|
+
|
|
48
|
+
- `feedback_submit` is a cross-cutting helper for product feedback submission
|
|
49
|
+
- It does not require Qingflow login or workspace selection
|
|
50
|
+
- Use it only after the user explicitly confirms they want to submit feedback
|
|
51
|
+
|
|
46
52
|
## Resources
|
|
47
53
|
|
|
48
54
|
- Record CRUD: [$qingflow-record-crud](/Users/yanqidong/Documents/qingflow-next/.codex/skills/qingflow-record-crud/SKILL.md)
|
|
@@ -140,6 +140,12 @@ Top-level arguments:
|
|
|
140
140
|
- Otherwise → `初步观察`
|
|
141
141
|
- `rows_truncated=true` → 用 `前 N 个分组`, 不用 `全部`/`所有`
|
|
142
142
|
|
|
143
|
+
## Feedback Escalation
|
|
144
|
+
|
|
145
|
+
- If the desired analysis still cannot be completed because of missing capability, unsupported analysis shape, or an obviously awkward workflow after reasonable attempts, summarize the exact gap.
|
|
146
|
+
- Ask whether the user wants you to submit product feedback.
|
|
147
|
+
- Only after explicit user confirmation, call `feedback_submit`.
|
|
148
|
+
|
|
143
149
|
## Resources
|
|
144
150
|
|
|
145
151
|
- DSL templates: [references/dsl-templates.md](references/dsl-templates.md)
|
|
@@ -126,6 +126,12 @@ The DSL is clause-shaped like SQL, but it is **not raw SQL text**.
|
|
|
126
126
|
- Prefer canonical schema titles and aliases in your final wording
|
|
127
127
|
- If only part of the requested work is completed, explicitly disclose which parts are done and which are not
|
|
128
128
|
|
|
129
|
+
## Feedback Escalation
|
|
130
|
+
|
|
131
|
+
- If record CRUD still cannot satisfy the request because of missing capability, unsupported field behavior, or an obviously awkward workflow after reasonable attempts, summarize the exact blocker.
|
|
132
|
+
- Ask whether the user wants you to submit product feedback.
|
|
133
|
+
- Only after explicit user confirmation, call `feedback_submit`.
|
|
134
|
+
|
|
129
135
|
## Resources
|
|
130
136
|
|
|
131
137
|
- Record operation patterns: [references/record-patterns.md](references/record-patterns.md)
|
|
@@ -98,6 +98,12 @@ Use exactly one of these default paths:
|
|
|
98
98
|
- Avoid actions on ambiguous tasks or records
|
|
99
99
|
- Summarize the final action and the exact `app_key / record_id / workflow_node_id`
|
|
100
100
|
|
|
101
|
+
## Feedback Escalation
|
|
102
|
+
|
|
103
|
+
- If task capabilities, associated report detail, workflow log visibility, or action support still cannot satisfy the user's goal after reasonable use of this skill, summarize the exact gap in plain language.
|
|
104
|
+
- Ask whether the user wants you to submit product feedback.
|
|
105
|
+
- Only after explicit user confirmation, call `feedback_submit`.
|
|
106
|
+
|
|
101
107
|
## Response Interpretation
|
|
102
108
|
|
|
103
109
|
- `task_list` returns normalized todo rows and is the only default discovery path
|
|
@@ -36,6 +36,14 @@ def build_server() -> FastMCP:
|
|
|
36
36
|
Use `auth_login` first, then `workspace_list` and `workspace_select`.
|
|
37
37
|
All resource tools operate with the logged-in user's Qingflow permissions.
|
|
38
38
|
|
|
39
|
+
## Shared Helper
|
|
40
|
+
|
|
41
|
+
`feedback_submit` is always available as a cross-cutting helper.
|
|
42
|
+
|
|
43
|
+
- Use it when the current MCP capability is unsupported, awkward, or still cannot satisfy the user's need after reasonable use.
|
|
44
|
+
- It does not require Qingflow login or workspace selection.
|
|
45
|
+
- Call it only after the user explicitly confirms submission.
|
|
46
|
+
|
|
39
47
|
## App Discovery
|
|
40
48
|
|
|
41
49
|
If `app_key` is unknown, use `app_list` or `app_search` first.
|
|
@@ -17,6 +17,7 @@ def build_builder_server() -> FastMCP:
|
|
|
17
17
|
"Qingflow App Builder MCP",
|
|
18
18
|
instructions=(
|
|
19
19
|
"Use this server for AI-native Qingflow builder workflows. "
|
|
20
|
+
"`feedback_submit` is always available as a cross-cutting helper when the current capability is unsupported, awkward, or still cannot satisfy the user's need after reasonable use; it does not require Qingflow login or workspace selection, and it should be called only after explicit user confirmation. "
|
|
20
21
|
"Follow the resource path resolve -> summary read -> plan -> apply -> attach -> publish_verify. "
|
|
21
22
|
"Use builder_tool_contract when you need a machine-readable contract, aliases, allowed enums, or a minimal valid example for a public builder tool. "
|
|
22
23
|
"If creating a new package may be appropriate, ask the user to confirm package creation before calling package_create; otherwise use package_resolve/package_list and app_resolve to locate resources, "
|
|
@@ -28,6 +28,14 @@ def build_user_server() -> FastMCP:
|
|
|
28
28
|
|
|
29
29
|
If `app_key` is unknown, use `app_list` or `app_search` first.
|
|
30
30
|
|
|
31
|
+
## Shared Helper
|
|
32
|
+
|
|
33
|
+
`feedback_submit` is always available as a cross-cutting helper.
|
|
34
|
+
|
|
35
|
+
- Use it when the current MCP capability is unsupported, awkward, or still cannot satisfy the user's need after reasonable use.
|
|
36
|
+
- It does not require Qingflow login or workspace selection.
|
|
37
|
+
- Call it only after the user explicitly confirms submission.
|
|
38
|
+
|
|
31
39
|
## Schema-First Rule
|
|
32
40
|
|
|
33
41
|
Always call `record_schema_get` before `record_list`, `record_get`, `record_write`, or `record_analyze`.
|
|
@@ -46,6 +46,12 @@ class FeedbackTools:
|
|
|
46
46
|
workflow_node_id: str | int | None = None,
|
|
47
47
|
note: str | None = None,
|
|
48
48
|
) -> JSONObject:
|
|
49
|
+
"""Submit product feedback to the Qingflow MCP team.
|
|
50
|
+
|
|
51
|
+
Use this when the current MCP capability is unsupported, awkward, or still cannot satisfy the user's need
|
|
52
|
+
after reasonable attempts. This helper writes through the internal q-source feedback intake, does not
|
|
53
|
+
require Qingflow login or workspace selection, and should be called only after explicit user confirmation.
|
|
54
|
+
"""
|
|
49
55
|
return self.feedback_submit(
|
|
50
56
|
category=category,
|
|
51
57
|
title=title,
|