@aalis/plugin-mcp-client 0.13.0 → 0.15.0

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
@@ -34,13 +34,12 @@ plugins:
34
34
  ## 依赖
35
35
 
36
36
  - `@modelcontextprotocol/sdk`
37
- - uses:`tools`(api-tools / plugin-tools)、`logger`、`lifecycle`、`config`;可选 `plugins`、`hostConfig`
37
+ - uses:`tools`(api-tools / plugin-tools)、`logger`、`lifecycle`、`config`;可选 `hostConfig`(`mcp_set_server_enabled` 经它的 `applyPluginConfig` 改配置并落盘)
38
38
 
39
39
  ## 注意
40
40
 
41
+ - `env` 声明了 `secret: true`:每个 server 的整份 `env` 算一个密钥,Node 宿主把它移进家目录的 `secrets.yaml`,配置文件里只留引用;WebUI 不回显,要改就整份重填。token 放进 `env`,不要写进 `args`(连接成功时的日志会写出全部 `args`)
41
42
  - `args` 必须是字符串数组、`env` 必须是映射;缺省时分别补 `[]` / `{}`。显式形态错误或任一成员不能转为字符串时,该 server 记录警告且不启动,其他 server 不受影响;合法的空字符串参数会原样传递
42
- - 旧版 WebUI 建的条目常带 `args: ''` / `env: ''`,删除该键或改为 `[]` / `{}`
43
- - 旧版按以下规则解析字符串,改写时照此拆分:`args` 先按行、再按空白切分,如 `args: "-y @scope/pkg"` 应改为 `["-y", "@scope/pkg"]`;`env` 每行一条 `KEY=VALUE`,忽略 `#` 开头的注释行,值去首尾空白
44
43
  - 缺少 `id` 或 `command` 的条目记录警告并跳过,其它 server 不受影响
45
44
  - `enabled` 不是布尔值、`visibility` 不在四档选项中时,同样跳过该 server
46
45
  - MCP `inputSchema` 顶层非 `type: 'object'` 时会被包装为 `{ input: schema }`
package/dist/index.d.ts CHANGED
@@ -10,10 +10,12 @@
10
10
  * - 每个 server 注册一个工具分组 `mcp:<server-id>`
11
11
  * - 激活关闭时断开所有 client 连接(lifecycle.onDispose)
12
12
  * - 档位按 server 的 visibility 配置(默认 auto,按工具注解分档)
13
+ * - 连不上的 server 发一条 error 提示(WebUI 的「需要处理」与插件详情),提示归属这次激活:改好配置重载后撤回
13
14
  */
14
15
  import { type HostConfig } from '@aalis/api-host-config';
15
16
  import type { BoundTools } from '@aalis/api-tools';
16
- import { type LifecycleCap, type Logger, type PluginManagerService, type ServiceRef } from '@aalis/core';
17
+ import { type BoundWebui } from '@aalis/api-webui';
18
+ import { type LifecycleCap, type Logger } from '@aalis/core';
17
19
  import { type ConfigOf } from '@aalis/schema-config';
18
20
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
19
21
  /** 桥接函数用到的能力:测试只需给这两样,不必伪造整个运行时 */
@@ -24,59 +26,62 @@ interface BridgeCaps {
24
26
  declare const configSchema: {
25
27
  readonly servers: {
26
28
  readonly type: "array";
27
- readonly label: "MCP 服务器列表";
28
- readonly description: "通过 stdio 连接的 MCP 服务器。每条目至少需要 id 与 command;安全级别按需调整。";
29
+ readonly label: import("@aalis/schema-i18n").TextRef;
30
+ readonly description: import("@aalis/schema-i18n").TextRef;
29
31
  readonly items: {
30
32
  readonly id: {
31
33
  readonly type: "string";
32
- readonly label: "唯一 ID";
33
- readonly description: "用于工具命名空间,最终工具名形如 mcp_<id>_<tool>。仅允许字母数字与下划线/中划线。";
34
+ readonly label: import("@aalis/schema-i18n").TextRef;
35
+ readonly description: import("@aalis/schema-i18n").TextRef;
34
36
  readonly required: true;
35
37
  };
36
38
  readonly command: {
37
39
  readonly type: "string";
38
- readonly label: "可执行命令";
39
- readonly description: "例如 npx / node / python / 绝对路径。";
40
+ readonly label: import("@aalis/schema-i18n").TextRef;
41
+ readonly description: import("@aalis/schema-i18n").TextRef;
40
42
  readonly required: true;
43
+ readonly format: "executable";
44
+ readonly onInvalid: "error";
41
45
  };
42
46
  readonly args: {
43
47
  readonly type: "list";
44
- readonly label: "命令参数";
45
- readonly description: "按顺序传给命令的参数列表,每项一个参数(可含空格)。";
48
+ readonly label: import("@aalis/schema-i18n").TextRef;
49
+ readonly description: import("@aalis/schema-i18n").TextRef;
46
50
  readonly default: readonly [];
47
51
  readonly onInvalid: "error";
48
52
  };
49
53
  readonly env: {
50
54
  readonly type: "map";
51
- readonly label: "环境变量";
52
- readonly description: "额外传给子进程的环境变量(KEY → VALUE)。";
55
+ readonly label: import("@aalis/schema-i18n").TextRef;
56
+ readonly description: import("@aalis/schema-i18n").TextRef;
53
57
  readonly default: {};
54
58
  readonly onInvalid: "error";
59
+ readonly secret: true;
55
60
  };
56
61
  readonly enabled: {
57
62
  readonly type: "boolean";
58
- readonly label: "启用";
59
- readonly description: "关闭可临时跳过该 server 而不删除整条配置。";
63
+ readonly label: import("@aalis/schema-i18n").TextRef;
64
+ readonly description: import("@aalis/schema-i18n").TextRef;
60
65
  readonly default: true;
61
66
  readonly onInvalid: "error";
62
67
  };
63
68
  readonly visibility: {
64
69
  readonly type: "select";
65
- readonly label: "工具档位";
66
- readonly description: string;
70
+ readonly label: import("@aalis/schema-i18n").TextRef;
71
+ readonly description: import("@aalis/schema-i18n").TextRef;
67
72
  readonly default: "auto";
68
73
  readonly onInvalid: "error";
69
74
  readonly options: [{
70
- readonly label: "auto(按注解分档)";
75
+ readonly label: import("@aalis/schema-i18n").TextRef;
71
76
  readonly value: "auto";
72
77
  }, {
73
- readonly label: "public(等级 0 全开)";
78
+ readonly label: import("@aalis/schema-i18n").TextRef;
74
79
  readonly value: "public";
75
80
  }, {
76
- readonly label: "sensitive(等级 1)";
81
+ readonly label: import("@aalis/schema-i18n").TextRef;
77
82
  readonly value: "sensitive";
78
83
  }, {
79
- readonly label: "restricted(等级 2)";
84
+ readonly label: import("@aalis/schema-i18n").TextRef;
80
85
  readonly value: "restricted";
81
86
  }];
82
87
  };
@@ -124,8 +129,8 @@ declare const _default: import("@aalis/core").PluginDefinition<{
124
129
  logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Logger, Logger>;
125
130
  lifecycle: import("@aalis/core").ServiceDescriptor<(identity: symbol) => LifecycleCap, LifecycleCap>;
126
131
  config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
127
- plugins: import("@aalis/core").OptionalUse<PluginManagerService, ServiceRef<PluginManagerService>>;
128
- hostConfig: import("@aalis/core").OptionalUse<HostConfig, ServiceRef<HostConfig>>;
132
+ hostConfig: import("@aalis/core").OptionalUse<HostConfig, HostConfig>;
133
+ webui: import("@aalis/core").OptionalUse<import("@aalis/api-webui").WebUIService, BoundWebui>;
129
134
  }>;
130
135
  export default _default;
131
136
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAmC,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,MAAM,EAIX,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,QAAQ,EAA6B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKnE,mCAAmC;AACnC,UAAU,UAAU;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDhB,CAAC;AAEH,uCAAuC;AACvC,KAAK,UAAU,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,4CAA4C;AAC5C,KAAK,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAE9C,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,iDAAiD;IACjD,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,EACpC,UAAU,CAAC,EAAE,aAAa,GACzB;IAAE,UAAU,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,CAMnD;AAuMD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EAClD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAqCf;;;;;;;;;AAsDD,wBAcG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAmC,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,MAAM,EAKZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,QAAQ,EAA6B,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,mCAAmC;AACnC,UAAU,UAAU;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DhB,CAAC;AAEH,uCAAuC;AACvC,KAAK,UAAU,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,4CAA4C;AAC5C,KAAK,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAE9C,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,iDAAiD;IACjD,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,EACpC,UAAU,CAAC,EAAE,aAAa,GACzB;IAAE,UAAU,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,CAMnD;AA8MD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EAClD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Cf;;;;;;;;;AAwDD,wBAcG"}
package/dist/index.js CHANGED
@@ -10,65 +10,73 @@
10
10
  * - 每个 server 注册一个工具分组 `mcp:<server-id>`
11
11
  * - 激活关闭时断开所有 client 连接(lifecycle.onDispose)
12
12
  * - 档位按 server 的 visibility 配置(默认 auto,按工具注解分档)
13
+ * - 连不上的 server 发一条 error 提示(WebUI 的「需要处理」与插件详情),提示归属这次激活:改好配置重载后撤回
13
14
  */
14
15
  import { hostConfig as hostConfigService } from '@aalis/api-host-config';
15
- import { tools as toolsService, wrapUntrustedContent } from '@aalis/api-tools';
16
- import { config as configService, definePlugin, lifecycle as lifecycleService, logger as loggerService, optional, pluginsService, } from '@aalis/core';
16
+ import { takenBackgroundParams, tools as toolsService, wrapUntrustedContent } from '@aalis/api-tools';
17
+ import { webuiServer } from '@aalis/api-webui';
18
+ import { config as configService, definePlugin, lifecycle as lifecycleService, logger as loggerService, optional, } from '@aalis/core';
17
19
  import { defineConfig, parseConfig } from '@aalis/schema-config';
20
+ import { textOf } from '@aalis/schema-i18n';
18
21
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
19
22
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
23
+ import { t } from './texts.js';
20
24
  const PLUGIN_NAME = '@aalis/plugin-mcp-client';
25
+ /** setTimeout 能表示的最长延时(毫秒),工具调用的请求超时取它 */
26
+ const MAX_TIMEOUT_MS = 2_147_483_647;
21
27
  const configSchema = defineConfig({
22
28
  servers: {
23
29
  type: 'array',
24
- label: 'MCP 服务器列表',
25
- description: '通过 stdio 连接的 MCP 服务器。每条目至少需要 id 与 command;安全级别按需调整。',
30
+ label: t('serversLabel'),
31
+ description: t('serversDescription'),
26
32
  items: {
27
33
  id: {
28
34
  type: 'string',
29
- label: '唯一 ID',
30
- description: '用于工具命名空间,最终工具名形如 mcp_<id>_<tool>。仅允许字母数字与下划线/中划线。',
35
+ label: t('idLabel'),
36
+ description: t('idDescription'),
31
37
  required: true,
32
38
  },
33
39
  command: {
34
40
  type: 'string',
35
- label: '可执行命令',
36
- description: '例如 npx / node / python / 绝对路径。',
41
+ label: t('commandLabel'),
42
+ description: t('commandDescription'),
37
43
  required: true,
44
+ format: 'executable',
45
+ onInvalid: 'error',
38
46
  },
39
47
  args: {
40
48
  type: 'list',
41
- label: '命令参数',
42
- description: '按顺序传给命令的参数列表,每项一个参数(可含空格)。',
49
+ label: t('argsLabel'),
50
+ description: t('argsDescription'),
43
51
  default: [],
44
52
  onInvalid: 'error',
45
53
  },
46
54
  env: {
47
55
  type: 'map',
48
- label: '环境变量',
49
- description: '额外传给子进程的环境变量(KEY → VALUE)。',
56
+ label: t('envLabel'),
57
+ description: t('envDescription'),
50
58
  default: {},
51
59
  onInvalid: 'error',
60
+ secret: true,
52
61
  },
53
62
  enabled: {
54
63
  type: 'boolean',
55
- label: '启用',
56
- description: '关闭可临时跳过该 server 而不删除整条配置。',
64
+ label: t('enabledLabel'),
65
+ description: t('enabledDescription'),
57
66
  default: true,
58
67
  onInvalid: 'error',
59
68
  },
60
69
  visibility: {
61
70
  type: 'select',
62
- label: '工具档位',
63
- description: '该 server 全部工具的档位。auto=按工具注解分档:自称只读→sensitive(等级 1),' +
64
- '有破坏提示或未声明→restricted(等级 2)。public 恢复等级 0 全开(0.x 旧默认)。',
71
+ label: t('visibilityLabel'),
72
+ description: t('visibilityDescription'),
65
73
  default: 'auto',
66
74
  onInvalid: 'error',
67
75
  options: [
68
- { label: 'auto(按注解分档)', value: 'auto' },
69
- { label: 'public(等级 0 全开)', value: 'public' },
70
- { label: 'sensitive(等级 1)', value: 'sensitive' },
71
- { label: 'restricted(等级 2)', value: 'restricted' },
76
+ { label: t('visibilityAuto'), value: 'auto' },
77
+ { label: t('visibilityPublic'), value: 'public' },
78
+ { label: t('visibilitySensitive'), value: 'sensitive' },
79
+ { label: t('visibilityRestricted'), value: 'restricted' },
72
80
  ],
73
81
  },
74
82
  },
@@ -97,12 +105,12 @@ export function deriveMcpToolPolicy(annotations, serverTier) {
97
105
  return { visibility: 'restricted' };
98
106
  }
99
107
  async function run(caps) {
100
- const cfg = parseConfig(configSchema, caps.config, caps.logger);
108
+ const cfg = parseConfig(configSchema, caps.config.use, caps.logger.use);
101
109
  const servers = cfg.servers
102
- .map(s => normalizeServerSpec(s, caps.logger))
110
+ .map(s => normalizeServerSpec(s, caps.logger.use))
103
111
  .filter((s) => s !== undefined);
104
112
  if (servers.length === 0) {
105
- caps.logger.info('未配置任何 MCP server,仅注册元数据工具');
113
+ caps.logger.use.info('未配置任何 MCP server,仅注册元数据工具');
106
114
  registerSelfServiceTools(caps, servers);
107
115
  return;
108
116
  }
@@ -110,9 +118,10 @@ async function run(caps) {
110
118
  for (const spec of servers) {
111
119
  if (spec.enabled === false)
112
120
  continue;
113
- caps.tools.registerGroup({
121
+ caps.tools.use.registerGroup({
114
122
  name: `mcp:${spec.id}`,
115
123
  label: `MCP / ${spec.id}`,
124
+ summary: t('serverGroupSummary', { id: spec.id }),
116
125
  description: `通过 plugin-mcp-client 桥接的远端 MCP server "${spec.id}"`,
117
126
  });
118
127
  }
@@ -120,11 +129,19 @@ async function run(caps) {
120
129
  await Promise.all(servers
121
130
  .filter(s => s.enabled !== false)
122
131
  .map(spec => connectServer(caps, spec).catch(err => {
123
- if (caps.lifecycle.signal.aborted)
132
+ if (caps.lifecycle.use.signal.aborted)
124
133
  return;
125
- caps.logger.error(`连接 MCP server "${spec.id}" 失败: ${err instanceof Error ? err.message : String(err)}`);
134
+ const reason = err instanceof Error ? err.message : String(err);
135
+ caps.logger.use.error(`连接 MCP server "${spec.id}" 失败: ${reason}`);
136
+ caps.webui.use.notify({
137
+ id: `connect:${spec.id}`,
138
+ level: 'error',
139
+ title: t('connectFailedTitle', { id: spec.id }),
140
+ detail: t('connectFailedDetail', { reason: textOf(err) }),
141
+ open: 'config',
142
+ });
126
143
  })));
127
- caps.lifecycle.signal.throwIfAborted();
144
+ caps.lifecycle.use.signal.throwIfAborted();
128
145
  // 注册 agent 自服务工具:只读列表 + toggle 已配置 server 的启用开关。
129
146
  // 故意不提供「新增 server」工具——那等价于让 agent 任意 spawn 子进程,授权风险过大。
130
147
  // 若要新增 server,应在 WebUI / yaml 手工配置。
@@ -136,12 +153,13 @@ async function run(caps) {
136
153
  */
137
154
  function registerSelfServiceTools(caps, configured) {
138
155
  const { tools } = caps;
139
- tools.registerGroup({
156
+ tools.use.registerGroup({
140
157
  name: 'mcp:_meta',
141
- label: 'MCP / 元数据',
158
+ label: t('metaGroup'),
159
+ summary: t('metaGroupSummary'),
142
160
  description: '让 agent 列出和切换已配置的 MCP server(不能新增/删除条目)。',
143
161
  });
144
- tools.register({
162
+ tools.use.register({
145
163
  definition: {
146
164
  type: 'function',
147
165
  function: {
@@ -164,7 +182,7 @@ function registerSelfServiceTools(caps, configured) {
164
182
  return JSON.stringify(list, null, 2);
165
183
  },
166
184
  });
167
- tools.register({
185
+ tools.use.register({
168
186
  definition: {
169
187
  type: 'function',
170
188
  function: {
@@ -193,12 +211,12 @@ function registerSelfServiceTools(caps, configured) {
193
211
  const enabled = args.enabled;
194
212
  if (!configured.some(s => s.id === id))
195
213
  return `失败:没有 id="${id}" 的 server,请先用 mcp_list_servers 查看`;
196
- // 缺任一服务就不动运行态:改了却存不下,重启后会悄悄回退
197
- const pm = caps.plugins.current;
198
- const doc = caps.hostConfig.current;
199
- if (!pm || !doc)
200
- return '失败:plugins/host-config 服务不可用';
201
- // 以配置文档为底改写:解析后的配置补了默认值、丢了坏值,以它为底会把这些永久写进配置文件
214
+ // 没有配置文档就不动运行态:改了却存不下,重启后会悄悄回退
215
+ if (!caps.hostConfig.present)
216
+ return '失败:host-config 服务不可用';
217
+ const doc = caps.hostConfig.use;
218
+ // 以配置文档为底改写:解析后的配置补了默认值、丢了坏值,以它为底会把这些永久写进配置文件;
219
+ // 文档里的 env 是密钥引用,原样交回即保持原值
202
220
  const current = doc.getPluginConfig(PLUGIN_NAME);
203
221
  const servers = Array.isArray(current.servers) ? [...current.servers] : [];
204
222
  const idx = servers.findIndex(s => {
@@ -214,16 +232,13 @@ function registerSelfServiceTools(caps, configured) {
214
232
  }
215
233
  servers[idx] = { ...before, enabled };
216
234
  const next = { ...current, servers };
217
- const ok = await pm.updateConfig(PLUGIN_NAME, next);
218
- if (!ok)
219
- return `失败:updateConfig 返回 false`;
220
- // 管理动作只改运行态;跨重启保留要自己写文档并落盘
221
- doc.setPluginConfig(PLUGIN_NAME, next);
235
+ // 运行态、文档与落盘由宿主一步完成
236
+ const result = await doc.applyPluginConfig(PLUGIN_NAME, next);
237
+ if (result.status === 'refused')
238
+ return '失败:插件当前不接受配置更新(停机中或正在卸载)';
222
239
  // 落盘失败时运行态已经切换、插件已在 bounce:如实说明,别报成什么都没发生(save 自己记过日志)
223
- try {
224
- await doc.save();
225
- }
226
- catch (err) {
240
+ if (result.saveError !== undefined) {
241
+ const err = result.saveError;
227
242
  return (`已将 server "${id}" 设置为 enabled=${enabled}(运行态已生效,插件会 bounce);` +
228
243
  `写入配置文件失败:${err instanceof Error ? err.message : String(err)}。配置文件里仍是原值,重启或配置重新载入后可能回退`);
229
244
  }
@@ -232,21 +247,20 @@ function registerSelfServiceTools(caps, configured) {
232
247
  });
233
248
  }
234
249
  /**
235
- * 解析之后的规范化:id / command 去掉首尾空白,只剩空白的条目跳过并告警(只跳这一条,其它 server 照常);
236
- * args 原样保留(空字符串也是合法的独立参数)。
250
+ * 解析之后的规范化:id 去掉首尾空白,只剩空白的条目跳过并告警(只跳这一条,其它 server 照常)。
251
+ * command 声明了 format,parseConfig 已去掉首尾空白,只有空白的按缺失丢掉该条;args 原样保留(空字符串也是合法的独立参数)。
237
252
  */
238
253
  function normalizeServerSpec(spec, logger) {
239
254
  const id = spec.id.trim();
240
- const command = spec.command.trim();
241
- if (!id || !command) {
242
- // 解析丢掉的条目不占下标,按下标报会对不上配置文件,所以报两个字段本身
243
- logger.warn(`servers 中有一条 id 或 command 只有空白(id「${id}」,command「${command}」),跳过`);
255
+ if (!id) {
256
+ // 解析丢掉的条目不占下标,按下标报会对不上配置文件,所以报 command 帮助定位
257
+ logger.warn(`servers 中有一条 id 只有空白(command「${spec.command}」),跳过`);
244
258
  return undefined;
245
259
  }
246
- return { ...spec, id, command };
260
+ return { ...spec, id };
247
261
  }
248
262
  async function connectServer(caps, spec) {
249
- const { signal } = caps.lifecycle;
263
+ const { signal } = caps.lifecycle.use;
250
264
  const transport = new StdioClientTransport({
251
265
  command: spec.command,
252
266
  args: spec.args,
@@ -260,18 +274,18 @@ async function connectServer(caps, spec) {
260
274
  signal.addEventListener('abort', onAbort, { once: true });
261
275
  try {
262
276
  await client.connect(transport, { signal: bridge.signal });
263
- caps.logger.info(`MCP server "${spec.id}" 已连接 (${spec.command} ${spec.args.join(' ')})`);
277
+ caps.logger.use.info(`MCP server "${spec.id}" 已连接 (${spec.command} ${spec.args.join(' ')})`);
264
278
  // 连接生命周期:激活关闭时关闭。握手跨 await,关闭可能已开始——迟到的清理仍会被执行
265
- caps.lifecycle.onDispose(async () => {
279
+ caps.lifecycle.use.onDispose(async () => {
266
280
  try {
267
281
  await client.close();
268
- caps.logger.info(`MCP server "${spec.id}" 已关闭`);
282
+ caps.logger.use.info(`MCP server "${spec.id}" 已关闭`);
269
283
  }
270
284
  catch (err) {
271
- caps.logger.debug(`关闭 MCP server "${spec.id}" 抛错(已忽略):`, err);
285
+ caps.logger.use.debug(`关闭 MCP server "${spec.id}" 抛错(已忽略):`, err);
272
286
  }
273
287
  });
274
- await bridgeClientToTools(caps, client, spec, bridge.signal);
288
+ await bridgeClientToTools({ tools: caps.tools.use, logger: caps.logger.use }, client, spec, bridge.signal);
275
289
  }
276
290
  finally {
277
291
  signal.removeEventListener('abort', onAbort);
@@ -287,6 +301,13 @@ export async function bridgeClientToTools(caps, client, spec, signal) {
287
301
  for (const t of mcpTools) {
288
302
  const toolName = sanitizeToolName(`mcp_${spec.id}_${t.name}`);
289
303
  const parameters = normalizeParameters(t.inputSchema);
304
+ // 远端工具多久结束不可知:等多久由执行器的让出时限管,停只认执行器给这次调用的中止信号。参数表里已有执行器
305
+ // 参数名的,执行器不会让出,不声明可转后台,请求超时照 SDK 默认(60 秒)
306
+ const taken = takenBackgroundParams(parameters);
307
+ if (taken.length > 0) {
308
+ caps.logger.warn(`MCP 工具 ${toolName} 的参数表里已有 ${taken.join('、')},不转后台,请求超时照 SDK 默认`);
309
+ }
310
+ const yieldable = taken.length === 0;
290
311
  const definition = {
291
312
  type: 'function',
292
313
  function: {
@@ -299,17 +320,20 @@ export async function bridgeClientToTools(caps, client, spec, signal) {
299
320
  definition,
300
321
  groups: [`mcp:${spec.id}`],
301
322
  ...deriveMcpToolPolicy(t.annotations, spec.visibility),
302
- handler: async (args) => {
323
+ ...(yieldable ? { background: {} } : {}),
324
+ handler: async (args, ctx) => {
303
325
  try {
304
- const result = await client.callTool({
305
- name: t.name,
306
- arguments: args,
326
+ // 中止时 SDK 向服务端发 notifications/cancelled。可转后台的请求超时取 setTimeout 能表示的最大值:
327
+ // SDK 默认的 60 秒会把长任务截断,传 Infinity 又会被 Node 当成 1 毫秒
328
+ const result = await client.callTool({ name: t.name, arguments: args }, undefined, {
329
+ signal: ctx.signal,
330
+ ...(yieldable ? { timeout: MAX_TIMEOUT_MS } : {}),
307
331
  });
308
332
  return formatToolResult(result, `${spec.id}/${t.name}`);
309
333
  }
310
334
  catch (err) {
311
335
  const msg = err instanceof Error ? err.message : String(err);
312
- return `MCP 调用 ${spec.id}/${t.name} 失败: ${msg}`;
336
+ return JSON.stringify({ error: `MCP 调用 ${spec.id}/${t.name} 失败: ${msg}` });
313
337
  }
314
338
  },
315
339
  });
@@ -359,20 +383,22 @@ function formatToolResult(result, source) {
359
383
  });
360
384
  const body = parts.join('\n');
361
385
  // MCP server 可信不等于它回传的内容可信——抓取型 server(fetch/search)的返回体
362
- // 就是外部内容,同 http_request 一样套不可信边界。错误信息不是抓取内容,不套。
363
- return r.isError ? `MCP 工具返回错误:\n${body}` : wrapUntrustedContent(body, `MCP ${source}`);
386
+ // 就是外部内容,同 http_request 一样套不可信边界。错误信息不是抓取内容,不套,按工具报失败的约定放进 error。
387
+ return r.isError
388
+ ? JSON.stringify({ error: `MCP 工具返回错误:\n${body}` })
389
+ : wrapUntrustedContent(body, `MCP ${source}`);
364
390
  }
365
391
  export default definePlugin({
366
392
  name: PLUGIN_NAME,
367
- displayName: 'MCP 客户端',
393
+ displayName: t('displayName'),
368
394
  subsystem: 'tools',
369
395
  uses: {
370
396
  tools: toolsService,
371
397
  logger: loggerService,
372
398
  lifecycle: lifecycleService,
373
399
  config: configService,
374
- plugins: optional(pluginsService),
375
400
  hostConfig: optional(hostConfigService),
401
+ webui: optional(webuiServer),
376
402
  },
377
403
  configSchema,
378
404
  apply: run,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ declare const _default: {
2
+ readonly displayName: "MCP client";
3
+ readonly serversLabel: "MCP servers";
4
+ readonly serversDescription: "MCP servers connected over stdio. Each entry needs at least id and command; adjust the security level as needed.";
5
+ readonly idLabel: "Unique ID";
6
+ readonly idDescription: "Used as the tool namespace; the final tool names look like mcp_<id>_<tool>. Only letters, digits, underscores and hyphens are allowed.";
7
+ readonly commandLabel: "Executable command";
8
+ readonly commandDescription: "A command name (such as npx / node / python, looked up in PATH) or an absolute path.";
9
+ readonly argsLabel: "Command arguments";
10
+ readonly argsDescription: "Arguments passed to the command in order, one per item (may contain spaces). Write file paths in arguments as absolute paths.";
11
+ readonly envLabel: "Environment variables";
12
+ readonly envDescription: "Extra environment variables passed to the child process (KEY → VALUE). The whole map is stored in secrets.yaml as one secret; the WebUI does not show it back, and changing it means re-entering all of it. Put credentials such as tokens here, not in the command arguments (arguments are written to the logs).";
13
+ readonly enabledLabel: "Enabled";
14
+ readonly enabledDescription: "Turn off to skip this server for now without deleting the whole entry.";
15
+ readonly visibilityLabel: "Tool level";
16
+ readonly visibilityDescription: "Level of all tools of this server. auto = by tool annotations: self-declared read-only → sensitive (level 1), destructive hints or nothing declared → restricted (level 2). public restores level 0, open to everyone (the old 0.x default).";
17
+ readonly visibilityAuto: "auto (by annotations)";
18
+ readonly visibilityPublic: "public (level 0, open to everyone)";
19
+ readonly visibilitySensitive: "sensitive (level 1)";
20
+ readonly visibilityRestricted: "restricted (level 2)";
21
+ readonly connectFailedTitle: "Cannot connect to MCP server “{id}”";
22
+ readonly connectFailedDetail: "Check this server's command, args and env (the environment variables it needs); saving the configuration after fixing them reconnects it. Reason: {reason}";
23
+ readonly serverGroupSummary: "Remote MCP server “{id}” bridged by plugin-mcp-client";
24
+ readonly metaGroup: "MCP / metadata";
25
+ readonly metaGroupSummary: "Let the agent list configured MCP servers and turn them on or off (entries cannot be added or removed)";
26
+ };
27
+ export default _default;
28
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAgCG"}
@@ -0,0 +1,28 @@
1
+ import { defineLocale } from '@aalis/schema-i18n';
2
+ export default defineLocale()({
3
+ displayName: 'MCP client',
4
+ serversLabel: 'MCP servers',
5
+ serversDescription: 'MCP servers connected over stdio. Each entry needs at least id and command; adjust the security level as needed.',
6
+ idLabel: 'Unique ID',
7
+ idDescription: 'Used as the tool namespace; the final tool names look like mcp_<id>_<tool>. Only letters, digits, underscores and hyphens are allowed.',
8
+ commandLabel: 'Executable command',
9
+ commandDescription: 'A command name (such as npx / node / python, looked up in PATH) or an absolute path.',
10
+ argsLabel: 'Command arguments',
11
+ argsDescription: 'Arguments passed to the command in order, one per item (may contain spaces). Write file paths in arguments as absolute paths.',
12
+ envLabel: 'Environment variables',
13
+ envDescription: 'Extra environment variables passed to the child process (KEY → VALUE). The whole map is stored in secrets.yaml as one secret; the WebUI does not show it back, and changing it means re-entering all of it. Put credentials such as tokens here, not in the command arguments (arguments are written to the logs).',
14
+ enabledLabel: 'Enabled',
15
+ enabledDescription: 'Turn off to skip this server for now without deleting the whole entry.',
16
+ visibilityLabel: 'Tool level',
17
+ visibilityDescription: 'Level of all tools of this server. auto = by tool annotations: self-declared read-only → sensitive (level 1), destructive hints or nothing declared → restricted (level 2). public restores level 0, open to everyone (the old 0.x default).',
18
+ visibilityAuto: 'auto (by annotations)',
19
+ visibilityPublic: 'public (level 0, open to everyone)',
20
+ visibilitySensitive: 'sensitive (level 1)',
21
+ visibilityRestricted: 'restricted (level 2)',
22
+ connectFailedTitle: 'Cannot connect to MCP server “{id}”',
23
+ connectFailedDetail: "Check this server's command, args and env (the environment variables it needs); saving the configuration after fixing them reconnects it. Reason: {reason}",
24
+ serverGroupSummary: 'Remote MCP server “{id}” bridged by plugin-mcp-client',
25
+ metaGroup: 'MCP / metadata',
26
+ metaGroupSummary: 'Let the agent list configured MCP servers and turn them on or off (entries cannot be added or removed)',
27
+ });
28
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAe,YAAY,EAAU,CAAC;IACpC,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,aAAa;IAC3B,kBAAkB,EAChB,kHAAkH;IACpH,OAAO,EAAE,WAAW;IACpB,aAAa,EACX,wIAAwI;IAC1I,YAAY,EAAE,oBAAoB;IAClC,kBAAkB,EAAE,sFAAsF;IAC1G,SAAS,EAAE,mBAAmB;IAC9B,eAAe,EACb,+HAA+H;IACjI,QAAQ,EAAE,uBAAuB;IACjC,cAAc,EACZ,oTAAoT;IACtT,YAAY,EAAE,SAAS;IACvB,kBAAkB,EAAE,wEAAwE;IAC5F,eAAe,EAAE,YAAY;IAC7B,qBAAqB,EACnB,8OAA8O;IAChP,cAAc,EAAE,uBAAuB;IACvC,gBAAgB,EAAE,oCAAoC;IACtD,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,qCAAqC;IACzD,mBAAmB,EACjB,4JAA4J;IAC9J,kBAAkB,EAAE,uDAAuD;IAC3E,SAAS,EAAE,gBAAgB;IAC3B,gBAAgB,EACd,wGAAwG;CAC3G,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ declare const SOURCE: {
2
+ readonly displayName: "MCP 客户端";
3
+ readonly serversLabel: "MCP 服务器列表";
4
+ readonly serversDescription: "通过 stdio 连接的 MCP 服务器。每条目至少需要 id 与 command;安全级别按需调整。";
5
+ readonly idLabel: "唯一 ID";
6
+ readonly idDescription: "用于工具命名空间,最终工具名形如 mcp_<id>_<tool>。仅允许字母数字与下划线/中划线。";
7
+ readonly commandLabel: "可执行命令";
8
+ readonly commandDescription: "命令名(如 npx / node / python,按 PATH 查找)或绝对路径。";
9
+ readonly argsLabel: "命令参数";
10
+ readonly argsDescription: "按顺序传给命令的参数列表,每项一个参数(可含空格)。参数里的文件路径请写绝对路径。";
11
+ readonly envLabel: "环境变量";
12
+ readonly envDescription: "额外传给子进程的环境变量(KEY → VALUE)。整份作为一个密钥存进 secrets.yaml,WebUI 不回显,改时整份重填。token 等凭据放这里,不要放进命令参数(参数会写进日志)。";
13
+ readonly enabledLabel: "启用";
14
+ readonly enabledDescription: "关闭可临时跳过该 server 而不删除整条配置。";
15
+ readonly visibilityLabel: "工具档位";
16
+ readonly visibilityDescription: "该 server 全部工具的档位。auto=按工具注解分档:自称只读→sensitive(等级 1),有破坏提示或未声明→restricted(等级 2)。public 恢复等级 0 全开(0.x 旧默认)。";
17
+ readonly visibilityAuto: "auto(按注解分档)";
18
+ readonly visibilityPublic: "public(等级 0 全开)";
19
+ readonly visibilitySensitive: "sensitive(等级 1)";
20
+ readonly visibilityRestricted: "restricted(等级 2)";
21
+ readonly connectFailedTitle: "MCP 服务器「{id}」连不上";
22
+ readonly connectFailedDetail: "检查这台服务器的 command、args 与 env(它要的环境变量),改好后保存配置即重连。原因:{reason}";
23
+ readonly serverGroupSummary: "通过 plugin-mcp-client 桥接的远端 MCP 服务器 \"{id}\"";
24
+ readonly metaGroup: "MCP / 元数据";
25
+ readonly metaGroupSummary: "让 agent 列出和切换已配置的 MCP 服务器(不能新增/删除条目)";
26
+ };
27
+ export type Source = typeof SOURCE;
28
+ export declare const t: import("@aalis/schema-i18n").TextFactory<{
29
+ readonly displayName: "MCP 客户端";
30
+ readonly serversLabel: "MCP 服务器列表";
31
+ readonly serversDescription: "通过 stdio 连接的 MCP 服务器。每条目至少需要 id 与 command;安全级别按需调整。";
32
+ readonly idLabel: "唯一 ID";
33
+ readonly idDescription: "用于工具命名空间,最终工具名形如 mcp_<id>_<tool>。仅允许字母数字与下划线/中划线。";
34
+ readonly commandLabel: "可执行命令";
35
+ readonly commandDescription: "命令名(如 npx / node / python,按 PATH 查找)或绝对路径。";
36
+ readonly argsLabel: "命令参数";
37
+ readonly argsDescription: "按顺序传给命令的参数列表,每项一个参数(可含空格)。参数里的文件路径请写绝对路径。";
38
+ readonly envLabel: "环境变量";
39
+ readonly envDescription: "额外传给子进程的环境变量(KEY → VALUE)。整份作为一个密钥存进 secrets.yaml,WebUI 不回显,改时整份重填。token 等凭据放这里,不要放进命令参数(参数会写进日志)。";
40
+ readonly enabledLabel: "启用";
41
+ readonly enabledDescription: "关闭可临时跳过该 server 而不删除整条配置。";
42
+ readonly visibilityLabel: "工具档位";
43
+ readonly visibilityDescription: "该 server 全部工具的档位。auto=按工具注解分档:自称只读→sensitive(等级 1),有破坏提示或未声明→restricted(等级 2)。public 恢复等级 0 全开(0.x 旧默认)。";
44
+ readonly visibilityAuto: "auto(按注解分档)";
45
+ readonly visibilityPublic: "public(等级 0 全开)";
46
+ readonly visibilitySensitive: "sensitive(等级 1)";
47
+ readonly visibilityRestricted: "restricted(等级 2)";
48
+ readonly connectFailedTitle: "MCP 服务器「{id}」连不上";
49
+ readonly connectFailedDetail: "检查这台服务器的 command、args 与 env(它要的环境变量),改好后保存配置即重连。原因:{reason}";
50
+ readonly serverGroupSummary: "通过 plugin-mcp-client 桥接的远端 MCP 服务器 \"{id}\"";
51
+ readonly metaGroup: "MCP / 元数据";
52
+ readonly metaGroupSummary: "让 agent 列出和切换已配置的 MCP 服务器(不能新增/删除条目)";
53
+ }>;
54
+ export {};
55
+ //# sourceMappingURL=texts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CA2BF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAKZ,CAAC"}
package/dist/texts.js ADDED
@@ -0,0 +1,36 @@
1
+ // 本插件自己的原文字典:显示名、配置项,连不上服务器时的提示,元数据分组名与两种分组的概述
2
+ import { defineTexts } from '@aalis/schema-i18n';
3
+ import en from './locales/en.js';
4
+ const SOURCE = {
5
+ displayName: 'MCP 客户端',
6
+ serversLabel: 'MCP 服务器列表',
7
+ serversDescription: '通过 stdio 连接的 MCP 服务器。每条目至少需要 id 与 command;安全级别按需调整。',
8
+ idLabel: '唯一 ID',
9
+ idDescription: '用于工具命名空间,最终工具名形如 mcp_<id>_<tool>。仅允许字母数字与下划线/中划线。',
10
+ commandLabel: '可执行命令',
11
+ commandDescription: '命令名(如 npx / node / python,按 PATH 查找)或绝对路径。',
12
+ argsLabel: '命令参数',
13
+ argsDescription: '按顺序传给命令的参数列表,每项一个参数(可含空格)。参数里的文件路径请写绝对路径。',
14
+ envLabel: '环境变量',
15
+ envDescription: '额外传给子进程的环境变量(KEY → VALUE)。整份作为一个密钥存进 secrets.yaml,WebUI 不回显,改时整份重填。token 等凭据放这里,不要放进命令参数(参数会写进日志)。',
16
+ enabledLabel: '启用',
17
+ enabledDescription: '关闭可临时跳过该 server 而不删除整条配置。',
18
+ visibilityLabel: '工具档位',
19
+ visibilityDescription: '该 server 全部工具的档位。auto=按工具注解分档:自称只读→sensitive(等级 1),有破坏提示或未声明→restricted(等级 2)。public 恢复等级 0 全开(0.x 旧默认)。',
20
+ visibilityAuto: 'auto(按注解分档)',
21
+ visibilityPublic: 'public(等级 0 全开)',
22
+ visibilitySensitive: 'sensitive(等级 1)',
23
+ visibilityRestricted: 'restricted(等级 2)',
24
+ connectFailedTitle: 'MCP 服务器「{id}」连不上',
25
+ connectFailedDetail: '检查这台服务器的 command、args 与 env(它要的环境变量),改好后保存配置即重连。原因:{reason}',
26
+ serverGroupSummary: '通过 plugin-mcp-client 桥接的远端 MCP 服务器 "{id}"',
27
+ metaGroup: 'MCP / 元数据',
28
+ metaGroupSummary: '让 agent 列出和切换已配置的 MCP 服务器(不能新增/删除条目)',
29
+ };
30
+ export const t = defineTexts({
31
+ ns: '@aalis/plugin-mcp-client',
32
+ language: 'zh-CN',
33
+ source: SOURCE,
34
+ locales: { en },
35
+ });
36
+ //# sourceMappingURL=texts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,WAAW;IACzB,kBAAkB,EAAE,qDAAqD;IACzE,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,mDAAmD;IAClE,YAAY,EAAE,OAAO;IACrB,kBAAkB,EAAE,4CAA4C;IAChE,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,2CAA2C;IAC5D,QAAQ,EAAE,MAAM;IAChB,cAAc,EACZ,oGAAoG;IACtG,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,2BAA2B;IAC/C,eAAe,EAAE,MAAM;IACvB,qBAAqB,EACnB,0GAA0G;IAC5G,cAAc,EAAE,aAAa;IAC7B,gBAAgB,EAAE,iBAAiB;IACnC,mBAAmB,EAAE,iBAAiB;IACtC,oBAAoB,EAAE,kBAAkB;IACxC,kBAAkB,EAAE,kBAAkB;IACtC,mBAAmB,EAAE,6DAA6D;IAClF,kBAAkB,EAAE,2CAA2C;IAC/D,SAAS,EAAE,WAAW;IACtB,gBAAgB,EAAE,sCAAsC;CAChD,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;IAC3B,EAAE,EAAE,0BAA0B;IAC9B,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,EAAE,EAAE,EAAE;CAChB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/plugin-mcp-client",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,18 +24,20 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@aalis/schema-config": ">=0.14.0 <1.0.0",
28
- "@aalis/api-tools": ">=0.10.0 <1.0.0",
27
+ "@aalis/schema-config": ">=0.16.0 <1.0.0",
28
+ "@aalis/schema-i18n": ">=0.1.0 <1.0.0",
29
+ "@aalis/api-tools": ">=0.12.0 <1.0.0",
29
30
  "@modelcontextprotocol/sdk": "^1.29.0",
30
- "@aalis/api-host-config": ">=0.1.0 <1.0.0"
31
+ "@aalis/api-host-config": ">=0.3.0 <1.0.0",
32
+ "@aalis/api-webui": ">=0.13.0 <1.0.0"
31
33
  },
32
34
  "devDependencies": {
33
35
  "@types/node": "^22.0.0",
34
36
  "typescript": "^5.7.0",
35
- "@aalis/core": "0.19.1"
37
+ "@aalis/core": "0.21.0"
36
38
  },
37
39
  "peerDependencies": {
38
- "@aalis/core": ">=0.18.0 <1.0.0"
40
+ "@aalis/core": ">=0.21.0 <1.0.0"
39
41
  },
40
42
  "aalis": {
41
43
  "service": {
@@ -47,7 +49,7 @@
47
49
  ],
48
50
  "optional": [
49
51
  "host-config",
50
- "plugins"
52
+ "webui-server"
51
53
  ]
52
54
  }
53
55
  },