chaimi-keep-mcp 3.1.45-beta.4 → 3.1.45-beta.6
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/oauth.js +5 -2
- package/package.json +1 -1
- package/server.js +17 -10
package/oauth.js
CHANGED
|
@@ -312,16 +312,19 @@ class OAuthManager {
|
|
|
312
312
|
const fs = require('fs').promises;
|
|
313
313
|
const path = require('path');
|
|
314
314
|
const stateFile = path.join(require('os').homedir(), '.mcporter', 'auth-state.json');
|
|
315
|
-
|
|
315
|
+
|
|
316
316
|
const dir = path.dirname(stateFile);
|
|
317
317
|
await fs.mkdir(dir, { recursive: true });
|
|
318
|
-
|
|
318
|
+
|
|
319
319
|
await fs.writeFile(
|
|
320
320
|
stateFile,
|
|
321
321
|
JSON.stringify(state, null, 2),
|
|
322
322
|
{ mode: 0o600 }
|
|
323
323
|
);
|
|
324
|
+
console.error('✅ 授权状态已保存');
|
|
324
325
|
} catch (err) {
|
|
326
|
+
console.error('❌ 保存授权状态失败:', err.message);
|
|
327
|
+
throw err;
|
|
325
328
|
}
|
|
326
329
|
}
|
|
327
330
|
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -55,25 +55,25 @@ async function initializeConfig() {
|
|
|
55
55
|
const fs = require('fs');
|
|
56
56
|
const path = require('path');
|
|
57
57
|
const os = require('os');
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
// XDG 标准配置目录
|
|
60
60
|
// Linux/macOS: ~/.config/chaimi-keep-mcp/
|
|
61
61
|
// Windows: %APPDATA%/chaimi-keep-mcp/ (通过设置 XDG_CONFIG_HOME 环境变量)
|
|
62
62
|
const xdgConfigHome = process.env.XDG_CONFIG_HOME;
|
|
63
|
-
const configDir = xdgConfigHome
|
|
63
|
+
const configDir = xdgConfigHome
|
|
64
64
|
? path.join(xdgConfigHome, 'chaimi-keep-mcp')
|
|
65
65
|
: path.join(os.homedir(), '.config', 'chaimi-keep-mcp');
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
// 确保配置目录存在
|
|
68
68
|
if (!fs.existsSync(configDir)) {
|
|
69
69
|
fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
const envPath = path.join(configDir, envFile);
|
|
73
73
|
|
|
74
|
-
//
|
|
74
|
+
// 如果配置文件已存在,直接返回路径
|
|
75
75
|
if (fs.existsSync(envPath)) {
|
|
76
|
-
return;
|
|
76
|
+
return envPath;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
// 首次启动,尝试从云端获取配置
|
|
@@ -117,8 +117,7 @@ JWT_SECRET=${config.JWT_SECRET}
|
|
|
117
117
|
console.error(` 文件位置:${envPath}`);
|
|
118
118
|
console.error('');
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
require('dotenv').config({ path: envPath });
|
|
120
|
+
return envPath;
|
|
122
121
|
}
|
|
123
122
|
|
|
124
123
|
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
|
|
@@ -737,10 +736,15 @@ async function callMcpPrompt(tool, params, token) {
|
|
|
737
736
|
// 生成请求签名(用于验证请求来自合法 MCP Server)
|
|
738
737
|
function generateSignature(body, timestamp, secret) {
|
|
739
738
|
const payload = JSON.stringify(body) + timestamp;
|
|
740
|
-
|
|
739
|
+
const signature = crypto
|
|
741
740
|
.createHmac('sha256', secret)
|
|
742
741
|
.update(payload)
|
|
743
742
|
.digest('hex');
|
|
743
|
+
// 调试日志(仅在开发环境显示)
|
|
744
|
+
if (process.env.DEBUG_MCP === 'true') {
|
|
745
|
+
console.error('[DEBUG] 生成签名:', { payload: payload.substring(0, 100), timestamp, signature: signature.substring(0, 16) + '...' });
|
|
746
|
+
}
|
|
747
|
+
return signature;
|
|
744
748
|
}
|
|
745
749
|
|
|
746
750
|
// MCP 调用日志记录函数
|
|
@@ -2095,7 +2099,10 @@ let authState = {
|
|
|
2095
2099
|
|
|
2096
2100
|
async function main() {
|
|
2097
2101
|
// 首次启动时自动获取配置
|
|
2098
|
-
await initializeConfig();
|
|
2102
|
+
const envPath = await initializeConfig();
|
|
2103
|
+
|
|
2104
|
+
// 加载环境变量(无论文件是否存在都需要加载)
|
|
2105
|
+
require('dotenv').config({ path: envPath });
|
|
2099
2106
|
|
|
2100
2107
|
// 加载环境变量后赋值
|
|
2101
2108
|
CHAIMI_API_SECRET = process.env.CHAIMI_API_SECRET;
|