@josephyan/qingflow-app-builder-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-builder-mcp@0.2.0-beta.34
6
+ npm install @josephyan/qingflow-app-builder-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-builder-mcp@0.2.0-beta.34 qingflow-app-builder-mcp
12
+ npx -y -p @josephyan/qingflow-app-builder-mcp@0.2.0-beta.36 qingflow-app-builder-mcp
13
13
  ```
14
14
 
15
15
  Environment:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@josephyan/qingflow-app-builder-mcp",
3
- "version": "0.2.0-beta.34",
3
+ "version": "0.2.0-beta.36",
4
4
  "description": "Builder MCP for Qingflow app/package/system design and staged solution 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"
@@ -17,6 +17,12 @@ Before any write or verification flow, identify whether the task targets `test`
17
17
 
18
18
  Pick the smallest tool layer that can finish the task.
19
19
 
20
+ ## Shared Helper
21
+
22
+ - `feedback_submit` is a cross-cutting helper for product feedback submission
23
+ - It does not require Qingflow login or workspace selection
24
+ - If builder capability is unsupported or still cannot satisfy the need after reasonable use, summarize the gap, ask whether to submit feedback, and call `feedback_submit` only after explicit user confirmation.
25
+
20
26
  ## Mental Model
21
27
 
22
28
  Model builder requests in four layers. Do not flatten them.
@@ -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,