mcp-probe-kit 3.6.2 → 3.6.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
|
@@ -421,7 +421,7 @@ No installation needed, use the latest version directly.
|
|
|
421
421
|
}
|
|
422
422
|
```
|
|
423
423
|
|
|
424
|
-
> **Skill 自动安装**:任意 MCP 工具调用会在用户项目写入 `.agents/skills/mcp-probe-kit/SKILL.md`。工作区根目录**自动识别**(Cursor 注入 `WORKSPACE_FOLDER_PATHS`;OpenCode 等项目级 `opencode.json` 会设置进程 cwd),**无需**在每台客户端配置 `MCP_PROJECT_ROOT`。仅全局 MCP 且无法识别工作区时,可选手动设置 `MCP_PROJECT_ROOT` 或在工具参数传 `project_root`。需 **v3.6.
|
|
424
|
+
> **Skill 自动安装**:任意 MCP 工具调用会在用户项目写入 `.agents/skills/mcp-probe-kit/SKILL.md`。工作区根目录**自动识别**(Cursor 注入 `WORKSPACE_FOLDER_PATHS`;OpenCode 等项目级 `opencode.json` 会设置进程 cwd),**无需**在每台客户端配置 `MCP_PROJECT_ROOT`。仅全局 MCP 且无法识别工作区时,可选手动设置 `MCP_PROJECT_ROOT` 或在工具参数传 `project_root`。需 **v3.6.3+**。
|
|
425
425
|
|
|
426
426
|
#### Claude Desktop Configuration
|
|
427
427
|
|
|
@@ -712,7 +712,7 @@ This is a known [Cursor-side issue](https://forum.cursor.com/t/mcp-server-connec
|
|
|
712
712
|
| `latched shared-process MCP routing disabled` + `ipcReady` timeout | Windows `mcpProcess` utility failed; legacy fallback discovers tools but Agent lease stays empty |
|
|
713
713
|
| Settings green dot, Agent `No MCP servers available` | Renderer ↔ shared-process MCP routing not wired for this session |
|
|
714
714
|
|
|
715
|
-
**What we do (v3.6.
|
|
715
|
+
**What we do (v3.6.3+):** `tools/list` **omits `outputSchema` by default** (~50 KB → ~23 KB). Structured output still works via `structuredContent` on `tools/call`. To restore full schemas: `MCP_INCLUDE_OUTPUT_SCHEMA=1`.
|
|
716
716
|
|
|
717
717
|
**What you can try:**
|
|
718
718
|
|
|
@@ -116,7 +116,7 @@ describe("gitnexus-bridge workspace preparation", () => {
|
|
|
116
116
|
expect(result.code).toBe(0);
|
|
117
117
|
expect(result.stdout.trim().length).toBeGreaterThan(0);
|
|
118
118
|
});
|
|
119
|
-
test("Windows 下 git.exe 直接启动,不走 git.cmd 壳层", () => {
|
|
119
|
+
test.runIf(process.platform === "win32")("Windows 下 git.exe 直接启动,不走 git.cmd 壳层", () => {
|
|
120
120
|
const resolved = resolveExecutableCommand("git", "win32").toLowerCase();
|
|
121
121
|
const spawned = resolveSpawnCommand("git", ["init", "-q"], "win32");
|
|
122
122
|
expect(resolved).toContain("git");
|
|
@@ -60,4 +60,20 @@ describe("workspace-root explicit project_root", () => {
|
|
|
60
60
|
expect(resolution.explicitHonored).toBe(false);
|
|
61
61
|
expect(resolution.warning).toMatch(/未能采用传入的 project_root/);
|
|
62
62
|
});
|
|
63
|
+
test("不把盘符根目录当作工作区", () => {
|
|
64
|
+
const original = process.env.INIT_CWD;
|
|
65
|
+
process.env.INIT_CWD = "D:\\";
|
|
66
|
+
try {
|
|
67
|
+
const resolution = resolveWorkspaceRootWithMeta("");
|
|
68
|
+
expect(resolution.root).not.toBe("D:\\");
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
if (original === undefined) {
|
|
72
|
+
delete process.env.INIT_CWD;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
process.env.INIT_CWD = original;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
63
79
|
});
|
|
@@ -126,7 +126,9 @@ function findWorkspaceAncestor(start, packageRoot) {
|
|
|
126
126
|
}
|
|
127
127
|
let current = start;
|
|
128
128
|
while (true) {
|
|
129
|
-
if (current !== packageRoot &&
|
|
129
|
+
if (current !== packageRoot &&
|
|
130
|
+
!isFilesystemRoot(current) &&
|
|
131
|
+
looksLikeWorkspaceRoot(current)) {
|
|
130
132
|
return current;
|
|
131
133
|
}
|
|
132
134
|
const parent = path.dirname(current);
|
|
@@ -146,6 +148,19 @@ function resolveTrustedClientWorkspace(clientPath, packageRoot) {
|
|
|
146
148
|
}
|
|
147
149
|
return findWorkspaceAncestor(clientPath, packageRoot) ?? clientPath;
|
|
148
150
|
}
|
|
151
|
+
function isFilesystemRoot(target) {
|
|
152
|
+
const normalized = path.resolve(target);
|
|
153
|
+
return normalized === path.parse(normalized).root;
|
|
154
|
+
}
|
|
155
|
+
function isUsableWorkspaceCandidate(target, packageRoot) {
|
|
156
|
+
if (!isExistingDirectory(target)) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
if (target === packageRoot || isFilesystemRoot(target)) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
149
164
|
function resolveFromEnvKeys(keys, packageRoot) {
|
|
150
165
|
for (const key of keys) {
|
|
151
166
|
const candidate = safeResolve(process.env[key] || "");
|
|
@@ -153,7 +168,7 @@ function resolveFromEnvKeys(keys, packageRoot) {
|
|
|
153
168
|
if (resolved) {
|
|
154
169
|
return resolved;
|
|
155
170
|
}
|
|
156
|
-
if (
|
|
171
|
+
if (isUsableWorkspaceCandidate(candidate, packageRoot)) {
|
|
157
172
|
return candidate;
|
|
158
173
|
}
|
|
159
174
|
}
|
|
@@ -219,7 +234,7 @@ function resolveAutoWorkspaceRoot(packageRoot) {
|
|
|
219
234
|
};
|
|
220
235
|
}
|
|
221
236
|
const cwd = safeResolve(process.cwd());
|
|
222
|
-
if (
|
|
237
|
+
if (isUsableWorkspaceCandidate(cwd, packageRoot)) {
|
|
223
238
|
if (looksLikeWorkspaceRoot(cwd)) {
|
|
224
239
|
return { root: cwd, source: "cwd", explicitHonored: false };
|
|
225
240
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-probe-kit",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.3",
|
|
4
4
|
"description": "AI-Powered Development Toolkit - MCP Server with 30 tools covering code quality, development efficiency, project management, and UI/UX design. Features: Structured Output, Workflow Orchestration, MCP Skill auto-sync, UI/UX Pro Max, and Requirements Interview.",
|
|
5
5
|
"mcpName": "io.github.mybolide/mcp-probe-kit",
|
|
6
6
|
"type": "module",
|