@softtechai/quickmcp 1.1.7 → 1.1.8
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 +15 -1
- package/package.json +1 -1
- package/quickmcp-direct-stdio.js +31 -2
package/README.md
CHANGED
|
@@ -509,6 +509,17 @@ npx -y @softtechai/quickmcp --port=4000 --data-dir=./data
|
|
|
509
509
|
PORT=4000 QUICKMCP_DATA_DIR=./data npx -y @softtechai/quickmcp
|
|
510
510
|
```
|
|
511
511
|
|
|
512
|
+
### Varsayılan kalıcı SQLite dizini
|
|
513
|
+
|
|
514
|
+
`QUICKMCP_DATA_DIR` verilmezse QuickMCP, platforma göre kalıcı bir user-data dizini kullanır:
|
|
515
|
+
|
|
516
|
+
- macOS: `~/Library/Application Support/QuickMCP/data`
|
|
517
|
+
- Linux: `${XDG_DATA_HOME:-~/.local/share}/quickmcp/data`
|
|
518
|
+
- Windows: `%LOCALAPPDATA%\\QuickMCP\\data` (fallback: `%APPDATA%\\QuickMCP\\data`)
|
|
519
|
+
|
|
520
|
+
Bu sayede `npx` cache klasörü değişse bile veri dizini değişmez.
|
|
521
|
+
İsteyen kullanıcı `QUICKMCP_DATA_DIR` veya `--data-dir` ile bu yolu ezebilir.
|
|
522
|
+
|
|
512
523
|
> Not: Web UI, stdio tabanlı MCP sunucusunun yanında yan servis olarak çalışır; Claude Desktop entegrasyonu ile çakışmaz.
|
|
513
524
|
|
|
514
525
|
### Claude Desktop ile npx kullanımı
|
|
@@ -520,7 +531,10 @@ PORT=4000 QUICKMCP_DATA_DIR=./data npx -y @softtechai/quickmcp
|
|
|
520
531
|
"mcpServers": {
|
|
521
532
|
"quickmcp": {
|
|
522
533
|
"command": "npx",
|
|
523
|
-
"args": ["-y", "@softtechai/quickmcp"]
|
|
534
|
+
"args": ["-y", "@softtechai/quickmcp"],
|
|
535
|
+
"env": {
|
|
536
|
+
"QUICKMCP_DATA_DIR": "/path/to/quickmcp-data"
|
|
537
|
+
}
|
|
524
538
|
}
|
|
525
539
|
}
|
|
526
540
|
}
|
package/package.json
CHANGED
package/quickmcp-direct-stdio.js
CHANGED
|
@@ -106,6 +106,35 @@ function isProcessAlive(pid) {
|
|
|
106
106
|
return false;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
+
|
|
110
|
+
function resolveStableDefaultDataDir() {
|
|
111
|
+
const home = os.homedir() || os.tmpdir();
|
|
112
|
+
if (process.platform === 'win32') {
|
|
113
|
+
const base = process.env.LOCALAPPDATA || process.env.APPDATA || path.join(home, 'AppData', 'Local');
|
|
114
|
+
return path.join(base, 'QuickMCP', 'data');
|
|
115
|
+
}
|
|
116
|
+
if (process.platform === 'darwin') {
|
|
117
|
+
return path.join(home, 'Library', 'Application Support', 'QuickMCP', 'data');
|
|
118
|
+
}
|
|
119
|
+
const xdgDataHome = String(process.env.XDG_DATA_HOME || '').trim();
|
|
120
|
+
const base = xdgDataHome || path.join(home, '.local', 'share');
|
|
121
|
+
return path.join(base, 'quickmcp', 'data');
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function ensureWritableDataDir(preferredDir) {
|
|
125
|
+
try {
|
|
126
|
+
fs.mkdirSync(preferredDir, { recursive: true });
|
|
127
|
+
fs.accessSync(preferredDir, fs.constants.W_OK);
|
|
128
|
+
return preferredDir;
|
|
129
|
+
} catch (_) {
|
|
130
|
+
const fallbackDir = path.join(os.tmpdir(), 'quickmcp', 'data');
|
|
131
|
+
try {
|
|
132
|
+
fs.mkdirSync(fallbackDir, { recursive: true });
|
|
133
|
+
} catch (_) {}
|
|
134
|
+
return fallbackDir;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
109
138
|
// Default behavior: Web UI enabled unless explicitly disabled
|
|
110
139
|
if (noWeb || process.env.QUICKMCP_ENABLE_WEB === '0' || process.env.QUICKMCP_DISABLE_WEB === '1') {
|
|
111
140
|
process.env.QUICKMCP_ENABLE_WEB = '0';
|
|
@@ -120,8 +149,8 @@ if (dataDirArg) {
|
|
|
120
149
|
const val = dataDirArg.split('=')[1];
|
|
121
150
|
if (val) process.env.QUICKMCP_DATA_DIR = val;
|
|
122
151
|
}
|
|
123
|
-
if (!process.env.QUICKMCP_DATA_DIR
|
|
124
|
-
process.env.QUICKMCP_DATA_DIR =
|
|
152
|
+
if (!process.env.QUICKMCP_DATA_DIR) {
|
|
153
|
+
process.env.QUICKMCP_DATA_DIR = ensureWritableDataDir(resolveStableDefaultDataDir());
|
|
125
154
|
}
|
|
126
155
|
|
|
127
156
|
const dataStore = safeCreateDataStore({ logger: (...args) => logger.error(...args) });
|