@embrs/user-feedback 1.3.1 → 1.3.3

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
@@ -1,5 +1,7 @@
1
1
  # User Feedback
2
2
 
3
+ [![npm version](https://badge.fury.io/js/%40embrs%2Fuser-feedback.svg)](https://www.npmjs.com/package/@embrs/user-feedback)
4
+
3
5
  基於 Node.js 的 MCP 反饋收集工具,支援 AI 工作彙報和用戶反饋收集。
4
6
 
5
7
  ## 功能特點
@@ -17,6 +19,8 @@
17
19
 
18
20
  ## 安裝
19
21
 
22
+ **📦 npm 套件**: [https://www.npmjs.com/package/@embrs/user-feedback](https://www.npmjs.com/package/@embrs/user-feedback?activeTab=readme)
23
+
20
24
  ```bash
21
25
  # 全域安裝
22
26
  npm install -g @embrs/user-feedback
@@ -81,7 +85,12 @@ user-feedback config
81
85
  "mcpServers": {
82
86
  "user-feedback": {
83
87
  "command": "npx",
84
- "args": ["-y", "@embrs/user-feedback"]
88
+ "args": ["-y", "@embrs/user-feedback"],
89
+ "env": {
90
+ "MCP_WEB_PORT": "3000",
91
+ "MCP_DIALOG_TIMEOUT": "60000",
92
+ "LOG_LEVEL": "warn"
93
+ }
85
94
  }
86
95
  }
87
96
  }
@@ -89,6 +98,8 @@ user-feedback config
89
98
 
90
99
  5. 重啟 Cursor 使配置生效
91
100
 
101
+ **💡 提示**:可以在 `env` 中設定任何環境變數,優先順序高於 `.env` 文件。
102
+
92
103
  ### Claude Desktop
93
104
 
94
105
  在 `~/Library/Application Support/Claude/claude_desktop_config.json` 中添加:
@@ -98,7 +109,12 @@ user-feedback config
98
109
  "mcpServers": {
99
110
  "user-feedback": {
100
111
  "command": "npx",
101
- "args": ["-y", "@embrs/user-feedback"]
112
+ "args": ["-y", "@embrs/user-feedback"],
113
+ "env": {
114
+ "MCP_WEB_PORT": "3000",
115
+ "MCP_DIALOG_TIMEOUT": "60000",
116
+ "LOG_LEVEL": "warn"
117
+ }
102
118
  }
103
119
  }
104
120
  }
@@ -113,7 +129,12 @@ user-feedback config
113
129
  "mcpServers": {
114
130
  "user-feedback": {
115
131
  "command": "npx",
116
- "args": ["-y", "@embrs/user-feedback"]
132
+ "args": ["-y", "@embrs/user-feedback"],
133
+ "env": {
134
+ "MCP_WEB_PORT": "3000",
135
+ "MCP_DIALOG_TIMEOUT": "60000",
136
+ "LOG_LEVEL": "warn"
137
+ }
117
138
  }
118
139
  }
119
140
  }
@@ -121,14 +142,36 @@ user-feedback config
121
142
 
122
143
  ## 環境變數配置
123
144
 
145
+ ### 🎯 推薦方式:MCP 客戶端配置
146
+
147
+ 直接在 MCP 客戶端配置中設定環境變數,優先順序最高:
148
+
149
+ ```json
150
+ {
151
+ "mcpServers": {
152
+ "user-feedback": {
153
+ "command": "npx",
154
+ "args": ["-y", "@embrs/user-feedback"],
155
+ "env": {
156
+ "MCP_WEB_PORT": "3000",
157
+ "MCP_DIALOG_TIMEOUT": "60000",
158
+ "LOG_LEVEL": "warn"
159
+ }
160
+ }
161
+ }
162
+ }
163
+ ```
164
+
165
+ ### 📁 備用方式:.env 文件
166
+
124
167
  複製 `.env.example` 為 `.env` 並根據需要修改:
125
168
 
126
169
  | 變數 | 說明 | 預設值 |
127
170
  |------|------|--------|
128
171
  | `MCP_WEB_PORT` | Web 服務器端口 | 3239 |
129
- | `MCP_DIALOG_TIMEOUT` | 反饋超時時間(秒) | 600 |
172
+ | `MCP_DIALOG_TIMEOUT` | 反饋超時時間(秒) | 60000 |
130
173
  | `LOG_LEVEL` | 日誌級別(silent/error/warn/info/debug) | info |
131
- | `MAX_IMAGE_SIZE_MB` | 最大圖片大小(MB) | 10 |
174
+ | `MCP_MAX_FILE_SIZE` | 最大檔案大小(位元組) | 10485760 (10MB) |
132
175
 
133
176
  ## MCP 工具 API
134
177
 
@@ -49,7 +49,7 @@ export function createDefaultConfig() {
49
49
  apiBaseUrl: getEnvVar('MCP_API_BASE_URL', 'https://api.openai.com/v1'),
50
50
  defaultModel: getEnvVar('MCP_DEFAULT_MODEL', 'gpt-4o-mini'),
51
51
  webPort: getEnvNumber('MCP_WEB_PORT', 3239),
52
- dialogTimeout: getEnvNumber('MCP_DIALOG_TIMEOUT', 600),
52
+ dialogTimeout: getEnvNumber('MCP_DIALOG_TIMEOUT', 60000),
53
53
  corsOrigin: getEnvVar('MCP_CORS_ORIGIN', '*'),
54
54
  maxFileSize: getEnvNumber('MCP_MAX_FILE_SIZE', 10485760), // 10MB
55
55
  logLevel: getEnvVar('LOG_LEVEL', 'info'),
@@ -69,9 +69,9 @@ export function validateConfig(config) {
69
69
  if (config.webPort < 1024 || config.webPort > 65535) {
70
70
  throw new MCPError(`Invalid port number: ${config.webPort}. Must be between 1024 and 65535.`, 'INVALID_PORT');
71
71
  }
72
- // 驗證超時時間(10 秒到 1 小時)
73
- if (config.dialogTimeout < 10 || config.dialogTimeout > 3600) {
74
- throw new MCPError(`Invalid timeout: ${config.dialogTimeout}. Must be between 10 and 3600 seconds.`, 'INVALID_TIMEOUT');
72
+ // 驗證超時時間(10 秒到 60000 秒)
73
+ if (config.dialogTimeout < 10 || config.dialogTimeout > 60000) {
74
+ throw new MCPError(`Invalid timeout: ${config.dialogTimeout}. Must be between 10 and 60000 seconds.`, 'INVALID_TIMEOUT');
75
75
  }
76
76
  // 驗證文件大小限制(1KB - 100MB)
77
77
  if (config.maxFileSize < 1024 || config.maxFileSize > 104857600) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embrs/user-feedback",
3
- "version": "1.3.1",
3
+ "version": "1.3.3",
4
4
  "description": "基於 Node.js 的 MCP 反饋收集器 - 支援 AI 工作彙報和用戶反饋收集",
5
5
  "main": "dist/index.js",
6
6
  "bin": {