bmall-mcp 1.2.0 → 1.2.2

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
@@ -140,6 +140,13 @@ src/
140
140
 
141
141
  ## Changelog
142
142
 
143
+ ### v1.2.1 (2026-01-14)
144
+ - ✅ 修复 IDE Rules 路径计算问题,改为运行时动态获取
145
+ - ✅ 添加调试日志,输出当前工作目录
146
+
147
+ ### v1.2.0 (2026-01-14)
148
+ - ✅ 重构项目结构,新增 `src/utils/` 目录
149
+
143
150
  ### v1.1.6 (2026-01-14)
144
151
  - ✅ 新增 Harmony (鸿蒙) Rules 类型支持
145
152
  - ✅ 新增 `MCP_IDE` 环境变量,配置一次自动识别 IDE
package/dist/index.d.ts CHANGED
@@ -2,5 +2,5 @@
2
2
  /**
3
3
  * bmall-mcp 服务器入口
4
4
  */
5
- export {};
5
+ export declare function getProjectRoot(): string | null;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAcH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C"}
package/dist/index.js CHANGED
@@ -7,6 +7,11 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
7
7
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
8
8
  import { toolDefinitions } from "./server/tools.js";
9
9
  import { handleToolCall } from "./server/handlers.js";
10
+ // 存储项目根目录
11
+ let projectRoot = null;
12
+ export function getProjectRoot() {
13
+ return projectRoot;
14
+ }
10
15
  const server = new Server({
11
16
  name: "bmall-mcp",
12
17
  version: "1.0.0",
@@ -22,6 +27,20 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
22
27
  // 处理 Tool 调用
23
28
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
24
29
  const { name, arguments: args } = request.params;
30
+ // 尝试获取 roots
31
+ try {
32
+ const rootsResult = await server.listRoots();
33
+ console.error("[bmall-mcp] roots/list 结果:", JSON.stringify(rootsResult));
34
+ if (rootsResult?.roots?.length > 0) {
35
+ const uri = rootsResult.roots[0].uri;
36
+ // 转换 file:// URI 为路径
37
+ projectRoot = uri.replace(/^file:\/\//, "");
38
+ console.error("[bmall-mcp] 项目根目录:", projectRoot);
39
+ }
40
+ }
41
+ catch (e) {
42
+ console.error("[bmall-mcp] roots/list 失败:", e);
43
+ }
25
44
  return handleToolCall(name, args);
26
45
  });
27
46
  // 启动服务器
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,WAAW;AACX,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,eAAe;CACvB,CAAC,CAAC,CAAC;AAEJ,aAAa;AACb,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,OAAO,cAAc,CAAC,IAAI,EAAE,IAA+B,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,QAAQ;AACR,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,UAAU;AACV,IAAI,WAAW,GAAkB,IAAI,CAAC;AAEtC,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,WAAW;AACX,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,eAAe;CACvB,CAAC,CAAC,CAAC;AAEJ,aAAa;AACb,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,aAAa;IACb,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,IAAI,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACrC,qBAAqB;YACrB,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,cAAc,CAAC,IAAI,EAAE,IAA+B,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,QAAQ;AACR,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import * as path from "path";
2
2
  import * as fs from "fs";
3
3
  import { log } from "../../utils/index.js";
4
- import { RULES_CACHE_DIR, validateAndGetRulesType, fetchRulesFromGit, copyMarkdownFiles, getGitRulesDir, IDE_PATHS, } from "./utils.js";
4
+ import { RULES_CACHE_DIR, validateAndGetRulesType, fetchRulesFromGit, copyMarkdownFiles, getGitRulesDir, getIDERulesPath, } from "./utils.js";
5
5
  export async function pullRules(ide, rulesType) {
6
6
  try {
7
7
  // 验证并获取 Rules 类型
@@ -12,7 +12,7 @@ export async function pullRules(ide, rulesType) {
12
12
  const projectType = typeResult.type;
13
13
  // 验证并获取 IDE
14
14
  const targetIDE = ide || "kiro";
15
- const targetPath = IDE_PATHS[targetIDE];
15
+ const targetPath = getIDERulesPath(targetIDE);
16
16
  if (!targetPath) {
17
17
  return `❌ 不支持的 IDE: ${targetIDE}\n支持的 IDE: kiro, cursor, windsurf`;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/tools/rules/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,SAAkB;IAC9D,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC;QACD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;QAEpC,YAAY;QACZ,MAAM,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC;QAChC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,eAAe,SAAS,mCAAmC,CAAC;QACrE,CAAC;QAED,UAAU;QACV,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,6CAA6C;QAC7C,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAE/D,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAE5D,GAAG,CAAC,oBAAoB,kBAAkB,KAAK,CAAC,CAAC;QACjD,wBAAwB;QACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAExF,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,8BAA8B,cAAc,EAAE,CAAC;QACxD,CAAC;QAED,OAAO;YACC,WAAW;OAChB,SAAS;QACR,kBAAkB;SACjB,MAAM,CAAC,KAAK;QACb,eAAe,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,WAAW,QAAQ,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/tools/rules/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,SAAkB;IAC9D,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC;QACD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;QAEpC,YAAY;QACZ,MAAM,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC;QAChC,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,eAAe,SAAS,mCAAmC,CAAC;QACrE,CAAC;QAED,UAAU;QACV,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,6CAA6C;QAC7C,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAE/D,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAE5D,GAAG,CAAC,oBAAoB,kBAAkB,KAAK,CAAC,CAAC;QACjD,wBAAwB;QACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAExF,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,8BAA8B,cAAc,EAAE,CAAC;QACxD,CAAC;QAED,OAAO;YACC,WAAW;OAChB,SAAS;QACR,kBAAkB;SACjB,MAAM,CAAC,KAAK;QACb,eAAe,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,WAAW,QAAQ,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -2,7 +2,7 @@ import * as fs from "fs";
2
2
  import * as path from "path";
3
3
  import { execSync } from "child_process";
4
4
  import { log } from "../../utils/index.js";
5
- import { GIT_BRANCH, RULES_CACHE_DIR, IDE_PATHS, validateAndGetRulesType, detectProjectName, getGitRulesDir, copyMarkdownFiles, initializeGitCache, setupSparseCheckout, checkoutOrCreateBranch, } from "./utils.js";
5
+ import { GIT_BRANCH, RULES_CACHE_DIR, getIDERulesPath, validateAndGetRulesType, detectProjectName, getGitRulesDir, copyMarkdownFiles, initializeGitCache, setupSparseCheckout, checkoutOrCreateBranch, } from "./utils.js";
6
6
  export async function pushRules(ide, message, rulesType) {
7
7
  try {
8
8
  // 验证并获取 Rules 类型
@@ -12,7 +12,7 @@ export async function pushRules(ide, message, rulesType) {
12
12
  }
13
13
  const projectType = typeResult.type;
14
14
  // 验证并获取 IDE
15
- const localRulesPath = IDE_PATHS[ide];
15
+ const localRulesPath = getIDERulesPath(ide);
16
16
  if (!localRulesPath) {
17
17
  return `❌ 不支持的 IDE: ${ide}`;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/tools/rules/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/tools/rules/push.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { ProjectType } from "../../utils/index.js";
6
6
  export declare const GIT_REPO = "git@coding.jd.com:retail-jdb-app-ai/RulesManager.git";
7
7
  export declare const GIT_BRANCH = "develop";
8
8
  export declare const RULES_CACHE_DIR: string;
9
- export declare const IDE_PATHS: Record<string, string>;
9
+ export declare function getIDERulesPath(ide: string): string;
10
10
  export declare function normalizeRulesType(input: string): ProjectType;
11
11
  export declare function validateAndGetRulesType(rulesType?: string): {
12
12
  type: ProjectType;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/rules/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAa,WAAW,EAA0B,MAAM,sBAAsB,CAAC;AAGtF,eAAO,MAAM,QAAQ,yDAAyD,CAAC;AAC/E,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,eAAe,QAA4C,CAAC;AAGzE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK5C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAiB7D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAejG;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAW/D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAwD1C;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD;AAGD,wBAAgB,kBAAkB,IAAI,IAAI,CAyBzC;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAY1D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,MAAmB,GAAG,IAAI,CAmChG;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCjF;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAqB,GAC/C;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAsCtC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/rules/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAa,WAAW,EAA0B,MAAM,sBAAsB,CAAC;AAGtF,eAAO,MAAM,QAAQ,yDAAyD,CAAC;AAC/E,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,eAAe,QAA4C,CAAC;AAGzE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAiB7D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAejG;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAW/D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAwD1C;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD;AAGD,wBAAgB,kBAAkB,IAAI,IAAI,CAyBzC;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAY1D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,MAAmB,GAAG,IAAI,CAmChG;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCjF;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAqB,GAC/C;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAsCtC"}
@@ -10,13 +10,20 @@ import { HOME, CWD, log, detectProjectType } from "../../utils/index.js";
10
10
  export const GIT_REPO = "git@coding.jd.com:retail-jdb-app-ai/RulesManager.git";
11
11
  export const GIT_BRANCH = "develop";
12
12
  export const RULES_CACHE_DIR = path.join(HOME, ".bmall-mcp/rules-cache");
13
- // IDE 的 Rules 目录映射(项目级别)
14
- export const IDE_PATHS = {
15
- kiro: path.join(CWD, ".kiro/steering/bmall"),
16
- cursor: path.join(CWD, ".cursor/rules/bmall"),
17
- windsurf: path.join(CWD, ".windsurfrules"),
18
- joycode: path.join(CWD, ".joycode/rules/bmall"),
19
- };
13
+ // 获取 IDE 的 Rules 目录路径(运行时计算)
14
+ export function getIDERulesPath(ide) {
15
+ const cwd = process.cwd();
16
+ log(`当前工作目录 (cwd): ${cwd}`);
17
+ const paths = {
18
+ kiro: path.join(cwd, ".kiro/steering/bmall"),
19
+ cursor: path.join(cwd, ".cursor/rules/bmall"),
20
+ windsurf: path.join(cwd, ".windsurfrules"),
21
+ joycode: path.join(cwd, ".joycode/rules/bmall"),
22
+ };
23
+ const result = paths[ide] || paths.kiro;
24
+ log(`IDE: ${ide}, Rules 路径: ${result}`);
25
+ return result;
26
+ }
20
27
  export function normalizeRulesType(input) {
21
28
  const normalized = input.toLowerCase().trim();
22
29
  if (["ios", "i", "iphone", "objective-c", "objc", "oc"].includes(normalized)) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tools/rules/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tools/rules/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmall-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "MCP Server for bmall development rules and tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -13,6 +13,13 @@ import {
13
13
  import { toolDefinitions } from "./server/tools.js";
14
14
  import { handleToolCall } from "./server/handlers.js";
15
15
 
16
+ // 存储项目根目录
17
+ let projectRoot: string | null = null;
18
+
19
+ export function getProjectRoot(): string | null {
20
+ return projectRoot;
21
+ }
22
+
16
23
  const server = new Server(
17
24
  {
18
25
  name: "bmall-mcp",
@@ -33,6 +40,21 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
33
40
  // 处理 Tool 调用
34
41
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
35
42
  const { name, arguments: args } = request.params;
43
+
44
+ // 尝试获取 roots
45
+ try {
46
+ const rootsResult = await server.listRoots();
47
+ console.error("[bmall-mcp] roots/list 结果:", JSON.stringify(rootsResult));
48
+ if (rootsResult?.roots?.length > 0) {
49
+ const uri = rootsResult.roots[0].uri;
50
+ // 转换 file:// URI 为路径
51
+ projectRoot = uri.replace(/^file:\/\//, "");
52
+ console.error("[bmall-mcp] 项目根目录:", projectRoot);
53
+ }
54
+ } catch (e) {
55
+ console.error("[bmall-mcp] roots/list 失败:", e);
56
+ }
57
+
36
58
  return handleToolCall(name, args as Record<string, unknown>);
37
59
  });
38
60
 
@@ -7,7 +7,7 @@ import {
7
7
  fetchRulesFromGit,
8
8
  copyMarkdownFiles,
9
9
  getGitRulesDir,
10
- IDE_PATHS,
10
+ getIDERulesPath,
11
11
  } from "./utils.js";
12
12
 
13
13
  export async function pullRules(ide?: string, rulesType?: string): Promise<string> {
@@ -21,7 +21,7 @@ export async function pullRules(ide?: string, rulesType?: string): Promise<strin
21
21
 
22
22
  // 验证并获取 IDE
23
23
  const targetIDE = ide || "kiro";
24
- const targetPath = IDE_PATHS[targetIDE];
24
+ const targetPath = getIDERulesPath(targetIDE);
25
25
  if (!targetPath) {
26
26
  return `❌ 不支持的 IDE: ${targetIDE}\n支持的 IDE: kiro, cursor, windsurf`;
27
27
  }
@@ -5,7 +5,7 @@ import { log } from "../../utils/index.js";
5
5
  import {
6
6
  GIT_BRANCH,
7
7
  RULES_CACHE_DIR,
8
- IDE_PATHS,
8
+ getIDERulesPath,
9
9
  validateAndGetRulesType,
10
10
  detectProjectName,
11
11
  getGitRulesDir,
@@ -25,7 +25,7 @@ export async function pushRules(ide: string, message?: string, rulesType?: strin
25
25
  const projectType = typeResult.type;
26
26
 
27
27
  // 验证并获取 IDE
28
- const localRulesPath = IDE_PATHS[ide];
28
+ const localRulesPath = getIDERulesPath(ide);
29
29
  if (!localRulesPath) {
30
30
  return `❌ 不支持的 IDE: ${ide}`;
31
31
  }
@@ -13,13 +13,20 @@ export const GIT_REPO = "git@coding.jd.com:retail-jdb-app-ai/RulesManager.git";
13
13
  export const GIT_BRANCH = "develop";
14
14
  export const RULES_CACHE_DIR = path.join(HOME, ".bmall-mcp/rules-cache");
15
15
 
16
- // IDE 的 Rules 目录映射(项目级别)
17
- export const IDE_PATHS: Record<string, string> = {
18
- kiro: path.join(CWD, ".kiro/steering/bmall"),
19
- cursor: path.join(CWD, ".cursor/rules/bmall"),
20
- windsurf: path.join(CWD, ".windsurfrules"),
21
- joycode: path.join(CWD, ".joycode/rules/bmall"),
22
- };
16
+ // 获取 IDE 的 Rules 目录路径(运行时计算)
17
+ export function getIDERulesPath(ide: string): string {
18
+ const cwd = process.cwd();
19
+ log(`当前工作目录 (cwd): ${cwd}`);
20
+ const paths: Record<string, string> = {
21
+ kiro: path.join(cwd, ".kiro/steering/bmall"),
22
+ cursor: path.join(cwd, ".cursor/rules/bmall"),
23
+ windsurf: path.join(cwd, ".windsurfrules"),
24
+ joycode: path.join(cwd, ".joycode/rules/bmall"),
25
+ };
26
+ const result = paths[ide] || paths.kiro;
27
+ log(`IDE: ${ide}, Rules 路径: ${result}`);
28
+ return result;
29
+ }
23
30
 
24
31
  export function normalizeRulesType(input: string): ProjectType {
25
32
  const normalized = input.toLowerCase().trim();