feishu-mcp 0.1.9-test.4 → 0.1.9-test.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.
@@ -9,6 +9,13 @@ import { TokenCacheManager, UserContextManager, AuthUtils } from '../utils/auth/
9
9
  * 提供通用的HTTP请求处理和认证功能
10
10
  */
11
11
  export class BaseApiService {
12
+ /**
13
+ * 检查是否是 stdio 模式
14
+ * @returns 如果是 stdio 模式返回 true
15
+ */
16
+ isStdioMode() {
17
+ return process.env.NODE_ENV === "cli" || process.argv.includes("--stdio");
18
+ }
12
19
  /**
13
20
  * 处理API错误
14
21
  * @param error 错误对象
@@ -59,9 +66,20 @@ export class BaseApiService {
59
66
  */
60
67
  async request(endpoint, method = 'GET', data, needsAuth = true, additionalHeaders, responseType, retry = false) {
61
68
  // 获取用户上下文
62
- const userContextManager = UserContextManager.getInstance();
63
- const userKey = userContextManager.getUserKey();
64
- const baseUrl = userContextManager.getBaseUrl();
69
+ let userKey;
70
+ let baseUrl;
71
+ if (this.isStdioMode()) {
72
+ // stdio 模式下直接使用默认值
73
+ userKey = 'stdio';
74
+ const config = Config.getInstance();
75
+ baseUrl = `http://localhost:${config.server.port}`;
76
+ }
77
+ else {
78
+ // HTTP 模式下从 UserContextManager 读取
79
+ const userContextManager = UserContextManager.getInstance();
80
+ userKey = userContextManager.getUserKey();
81
+ baseUrl = userContextManager.getBaseUrl();
82
+ }
65
83
  const clientKey = AuthUtils.generateClientKey(userKey);
66
84
  Logger.debug(`[BaseService] Request context - userKey: ${userKey}, baseUrl: ${baseUrl}`);
67
85
  try {
@@ -309,11 +327,8 @@ export class BaseApiService {
309
327
  */
310
328
  generateUserAuthUrl(baseUrl, userKey) {
311
329
  const { appId, appSecret } = Config.getInstance().feishu;
312
- const config = Config.getInstance();
313
330
  const clientKey = AuthUtils.generateClientKey(userKey);
314
- // 如果 baseUrl 为空,使用默认值(stdio 模式)
315
- const finalBaseUrl = baseUrl || `http://localhost:${config.server.port}`;
316
- const redirect_uri = `${finalBaseUrl}/callback`;
331
+ const redirect_uri = `${baseUrl}/callback`;
317
332
  const scope = encodeURIComponent('base:app:read bitable:app bitable:app:readonly board:whiteboard:node:read board:whiteboard:node:create contact:user.employee_id:readonly docs:document.content:read docx:document docx:document.block:convert docx:document:create docx:document:readonly drive:drive drive:drive:readonly drive:file drive:file:upload sheets:spreadsheet sheets:spreadsheet:readonly space:document:retrieve space:folder:create wiki:space:read wiki:space:retrieve wiki:wiki wiki:wiki:readonly offline_access');
318
333
  const state = AuthUtils.encodeState(appId, appSecret, clientKey, redirect_uri);
319
334
  return `https://accounts.feishu.cn/open-apis/authen/v1/authorize?client_id=${appId}&redirect_uri=${encodeURIComponent(redirect_uri)}&scope=${scope}&state=${state}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feishu-mcp",
3
- "version": "0.1.9-test.4",
3
+ "version": "0.1.9-test.6",
4
4
  "description": "Model Context Protocol server for Feishu integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",