@besales/mcp 0.1.0 → 0.11.1
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 +272 -17
- package/dist/auth/connection-store.d.ts +58 -0
- package/dist/auth/connection-store.js +208 -0
- package/dist/auth/connection-store.js.map +1 -0
- package/dist/auth/oauth-client.d.ts +27 -2
- package/dist/auth/oauth-client.js +62 -11
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/auth/session-workspace.d.ts +2 -0
- package/dist/auth/session-workspace.js +20 -0
- package/dist/auth/session-workspace.js.map +1 -0
- package/dist/auth/token-storage.d.ts +19 -5
- package/dist/auth/token-storage.js +11 -6
- package/dist/auth/token-storage.js.map +1 -1
- package/dist/cli.d.ts +2 -7
- package/dist/cli.js +111 -33
- package/dist/cli.js.map +1 -1
- package/dist/http/api-client.d.ts +4 -13
- package/dist/http/api-client.js +18 -18
- package/dist/http/api-client.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/instructions/server-instructions.d.ts +15 -0
- package/dist/instructions/server-instructions.js +243 -0
- package/dist/instructions/server-instructions.js.map +1 -0
- package/dist/package-metadata.js +7 -1
- package/dist/package-metadata.js.map +1 -1
- package/dist/resources/concepts/feedback-sheets.md +77 -0
- package/dist/resources/concepts/sandbox.md +13 -0
- package/dist/resources/concepts/workbook-classification.md +241 -0
- package/dist/resources/docs/agent-behavior.md +393 -0
- package/dist/resources/docs/crm-integration.md +535 -0
- package/dist/resources/docs/files-and-uploads.md +295 -0
- package/dist/resources/docs/knowledge-base.md +521 -0
- package/dist/resources/docs/pipeline-builder.md +221 -0
- package/dist/resources/docs/pipeline-settings-deep.md +221 -0
- package/dist/resources/docs/platforms.md +513 -0
- package/dist/resources/docs/prompt-anatomy.md +298 -0
- package/dist/resources/docs/prompt-principles.md +289 -0
- package/dist/resources/registry.js +34 -12
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/compare-models.md +46 -0
- package/dist/resources/workflows/connect-crm-from-scratch.md +89 -0
- package/dist/resources/workflows/connect-datasource-from-scratch.md +92 -0
- package/dist/resources/workflows/extract-from-document.md +36 -0
- package/dist/resources/workflows/iterate-with-sandbox.md +31 -0
- package/dist/resources/workflows/platform-setup-from-scratch.md +113 -0
- package/dist/resources/workflows/production-readiness-check.md +41 -0
- package/dist/schemas/mcp-tools.json +2636 -182
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/definitions/agent-design.d.ts +215 -0
- package/dist/tools/definitions/agent-design.js +643 -0
- package/dist/tools/definitions/agent-design.js.map +1 -0
- package/dist/tools/definitions/crm-platform.d.ts +211 -0
- package/dist/tools/definitions/crm-platform.js +1070 -0
- package/dist/tools/definitions/crm-platform.js.map +1 -0
- package/dist/tools/definitions/datasource.d.ts +40 -0
- package/dist/tools/definitions/datasource.js +196 -0
- package/dist/tools/definitions/datasource.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +215 -0
- package/dist/tools/definitions/knowledge.js +782 -0
- package/dist/tools/definitions/knowledge.js.map +1 -0
- package/dist/tools/definitions/model-comparison.d.ts +25 -0
- package/dist/tools/definitions/model-comparison.js +101 -0
- package/dist/tools/definitions/model-comparison.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +412 -0
- package/dist/tools/definitions/platform-setup.js +738 -0
- package/dist/tools/definitions/platform-setup.js.map +1 -0
- package/dist/tools/definitions/session.d.ts +11 -0
- package/dist/tools/definitions/session.js +86 -0
- package/dist/tools/definitions/session.js.map +1 -0
- package/dist/tools/definitions/shared.d.ts +742 -0
- package/dist/tools/definitions/shared.js +773 -0
- package/dist/tools/definitions/shared.js.map +1 -0
- package/dist/tools/definitions.d.ts +873 -88
- package/dist/tools/definitions.js +14 -856
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/registry.d.ts +3 -1
- package/dist/tools/registry.js +90 -11
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/result.d.ts +1 -1
- package/dist/tools/result.js +12 -4
- package/dist/tools/result.js.map +1 -1
- package/dist/utils/logger.js +2 -1
- package/dist/utils/logger.js.map +1 -1
- package/docs/host-setup.md +34 -15
- package/package.json +2 -2
- package/scripts/install-claude-desktop.js +89 -11
- package/scripts/mock-api-server.js +1 -1
- package/scripts/mock-credentials.js +49 -6
- package/dist/types/api-contract.gen.d.ts +0 -6975
- package/dist/types/api-contract.gen.js +0 -6
- package/dist/types/api-contract.gen.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,gBAAgB;IACnB,GAAG,kBAAkB;IACrB,GAAG,cAAc;IACjB,GAAG,gBAAgB;IACnB,GAAG,eAAe;IAClB,GAAG,YAAY;IACf,GAAG,oBAAoB;CACxB,CAAC"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { ConnectionStore } from '../auth/connection-store.js';
|
|
2
3
|
import { type ToolApiClient } from '../http/api-client.js';
|
|
3
|
-
import {
|
|
4
|
+
import type { CreateToolsOptions } from './definitions/shared.js';
|
|
4
5
|
export interface RegisteredTool extends Tool {
|
|
5
6
|
handler(args: Record<string, unknown>): Promise<CallToolResult> | CallToolResult;
|
|
6
7
|
}
|
|
7
8
|
export interface ToolFactoryOptions extends CreateToolsOptions {
|
|
8
9
|
readonly apiClient?: ToolApiClient;
|
|
10
|
+
readonly store?: ConnectionStore;
|
|
9
11
|
}
|
|
10
12
|
export declare function createTools(options?: ToolFactoryOptions): RegisteredTool[];
|
|
11
13
|
export declare const tools: RegisteredTool[];
|
package/dist/tools/registry.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConnectionStore, WorkspaceResolutionError } from '../auth/connection-store.js';
|
|
2
|
+
import { getSessionWorkspaceId } from '../auth/session-workspace.js';
|
|
3
|
+
import { ApiClient } from '../http/api-client.js';
|
|
2
4
|
import { getToolContract } from './contracts.js';
|
|
3
5
|
import { toolDefinitions } from './definitions.js';
|
|
4
6
|
import { jsonToolResult, mapToolError } from './result.js';
|
|
5
7
|
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
6
8
|
export function createTools(options = {}) {
|
|
7
9
|
const apiClient = options.apiClient ?? new ApiClient();
|
|
10
|
+
const store = options.store ?? new ConnectionStore();
|
|
8
11
|
return toolDefinitions.map((rawDefinition) => {
|
|
9
12
|
const definition = rawDefinition;
|
|
10
13
|
const contract = getToolContract(definition.name);
|
|
@@ -13,40 +16,116 @@ export function createTools(options = {}) {
|
|
|
13
16
|
description: contract.description,
|
|
14
17
|
inputSchema: contract.inputSchema,
|
|
15
18
|
async handler(args) {
|
|
19
|
+
let resolvedWorkspaceId;
|
|
16
20
|
try {
|
|
17
21
|
const parsedInput = definition.schema.parse(args);
|
|
18
|
-
|
|
22
|
+
await store.migrateLegacy();
|
|
23
|
+
if (definition.localHandler) {
|
|
24
|
+
const localOutput = await definition.localHandler(parsedInput, {
|
|
25
|
+
store,
|
|
26
|
+
env: process.env,
|
|
27
|
+
});
|
|
28
|
+
return jsonToolResult(localOutput);
|
|
29
|
+
}
|
|
30
|
+
const { workspaceId, apiKey } = await resolveWorkspace(parsedInput, definition, store);
|
|
31
|
+
resolvedWorkspaceId = workspaceId;
|
|
32
|
+
const input = applyWorkspaceId(parsedInput, definition, workspaceId);
|
|
33
|
+
if (!definition.createRequest) {
|
|
34
|
+
throw new Error(`Tool ${definition.name} has neither localHandler nor createRequest`);
|
|
35
|
+
}
|
|
19
36
|
const request = definition.createRequest(input);
|
|
20
37
|
const response = request.method
|
|
21
|
-
? await apiClient.request(request.method, request.path, request.body)
|
|
22
|
-
: await apiClient.post(request.path, request.body);
|
|
38
|
+
? await apiClient.request(request.method, request.path, apiKey, request.body)
|
|
39
|
+
: await apiClient.post(request.path, apiKey, request.body);
|
|
23
40
|
const output = definition.enhanceResponse
|
|
24
41
|
? definition.enhanceResponse(response, input)
|
|
25
42
|
: response;
|
|
26
43
|
return jsonToolResult(output);
|
|
27
44
|
}
|
|
28
45
|
catch (error) {
|
|
29
|
-
return mapToolError(error, definition.restartToolName);
|
|
46
|
+
return mapToolError(error, definition.restartToolName, resolvedWorkspaceId);
|
|
30
47
|
}
|
|
31
48
|
},
|
|
32
49
|
};
|
|
33
50
|
});
|
|
34
51
|
}
|
|
35
52
|
export const tools = createTools();
|
|
36
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Выбирает воркспейс и его api_key для вызова. Приоритет (env — authoritative):
|
|
55
|
+
* 1. `BESALES_WORKSPACE_ID` (жёсткий пин сессии; несовпадающий explicit → ошибка);
|
|
56
|
+
* 2. явный `workspace_id` в аргументах тула (только без env);
|
|
57
|
+
* 3. session-override (`besales_workspace_use`, in-memory для процесса-сессии);
|
|
58
|
+
* 4. глобальный `active`;
|
|
59
|
+
* 5. единственное подключение;
|
|
60
|
+
* иначе — `WorkspaceResolutionError` с конкретным указанием, что сделать.
|
|
61
|
+
*/
|
|
62
|
+
async function resolveWorkspace(input, definition, store, env = process.env, sessionWorkspaceId = getSessionWorkspaceId()) {
|
|
63
|
+
const connections = await store.list();
|
|
64
|
+
if (connections.length === 0) {
|
|
65
|
+
throw new WorkspaceResolutionError('Not connected to any Animaly workspace. Run `besales-mcp connect`.');
|
|
66
|
+
}
|
|
67
|
+
const isConnected = (id) => connections.some((connection) => connection.workspaceId === id);
|
|
68
|
+
const explicitWorkspaceId = definition.defaultWorkspaceId ? getWorkspaceId(input) : undefined;
|
|
69
|
+
const envWorkspaceId = env.BESALES_WORKSPACE_ID?.trim() || undefined;
|
|
70
|
+
const chosen = envWorkspaceId
|
|
71
|
+
? resolvePinnedWorkspace(envWorkspaceId, explicitWorkspaceId, isConnected)
|
|
72
|
+
: resolveSelectedWorkspace(explicitWorkspaceId, connections, isConnected, sessionWorkspaceId, await store.getActive());
|
|
73
|
+
const apiKey = await store.getKey(chosen);
|
|
74
|
+
if (!apiKey) {
|
|
75
|
+
throw new WorkspaceResolutionError(`Workspace ${chosen} has no stored key (partial state). Run \`besales-mcp connect\` again.`);
|
|
76
|
+
}
|
|
77
|
+
return { workspaceId: chosen, apiKey };
|
|
78
|
+
}
|
|
79
|
+
function resolvePinnedWorkspace(envWorkspaceId, explicitWorkspaceId, isConnected) {
|
|
80
|
+
if (!UUID_PATTERN.test(envWorkspaceId)) {
|
|
81
|
+
throw new WorkspaceResolutionError(`BESALES_WORKSPACE_ID is not a valid workspace id: ${envWorkspaceId}`);
|
|
82
|
+
}
|
|
83
|
+
if (!isConnected(envWorkspaceId)) {
|
|
84
|
+
throw new WorkspaceResolutionError(`This session is pinned to workspace ${envWorkspaceId} via BESALES_WORKSPACE_ID, but it is not connected. Run \`besales-mcp connect\` for it.`);
|
|
85
|
+
}
|
|
86
|
+
if (explicitWorkspaceId && explicitWorkspaceId !== envWorkspaceId) {
|
|
87
|
+
throw new WorkspaceResolutionError(`This session is pinned to workspace ${envWorkspaceId} via BESALES_WORKSPACE_ID; the tool requested ${explicitWorkspaceId}. Cross-workspace calls are refused.`);
|
|
88
|
+
}
|
|
89
|
+
return envWorkspaceId;
|
|
90
|
+
}
|
|
91
|
+
function resolveSelectedWorkspace(explicitWorkspaceId, connections, isConnected, sessionWorkspaceId, active) {
|
|
92
|
+
if (explicitWorkspaceId) {
|
|
93
|
+
if (!isConnected(explicitWorkspaceId)) {
|
|
94
|
+
throw new WorkspaceResolutionError(`Workspace ${explicitWorkspaceId} is not connected. Run \`besales-mcp connect\` for it.`);
|
|
95
|
+
}
|
|
96
|
+
return explicitWorkspaceId;
|
|
97
|
+
}
|
|
98
|
+
if (sessionWorkspaceId && isConnected(sessionWorkspaceId)) {
|
|
99
|
+
return sessionWorkspaceId;
|
|
100
|
+
}
|
|
101
|
+
if (active && isConnected(active)) {
|
|
102
|
+
return active;
|
|
103
|
+
}
|
|
104
|
+
if (connections.length === 1) {
|
|
105
|
+
return connections[0].workspaceId;
|
|
106
|
+
}
|
|
107
|
+
throw new WorkspaceResolutionError('Multiple workspaces connected and none selected. Bind this session with the besales_workspace_use tool, set BESALES_WORKSPACE_ID, or run `besales-mcp use <workspaceId>`.');
|
|
108
|
+
}
|
|
109
|
+
function applyWorkspaceId(input, definition, workspaceId) {
|
|
37
110
|
if (!definition.defaultWorkspaceId || !isWorkspaceInput(input) || input.workspace_id) {
|
|
38
111
|
return input;
|
|
39
112
|
}
|
|
40
|
-
const workspaceId = await apiClient.getStoredWorkspaceId();
|
|
41
|
-
if (!workspaceId || !UUID_PATTERN.test(workspaceId)) {
|
|
42
|
-
throw new ApiClientError('Connected workspace is missing');
|
|
43
|
-
}
|
|
44
113
|
return {
|
|
45
114
|
...input,
|
|
46
115
|
workspace_id: workspaceId,
|
|
47
116
|
};
|
|
48
117
|
}
|
|
118
|
+
function getWorkspaceId(input) {
|
|
119
|
+
if (!isWorkspaceInput(input)) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
return input.workspace_id && input.workspace_id.length > 0 ? input.workspace_id : undefined;
|
|
123
|
+
}
|
|
49
124
|
function isWorkspaceInput(input) {
|
|
50
|
-
|
|
125
|
+
if (!input || typeof input !== 'object') {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
const candidate = input.workspace_id;
|
|
129
|
+
return candidate === undefined || typeof candidate === 'string';
|
|
51
130
|
}
|
|
52
131
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAsB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,YAAY,GAAG,4EAA4E,CAAC;AAgBlG,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,SAAS,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,eAAe,EAAE,CAAC;IAErD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,aAAa,EAAkB,EAAE;QAC3D,MAAM,UAAU,GAAG,aAAwC,CAAC;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAElD,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,KAAK,CAAC,OAAO,CAAC,IAAI;gBAChB,IAAI,mBAAuC,CAAC;gBAC5C,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClD,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;oBAE5B,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;wBAC5B,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE;4BAC7D,KAAK;4BACL,GAAG,EAAE,OAAO,CAAC,GAAG;yBACjB,CAAC,CAAC;wBACH,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;oBACrC,CAAC;oBAED,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;oBACvF,mBAAmB,GAAG,WAAW,CAAC;oBAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;oBACrE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;wBAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,UAAU,CAAC,IAAI,6CAA6C,CAAC,CAAC;oBACxF,CAAC;oBACD,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM;wBAC7B,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;wBAC7E,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe;wBACvC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC;wBAC7C,CAAC,CAAC,QAAQ,CAAC;oBAEb,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAqB,WAAW,EAAE,CAAC;AAErD;;;;;;;;GAQG;AACH,KAAK,UAAU,gBAAgB,CAC7B,KAAc,EACd,UAAmC,EACnC,KAAsB,EACtB,MAAyB,OAAO,CAAC,GAAG,EACpC,qBAAyC,qBAAqB,EAAE;IAEhE,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,wBAAwB,CAChC,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,EAAU,EAAW,EAAE,CAC1C,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IAClE,MAAM,mBAAmB,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,MAAM,cAAc,GAAG,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAErE,MAAM,MAAM,GAAG,cAAc;QAC3B,CAAC,CAAC,sBAAsB,CAAC,cAAc,EAAE,mBAAmB,EAAE,WAAW,CAAC;QAC1E,CAAC,CAAC,wBAAwB,CACtB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,MAAM,KAAK,CAAC,SAAS,EAAE,CACxB,CAAC;IAEN,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,wBAAwB,CAChC,aAAa,MAAM,wEAAwE,CAC5F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,sBAAsB,CAC7B,cAAsB,EACtB,mBAAuC,EACvC,WAAoC;IAEpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,wBAAwB,CAChC,qDAAqD,cAAc,EAAE,CACtE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,wBAAwB,CAChC,uCAAuC,cAAc,yFAAyF,CAC/I,CAAC;IACJ,CAAC;IACD,IAAI,mBAAmB,IAAI,mBAAmB,KAAK,cAAc,EAAE,CAAC;QAClE,MAAM,IAAI,wBAAwB,CAChC,uCAAuC,cAAc,iDAAiD,mBAAmB,sCAAsC,CAChK,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,wBAAwB,CAC/B,mBAAuC,EACvC,WAA+C,EAC/C,WAAoC,EACpC,kBAAsC,EACtC,MAAqB;IAErB,IAAI,mBAAmB,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,wBAAwB,CAChC,aAAa,mBAAmB,wDAAwD,CACzF,CAAC;QACJ,CAAC;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,IAAI,kBAAkB,IAAI,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1D,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,wBAAwB,CAChC,2KAA2K,CAC5K,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAc,EACd,UAAmC,EACnC,WAAmB;IAEnB,IAAI,CAAC,UAAU,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,GAAG,KAAK;QACR,YAAY,EAAE,WAAW;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9F,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAI,KAAoC,CAAC,YAAY,CAAC;IACrE,OAAO,SAAS,KAAK,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC;AAClE,CAAC"}
|
package/dist/tools/result.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
export declare function jsonToolResult(value: unknown): CallToolResult;
|
|
3
3
|
export declare function errorToolResult(message: string): CallToolResult;
|
|
4
|
-
export declare function mapToolError(error: unknown, restartToolName?: string): CallToolResult;
|
|
4
|
+
export declare function mapToolError(error: unknown, restartToolName?: string, workspaceId?: string): CallToolResult;
|
package/dist/tools/result.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { ZodError } from 'zod';
|
|
3
|
+
import { WorkspaceResolutionError } from '../auth/connection-store.js';
|
|
3
4
|
import { ApiClientError, ApiClientNetworkError } from '../http/api-client.js';
|
|
4
5
|
export function jsonToolResult(value) {
|
|
5
6
|
return {
|
|
@@ -22,12 +23,17 @@ export function errorToolResult(message) {
|
|
|
22
23
|
],
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
|
-
export function mapToolError(error, restartToolName) {
|
|
26
|
+
export function mapToolError(error, restartToolName, workspaceId) {
|
|
26
27
|
if (error instanceof ZodError) {
|
|
27
28
|
throw new McpError(ErrorCode.InvalidParams, formatZodError(error));
|
|
28
29
|
}
|
|
30
|
+
// Конкретные сообщения резолвера воркспейса (не подключён / неоднозначно /
|
|
31
|
+
// env-конфликт) — иначе ApiClientError-ветка ниже схлопнула бы их в generic.
|
|
32
|
+
if (error instanceof WorkspaceResolutionError) {
|
|
33
|
+
return errorToolResult(error.message);
|
|
34
|
+
}
|
|
29
35
|
if (error instanceof ApiClientError) {
|
|
30
|
-
return mapApiClientError(error, restartToolName);
|
|
36
|
+
return mapApiClientError(error, restartToolName, workspaceId);
|
|
31
37
|
}
|
|
32
38
|
if (error instanceof ApiClientNetworkError) {
|
|
33
39
|
return errorToolResult(`Animaly API network error: ${error.message}`);
|
|
@@ -40,7 +46,7 @@ export function mapToolError(error, restartToolName) {
|
|
|
40
46
|
}
|
|
41
47
|
throw new McpError(ErrorCode.InternalError, 'Unknown tool execution error');
|
|
42
48
|
}
|
|
43
|
-
function mapApiClientError(error, restartToolName) {
|
|
49
|
+
function mapApiClientError(error, restartToolName, workspaceId) {
|
|
44
50
|
if (!error.status) {
|
|
45
51
|
return errorToolResult('Not connected to Animaly. Run `besales-mcp connect` first.');
|
|
46
52
|
}
|
|
@@ -48,7 +54,9 @@ function mapApiClientError(error, restartToolName) {
|
|
|
48
54
|
return errorToolResult(`Animaly API is temporarily unavailable (${error.status}). Try again later.`);
|
|
49
55
|
}
|
|
50
56
|
if (error.status === 401) {
|
|
51
|
-
return errorToolResult(
|
|
57
|
+
return errorToolResult(workspaceId
|
|
58
|
+
? `Animaly rejected stored credentials for workspace ${workspaceId}. Run \`besales-mcp connect\` again for it.`
|
|
59
|
+
: 'Animaly rejected stored credentials. Run `besales-mcp connect` again.');
|
|
52
60
|
}
|
|
53
61
|
if (error.status === 403) {
|
|
54
62
|
return errorToolResult('Animaly rejected this request. The stored key needs `mcp:*` or `mcp:platform-setup` access.');
|
package/dist/tools/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/tools/result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,GAET,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/tools/result.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pino from 'pino';
|
|
2
|
+
const STDERR_FD = 2;
|
|
2
3
|
export const logger = pino({
|
|
3
4
|
level: process.env.LOG_LEVEL ?? (process.env.NODE_ENV === 'test' ? 'silent' : 'info'),
|
|
4
5
|
redact: [
|
|
@@ -9,5 +10,5 @@ export const logger = pino({
|
|
|
9
10
|
'*.apiKey',
|
|
10
11
|
'*.*.apiKey',
|
|
11
12
|
],
|
|
12
|
-
}, pino.destination(
|
|
13
|
+
}, pino.destination(STDERR_FD));
|
|
13
14
|
//# sourceMappingURL=logger.js.map
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CACxB;IACE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACrF,MAAM,EAAE;QACN,SAAS;QACT,WAAW;QACX,aAAa;QACb,QAAQ;QACR,UAAU;QACV,YAAY;KACb;CACF,EACD,IAAI,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CACxB;IACE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACrF,MAAM,EAAE;QACN,SAAS;QACT,WAAW;QACX,aAAa;QACb,QAAQ;QACR,UAAU;QACV,YAAY;KACb;CACF,EACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAC5B,CAAC"}
|
package/docs/host-setup.md
CHANGED
|
@@ -41,35 +41,49 @@ Use this base URL for local host configs:
|
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
export BESALES_API_BASE_URL=http://localhost:3000/api/v2
|
|
44
|
+
export BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent
|
|
44
45
|
```
|
|
45
46
|
|
|
46
47
|
`prompt-services` is not a host precondition. Hosts talk only to `besales-mcp`,
|
|
47
48
|
and `besales-mcp` talks only to `ai-aniomaly`.
|
|
48
49
|
|
|
49
|
-
For production users, omit
|
|
50
|
-
`https://
|
|
50
|
+
For production users, omit both variables. The package defaults to
|
|
51
|
+
`BESALES_API_BASE_URL=https://core.besales.ai/api/v2` and
|
|
52
|
+
`BESALES_OAUTH_AUTHORIZE_URL=https://app.besales.ai/settings/mcp/consent`.
|
|
51
53
|
|
|
52
54
|
## Credentials
|
|
53
55
|
|
|
54
56
|
Live tool calls require an MCP API key stored in the local macOS keychain:
|
|
55
57
|
|
|
56
58
|
```bash
|
|
57
|
-
BESALES_API_BASE_URL=http://localhost:3000/api/v2
|
|
59
|
+
BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
|
|
60
|
+
BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
|
|
61
|
+
node bin/besales-mcp.js connect
|
|
58
62
|
BESALES_API_BASE_URL=http://localhost:3000/api/v2 node bin/besales-mcp.js status
|
|
59
63
|
```
|
|
60
64
|
|
|
61
65
|
The `connect` command opens the browser and completes
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
the frontend consent bridge, which forwards to backend
|
|
67
|
+
`/api/v2/auth/mcp-connect` through the loopback callback. `disconnect` removes the
|
|
68
|
+
active workspace (add an id to remove one, or `--all` to clear every workspace):
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
BESALES_API_BASE_URL=http://localhost:3000/api/v2 node bin/besales-mcp.js disconnect --all
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Each connected workspace stores its own API key (several can coexist, even across
|
|
75
|
+
accounts). Connect each one once — re-login in the browser between accounts:
|
|
64
76
|
|
|
65
77
|
```bash
|
|
66
|
-
|
|
78
|
+
node bin/besales-mcp.js connect # workspace A (browser logged into account A)
|
|
79
|
+
node bin/besales-mcp.js connect # workspace B (re-login in the browser first)
|
|
80
|
+
node bin/besales-mcp.js connections # list all connections, marks the active one
|
|
67
81
|
```
|
|
68
82
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
83
|
+
Workspace-level tools default to the session's workspace; users should not be
|
|
84
|
+
asked to provide `workspace_id`. Pin a session with `BESALES_WORKSPACE_ID` in the
|
|
85
|
+
host's `env` block, or set the global default with `besales-mcp use <workspaceId>`.
|
|
86
|
+
See the package README "Multiple Workspaces" section for the full precedence.
|
|
73
87
|
|
|
74
88
|
For MCP protocol smoke without live auth, use the local mock API:
|
|
75
89
|
|
|
@@ -92,6 +106,7 @@ state.
|
|
|
92
106
|
|
|
93
107
|
```bash
|
|
94
108
|
BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
|
|
109
|
+
BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
|
|
95
110
|
yarn dlx @modelcontextprotocol/inspector node bin/besales-mcp.js
|
|
96
111
|
```
|
|
97
112
|
|
|
@@ -109,8 +124,8 @@ BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
|
|
|
109
124
|
|
|
110
125
|
Expected:
|
|
111
126
|
|
|
112
|
-
-
|
|
113
|
-
-
|
|
127
|
+
- 128 tools are listed.
|
|
128
|
+
- 23 resources are listed.
|
|
114
129
|
- `besales://concepts/external-execution` opens.
|
|
115
130
|
- A direct tool, for example `besales_icp_create`, reaches `ai-aniomaly`.
|
|
116
131
|
- An external pair returns instructions and accepts submit.
|
|
@@ -137,7 +152,8 @@ timestamped backup:
|
|
|
137
152
|
"command": "/absolute/path/to/node",
|
|
138
153
|
"args": ["/Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js"],
|
|
139
154
|
"env": {
|
|
140
|
-
"BESALES_API_BASE_URL": "http://localhost:3000/api/v2"
|
|
155
|
+
"BESALES_API_BASE_URL": "http://localhost:3000/api/v2",
|
|
156
|
+
"BESALES_OAUTH_AUTHORIZE_URL": "http://localhost:5173/settings/mcp/consent"
|
|
141
157
|
}
|
|
142
158
|
}
|
|
143
159
|
}
|
|
@@ -162,6 +178,7 @@ If `claude` is on `PATH`, add the server at user scope:
|
|
|
162
178
|
```bash
|
|
163
179
|
claude mcp add --scope user \
|
|
164
180
|
-e BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
|
|
181
|
+
-e BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
|
|
165
182
|
-- besales node /Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js
|
|
166
183
|
```
|
|
167
184
|
|
|
@@ -185,6 +202,7 @@ Codex CLI manages stdio MCP servers through `codex mcp`.
|
|
|
185
202
|
```bash
|
|
186
203
|
codex mcp add besales \
|
|
187
204
|
--env BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
|
|
205
|
+
--env BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
|
|
188
206
|
-- node /Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js
|
|
189
207
|
```
|
|
190
208
|
|
|
@@ -197,6 +215,7 @@ args = ["/Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js"]
|
|
|
197
215
|
|
|
198
216
|
[mcp_servers.besales.env]
|
|
199
217
|
BESALES_API_BASE_URL = "http://localhost:3000/api/v2"
|
|
218
|
+
BESALES_OAUTH_AUTHORIZE_URL = "http://localhost:5173/settings/mcp/consent"
|
|
200
219
|
```
|
|
201
220
|
|
|
202
221
|
Verify:
|
|
@@ -224,7 +243,7 @@ session may need an app/session restart before new tools appear.
|
|
|
224
243
|
Codex App can defer MCP tool schemas until the model searches for them. This is
|
|
225
244
|
host behavior, not a `besales-mcp` server problem: `codex mcp list/get besales`
|
|
226
245
|
and MCP Inspector `tools/list` are still the source checks for whether the
|
|
227
|
-
server is installed and exposing all
|
|
246
|
+
server is installed and exposing all 128 tools.
|
|
228
247
|
|
|
229
248
|
User-facing prompts must stay natural. Users should ask for the business action,
|
|
230
249
|
for example:
|
|
@@ -245,7 +264,7 @@ Use this matrix for local validation before staging/prod checks.
|
|
|
245
264
|
|
|
246
265
|
| Host | Config check | Protocol check | Direct tool | External pair |
|
|
247
266
|
|---|---|---|---|---|
|
|
248
|
-
| MCP Inspector | command launches |
|
|
267
|
+
| MCP Inspector | command launches | 128 tools / 23 resources | `besales_icp_create` | instructions -> submit |
|
|
249
268
|
| Claude Desktop | config JSON has `besales` | server connected | `besales_icp_create` | instructions -> submit |
|
|
250
269
|
| Claude Code | `claude mcp list` has `besales` | `/mcp` connected | `besales_icp_create` | instructions -> submit |
|
|
251
270
|
| Codex CLI | `codex mcp list` has `besales` | new session sees tools | `besales_icp_create` | instructions -> submit |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@besales/mcp",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Model Context Protocol server for Animaly / Besales",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/be-sales/mcp#readme",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"besales-mcp": "bin/besales-mcp.js"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
|
-
"build": "tsc && mkdir -p dist/schemas dist/resources/concepts && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/",
|
|
46
|
+
"build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/",
|
|
47
47
|
"start": "node bin/besales-mcp.js",
|
|
48
48
|
"dev:mock": "node scripts/mock-api-server.js",
|
|
49
49
|
"dev:mock:seed": "node scripts/mock-credentials.js seed",
|
|
@@ -11,6 +11,8 @@ const CLAUDE_CONFIG_PATH = join(
|
|
|
11
11
|
'Library/Application Support/Claude/claude_desktop_config.json',
|
|
12
12
|
);
|
|
13
13
|
const LOCAL_API_BASE_URL = 'http://localhost:3000/api/v2';
|
|
14
|
+
const LOCAL_OAUTH_AUTHORIZE_URL = 'http://localhost:5173/settings/mcp/consent';
|
|
15
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
14
16
|
const packageRoot = dirname(fileURLToPath(new URL('../package.json', import.meta.url)));
|
|
15
17
|
const binPath = join(packageRoot, 'bin/besales-mcp.js');
|
|
16
18
|
|
|
@@ -26,6 +28,68 @@ function ensureObject(value) {
|
|
|
26
28
|
return value;
|
|
27
29
|
}
|
|
28
30
|
|
|
31
|
+
/** Парсит `--name <serverName>` / `--workspace <uuid>` из argv. */
|
|
32
|
+
function parseArgs(argv) {
|
|
33
|
+
const args = {};
|
|
34
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
35
|
+
if (argv[index] === '--name') {
|
|
36
|
+
index += 1;
|
|
37
|
+
args.name = argv[index];
|
|
38
|
+
} else if (argv[index] === '--workspace') {
|
|
39
|
+
index += 1;
|
|
40
|
+
args.workspace = argv[index];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return args;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Какой `mcpServers`-entry установить:
|
|
49
|
+
* - без флагов → дефолтный `besales` с локальными dev-URL (как раньше);
|
|
50
|
+
* - `--name X --workspace <uuid>` → именованный сервер, жёстко привязанный к воркспейсу
|
|
51
|
+
* через `BESALES_WORKSPACE_ID` (прод-дефолты). Привязка живёт в конфиге, поэтому
|
|
52
|
+
* переживает респавн/reconnect — это надёжный способ держать N воркспейсов в GUI-хосте
|
|
53
|
+
* (несколько сессий, каждая на своём воркспейсе), в отличие от in-memory
|
|
54
|
+
* `besales_workspace_use`. Тулы появляются как `mcp__<name>__besales_*`.
|
|
55
|
+
*
|
|
56
|
+
* @throws {Error} если задан только один из `--name` / `--workspace` или невалидный uuid.
|
|
57
|
+
*/
|
|
58
|
+
function resolveServer({ name, workspace }, execPath) {
|
|
59
|
+
if (!name && !workspace) {
|
|
60
|
+
return {
|
|
61
|
+
key: 'besales',
|
|
62
|
+
entry: {
|
|
63
|
+
command: execPath,
|
|
64
|
+
args: [binPath],
|
|
65
|
+
env: {
|
|
66
|
+
BESALES_API_BASE_URL: LOCAL_API_BASE_URL,
|
|
67
|
+
BESALES_OAUTH_AUTHORIZE_URL: LOCAL_OAUTH_AUTHORIZE_URL,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!name || !workspace) {
|
|
74
|
+
throw new Error(
|
|
75
|
+
'Specify both --name <serverName> and --workspace <uuid> ' +
|
|
76
|
+
'(or neither for the local-dev default besales server).',
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
if (!UUID_PATTERN.test(workspace)) {
|
|
80
|
+
throw new Error(`--workspace is not a valid workspace id: ${workspace}`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
key: name,
|
|
85
|
+
entry: {
|
|
86
|
+
command: execPath,
|
|
87
|
+
args: [binPath],
|
|
88
|
+
env: { BESALES_WORKSPACE_ID: workspace },
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
29
93
|
async function readConfig() {
|
|
30
94
|
if (!existsSync(CLAUDE_CONFIG_PATH)) {
|
|
31
95
|
return {};
|
|
@@ -41,6 +105,8 @@ async function readConfig() {
|
|
|
41
105
|
}
|
|
42
106
|
|
|
43
107
|
async function install() {
|
|
108
|
+
const { key, entry } = resolveServer(parseArgs(process.argv.slice(2)), process.execPath);
|
|
109
|
+
|
|
44
110
|
await mkdir(dirname(CLAUDE_CONFIG_PATH), { recursive: true });
|
|
45
111
|
|
|
46
112
|
if (existsSync(CLAUDE_CONFIG_PATH)) {
|
|
@@ -51,23 +117,35 @@ async function install() {
|
|
|
51
117
|
|
|
52
118
|
const config = await readConfig();
|
|
53
119
|
const mcpServers = ensureObject(config.mcpServers);
|
|
54
|
-
|
|
55
|
-
mcpServers
|
|
56
|
-
command: process.execPath,
|
|
57
|
-
args: [binPath],
|
|
58
|
-
env: {
|
|
59
|
-
BESALES_API_BASE_URL: LOCAL_API_BASE_URL,
|
|
60
|
-
},
|
|
61
|
-
};
|
|
120
|
+
// Только upsert нужного ключа — остальные серверы (besales, pencil, другие пины) не трогаем.
|
|
121
|
+
mcpServers[key] = entry;
|
|
62
122
|
config.mcpServers = mcpServers;
|
|
63
123
|
|
|
64
124
|
const tempPath = `${CLAUDE_CONFIG_PATH}.tmp-${process.pid}`;
|
|
65
125
|
await writeFile(tempPath, `${JSON.stringify(config, null, 2)}\n`, 'utf-8');
|
|
66
126
|
await rename(tempPath, CLAUDE_CONFIG_PATH);
|
|
67
127
|
|
|
68
|
-
console.log(`Installed
|
|
69
|
-
|
|
70
|
-
|
|
128
|
+
console.log(`Installed MCP server "${key}" at ${CLAUDE_CONFIG_PATH}`);
|
|
129
|
+
|
|
130
|
+
if (entry.env.BESALES_WORKSPACE_ID) {
|
|
131
|
+
console.log(`Pinned to workspace ${entry.env.BESALES_WORKSPACE_ID} (production defaults).`);
|
|
132
|
+
console.log(`Tools will appear as mcp__${key}__besales_* — always this workspace,`);
|
|
133
|
+
console.log('and the pin survives reconnects (unlike the in-memory besales_workspace_use).');
|
|
134
|
+
} else {
|
|
135
|
+
console.log(`Node: ${process.execPath}`);
|
|
136
|
+
console.log(`Command args: ${binPath}`);
|
|
137
|
+
console.log('');
|
|
138
|
+
console.log('Local dev: export the same overrides in the shell before running connect,');
|
|
139
|
+
console.log('otherwise CLI uses production defaults and the issued key will not match');
|
|
140
|
+
console.log('the local backend:');
|
|
141
|
+
console.log('');
|
|
142
|
+
console.log(` export BESALES_API_BASE_URL=${LOCAL_API_BASE_URL}`);
|
|
143
|
+
console.log(` export BESALES_OAUTH_AUTHORIZE_URL=${LOCAL_OAUTH_AUTHORIZE_URL}`);
|
|
144
|
+
console.log(` node ${binPath} connect`);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
console.log('');
|
|
148
|
+
console.log('Restart Claude Desktop to load the change.');
|
|
71
149
|
}
|
|
72
150
|
|
|
73
151
|
install().catch((error) => {
|
|
@@ -27,7 +27,7 @@ const server = createServer((request, response) => {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const isInstructions = url.pathname.endsWith('/instructions');
|
|
30
|
-
const isSubmit = url.pathname.
|
|
30
|
+
const isSubmit = url.pathname.includes('/submit');
|
|
31
31
|
|
|
32
32
|
response.writeHead(isSubmit ? 201 : 200, { 'Content-Type': 'application/json' });
|
|
33
33
|
response.end(
|