@josephyan/qingflow-app-user-mcp 0.2.0-beta.34 → 0.2.0-beta.36

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 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.34
6
+ npm install @josephyan/qingflow-app-user-mcp@0.2.0-beta.36
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.34 qingflow-app-user-mcp
12
+ npx -y -p @josephyan/qingflow-app-user-mcp@0.2.0-beta.36 qingflow-app-user-mcp
13
13
  ```
14
14
 
15
15
  Environment:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@josephyan/qingflow-app-user-mcp",
3
- "version": "0.2.0-beta.34",
3
+ "version": "0.2.0-beta.36",
4
4
  "description": "Operational end-user MCP for Qingflow records, tasks, comments, and directory workflows.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qingflow-mcp"
7
- version = "0.2.0b34"
7
+ version = "0.2.0b36"
8
8
  description = "User-authenticated MCP server for Qingflow"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -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)
@@ -2,4 +2,4 @@ from __future__ import annotations
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.2.0b34"
5
+ __version__ = "0.2.0b36"
@@ -13,6 +13,7 @@ DEFAULT_RECORD_LIST_TYPE = 8
13
13
  ATTACHMENT_QUESTION_TYPE = 13
14
14
  DEFAULT_BASE_URL = "https://qingflow.com/api"
15
15
  DEFAULT_FEEDBACK_APP_KEY = "e0d017kju002"
16
+ DEFAULT_FEEDBACK_QSOURCE_TOKEN = "mcp-feedback-7755d14748fc"
16
17
 
17
18
 
18
19
  def get_mcp_home() -> Path:
@@ -142,7 +143,7 @@ def get_feedback_qsource_token() -> str | None:
142
143
  value = get_config_value(
143
144
  "feedback.qsource_token",
144
145
  env_var="QINGFLOW_MCP_FEEDBACK_QSOURCE_TOKEN",
145
- default=None,
146
+ default=DEFAULT_FEEDBACK_QSOURCE_TOKEN,
146
147
  )
147
148
  if value is None:
148
149
  return None
@@ -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,