staff-mcp 1.0.18 → 1.0.20
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 +1 -0
- package/README_zh.md +1 -0
- package/dist/src/index.js +9 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/server.d.ts +3 -1
- package/dist/src/server.js +6 -2
- package/dist/src/server.js.map +1 -1
- package/dist/src/skills/resolver.js +1 -1
- package/dist/src/skills/resolver.js.map +1 -1
- package/dist/tests/lsp-client.test.js +1 -1
- package/dist/tests/lsp-client.test.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -99,6 +99,7 @@ It will securely download, configure, and reload the skill without you lifting a
|
|
|
99
99
|
| `-w, --working-dir` | Root directory for the sandbox | `process.cwd()` |
|
|
100
100
|
| `-d, --allowed-dir` | Extra directories allowed for access | `[]` |
|
|
101
101
|
| `-r, --profile` | The active profile for skills (e.g., android-reverse) | `default` |
|
|
102
|
+
| `--enable-lsp` | Enable LSP capabilities (disabled by default) | `false` |
|
|
102
103
|
| `--docker` | Run inside a Docker container using this image | `undefined` |
|
|
103
104
|
| `-D, --docker-args` | Extra args for `docker run` (e.g., `-e FOO=BAR`) | `[]` |
|
|
104
105
|
| `-t, --transport` | Transport type (`stdio`, `http`, or `reverse`) | `stdio` |
|
package/README_zh.md
CHANGED
|
@@ -99,6 +99,7 @@ npx -y staff-mcp@latest --profile android-reverse
|
|
|
99
99
|
| `-w, --working-dir` | 沙盒的根目录 (工作区) | `process.cwd()` |
|
|
100
100
|
| `-d, --allowed-dir` | 额外允许 AI 访问的宿主机目录 | `[]` |
|
|
101
101
|
| `-r, --profile` | 当前激活的技能档案/工种 (如 android-reverse) | `default` |
|
|
102
|
+
| `--enable-lsp` | 启用 LSP 语言服务器功能 (默认禁用) | `false` |
|
|
102
103
|
| `--docker` | 在指定的 Docker 镜像内运行 AI | `undefined` |
|
|
103
104
|
| `-D, --docker-args` | 传递给 `docker run` 的自定义底层参数 | `[]` |
|
|
104
105
|
| `-t, --transport` | 传输协议 (`stdio`, `http`, 或 `reverse`) | `stdio` |
|
package/dist/src/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { createServerFactory } from "./server.js";
|
|
|
9
9
|
import { startStdioServer } from "./transports/stdio.js";
|
|
10
10
|
import { startHttpServer } from "./transports/http.js";
|
|
11
11
|
import { startReverseServer } from "./transports/reverse.js";
|
|
12
|
-
import { ensureStaffDirs } from "./utils/paths.js";
|
|
12
|
+
import { ensureStaffDirs, STAFF_SKILLS_DIR, STAFF_PROFILES_DIR } from "./utils/paths.js";
|
|
13
13
|
// Global error handlers to prevent the MCP server from crashing due to unhandled child process errors
|
|
14
14
|
process.on("uncaughtException", (err) => {
|
|
15
15
|
if (err.code === "ENOENT" && err.syscall && err.syscall.startsWith("spawn")) {
|
|
@@ -39,6 +39,7 @@ program
|
|
|
39
39
|
.option("-d, --allowed-dir <paths...>", "Additional directories allowed for sandbox", [])
|
|
40
40
|
.option("-r, --profile <name>", "The active profile for skills and instructions (e.g., android-reverse, default)", "default")
|
|
41
41
|
.option("-m, --max-mcp-sessions <number>", "Maximum number of concurrent MCP sessions allowed", "5")
|
|
42
|
+
.option("--enable-lsp", "Enable LSP capabilities (disabled by default)", false)
|
|
42
43
|
.option("--docker <image>", "Run the MCP server inside a Docker container using the specified image")
|
|
43
44
|
.option("-D, --docker-args <args...>", "Additional arguments to pass to the docker run command (e.g., -e ADB_SERVER_SOCKET=...)")
|
|
44
45
|
.allowUnknownOption()
|
|
@@ -77,15 +78,12 @@ program
|
|
|
77
78
|
// 3.8 Mount Host User-Level Skills and Profiles
|
|
78
79
|
// Do not mount the entire ~/.staff to avoid cross-platform binary conflicts (e.g., native extensions, ripgrep)
|
|
79
80
|
ensureStaffDirs(); // Ensure host directories exist to avoid Docker creating them with root permissions
|
|
80
|
-
const hostHome = os.homedir();
|
|
81
|
-
const hostSkills = path.join(hostHome, ".staff", "skills");
|
|
82
|
-
const hostProfiles = path.join(hostHome, ".staff", "profiles");
|
|
83
81
|
// Mount to a fixed, safe path in the container and point the containerized staff-mcp to it
|
|
84
82
|
// This avoids making any assumptions about the container's user or HOME directory
|
|
85
83
|
const containerStaffDir = "/opt/.staff";
|
|
86
84
|
dockerArgs.push("-e", `STAFF_GLOBAL_DIR=${containerStaffDir}`);
|
|
87
|
-
dockerArgs.push("-v", `${toDockerVolumePath(
|
|
88
|
-
dockerArgs.push("-v", `${toDockerVolumePath(
|
|
85
|
+
dockerArgs.push("-v", `${toDockerVolumePath(STAFF_SKILLS_DIR)}:${containerStaffDir}/skills`);
|
|
86
|
+
dockerArgs.push("-v", `${toDockerVolumePath(STAFF_PROFILES_DIR)}:${containerStaffDir}/profiles`);
|
|
89
87
|
// 4. Mount additional allowed directories
|
|
90
88
|
if (options.allowedDir && options.allowedDir.length > 0) {
|
|
91
89
|
options.allowedDir.forEach((dir) => {
|
|
@@ -140,6 +138,9 @@ program
|
|
|
140
138
|
}
|
|
141
139
|
dockerArgs.push("-r", options.profile);
|
|
142
140
|
dockerArgs.push("-m", String(options.maxMcpSessions));
|
|
141
|
+
if (options.enableLsp) {
|
|
142
|
+
dockerArgs.push("--enable-lsp");
|
|
143
|
+
}
|
|
143
144
|
// 10. Spawn Docker and pipe I/O natively
|
|
144
145
|
const child = spawn("docker", dockerArgs, { stdio: ["pipe", "inherit", "inherit"] });
|
|
145
146
|
process.stdin.pipe(child.stdin);
|
|
@@ -171,7 +172,8 @@ program
|
|
|
171
172
|
const allowedDirs = options.allowedDir.map((d) => path.resolve(d));
|
|
172
173
|
const profile = options.profile;
|
|
173
174
|
const maxMcpSessions = parseInt(options.maxMcpSessions, 10) || 5;
|
|
174
|
-
const
|
|
175
|
+
const enableLsp = !!options.enableLsp;
|
|
176
|
+
const serverFactory = createServerFactory("staff-mcp", "1.0.0", workingDir, allowedDirs, profile, maxMcpSessions, enableLsp);
|
|
175
177
|
if (options.transport === "http") {
|
|
176
178
|
await startHttpServer(serverFactory, parseInt(options.port, 10), options.host);
|
|
177
179
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
6
6
|
* @param workingDir The working directory for the server.
|
|
7
7
|
* @param allowedDirs Additional directories for the SecurityManager.
|
|
8
8
|
* @param profile The active profile for skills and instructions.
|
|
9
|
+
* @param maxMcpSessions Maximum concurrent MCP sessions allowed.
|
|
10
|
+
* @param enableLsp Whether to enable LSP tools.
|
|
9
11
|
* @returns An initialized McpServer instance.
|
|
10
12
|
*/
|
|
11
|
-
export declare function createServerFactory(name: string, version: string, workingDir: string, allowedDirs: string[], profile?: string, maxMcpSessions?: number): () => McpServer;
|
|
13
|
+
export declare function createServerFactory(name: string, version: string, workingDir: string, allowedDirs: string[], profile?: string, maxMcpSessions?: number, enableLsp?: boolean): () => McpServer;
|
package/dist/src/server.js
CHANGED
|
@@ -13,9 +13,11 @@ import { getMcpInstructions } from "./tools/system-tools.js";
|
|
|
13
13
|
* @param workingDir The working directory for the server.
|
|
14
14
|
* @param allowedDirs Additional directories for the SecurityManager.
|
|
15
15
|
* @param profile The active profile for skills and instructions.
|
|
16
|
+
* @param maxMcpSessions Maximum concurrent MCP sessions allowed.
|
|
17
|
+
* @param enableLsp Whether to enable LSP tools.
|
|
16
18
|
* @returns An initialized McpServer instance.
|
|
17
19
|
*/
|
|
18
|
-
export function createServerFactory(name, version, workingDir, allowedDirs, profile = "default", maxMcpSessions = 5) {
|
|
20
|
+
export function createServerFactory(name, version, workingDir, allowedDirs, profile = "default", maxMcpSessions = 5, enableLsp = false) {
|
|
19
21
|
const security = new SecurityManager(workingDir, allowedDirs);
|
|
20
22
|
// Generate instructions with system-specific details (OS, shell, etc.)
|
|
21
23
|
const instructions = getMcpInstructions(workingDir, security);
|
|
@@ -30,7 +32,9 @@ export function createServerFactory(name, version, workingDir, allowedDirs, prof
|
|
|
30
32
|
// Register all functional tool modules
|
|
31
33
|
registerFileTools(server, security);
|
|
32
34
|
registerShellTools(server, security);
|
|
33
|
-
|
|
35
|
+
if (enableLsp) {
|
|
36
|
+
registerLspTools(server, security);
|
|
37
|
+
}
|
|
34
38
|
registerSkillTools(server, workingDir, security, profile);
|
|
35
39
|
registerMcpClientTools(server, { maxSessions: maxMcpSessions });
|
|
36
40
|
return server;
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,OAAe,EACf,UAAkB,EAClB,WAAqB,EACrB,UAAkB,SAAS,EAC3B,iBAAyB,CAAC,EAC1B,YAAqB,KAAK;IAE1B,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE9D,uEAAuE;IACvE,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9D,OAAO,GAAG,EAAE;QACV,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;YACE,IAAI;YACJ,OAAO;SACR,EACD;YACE,yDAAyD;YACzD,YAAY;SACb,CACF,CAAC;QAEF,uCAAuC;QACvC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAErC,IAAI,SAAS,EAAE,CAAC;YACd,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1D,sBAAsB,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;QAEhE,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -18,7 +18,7 @@ export const SKILL_SUBDIRS = ["skills", "skill"];
|
|
|
18
18
|
*/
|
|
19
19
|
export function getSearchPaths(workingDir, profile = "default") {
|
|
20
20
|
const searchPaths = [];
|
|
21
|
-
const homeDir = os.homedir();
|
|
21
|
+
const homeDir = process.env.STAFF_GLOBAL_DIR ? path.dirname(process.env.STAFF_GLOBAL_DIR) : os.homedir();
|
|
22
22
|
// 辅助函数:构造特定基准目录下的所有变体路径
|
|
23
23
|
const addVariations = (basePaths, suffixes) => {
|
|
24
24
|
basePaths.forEach(base => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/skills/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,WAAW;AACX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,UAAkB,SAAS;IAC5E,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/skills/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,WAAW;AACX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,UAAkB,SAAS;IAC5E,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAEzG,wBAAwB;IACxB,MAAM,aAAa,GAAG,CAAC,SAAmB,EAAE,QAAkB,EAAE,EAAE;QAChE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACxB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACxB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,SAAS;IACT,aAAa,CAAC,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IAE3C,aAAa;IACb,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACrF,aAAa,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;IAErD,WAAW;IACX,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;IAExC,WAAW;IACX,2CAA2C;IAC3C,IAAI,IAAI,GAAG,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEhE,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -4,7 +4,7 @@ async function run() {
|
|
|
4
4
|
console.log("Starting full LSP suite test via MCP...");
|
|
5
5
|
const transport = new StdioClientTransport({
|
|
6
6
|
command: "npx",
|
|
7
|
-
args: ["tsx", "src/index.ts"]
|
|
7
|
+
args: ["tsx", "src/index.ts", "--enable-lsp"]
|
|
8
8
|
});
|
|
9
9
|
const client = new Client({ name: "test-client", version: "1.0.0" }, { capabilities: {} });
|
|
10
10
|
await client.connect(transport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-client.test.js","sourceRoot":"","sources":["../../tests/lsp-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,KAAK,UAAU,GAAG;IAChB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;QACzC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp-client.test.js","sourceRoot":"","sources":["../../tests/lsp-client.test.ts"],"names":[],"mappings":"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"}
|