@aalis/plugin-mcp-server 0.14.0 → 0.15.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 +9 -6
- package/dist/index.d.ts +16 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -14
- package/dist/index.js.map +1 -1
- package/dist/locales/en.d.ts +15 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/en.js +15 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/texts.d.ts +29 -0
- package/dist/texts.d.ts.map +1 -0
- package/dist/texts.js +23 -0
- package/dist/texts.js.map +1 -0
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -4,20 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
## 传输方式
|
|
6
6
|
|
|
7
|
-
HTTP + SSE。Aalis 是常驻进程,stdio
|
|
7
|
+
HTTP + SSE。Aalis 是常驻进程,stdio 已被日志占用,因此不使用 stdio 传输。
|
|
8
8
|
|
|
9
9
|
- SSE endpoint: `http://<bind>:<port>/sse`
|
|
10
10
|
- POST messages: `http://<bind>:<port>/messages`
|
|
11
11
|
|
|
12
|
-
> SSE
|
|
12
|
+
> SSE 同时只支持一个活跃连接(协议标准),带对令牌的新连接会挤掉旧连接。
|
|
13
13
|
|
|
14
14
|
## 安全约束
|
|
15
15
|
|
|
16
16
|
- 默认 `bind: 127.0.0.1`(仅本机访问)—— **不要随便暴露到公网**
|
|
17
|
+
- 每个请求要带 `Authorization: Bearer <token>`,否则回 401;这是静态令牌,不是 OAuth 授权,配不了请求头的客户端连不上
|
|
17
18
|
- 默认 `allowRestricted: false`,可见性为 `restricted` 的工具一律拒绝
|
|
18
19
|
- `ListTools` 与 `CallTool` 两端都过滤,防止 client 越界
|
|
19
20
|
- `toolGroups` 白名单:仅暴露指定分组(空数组或 `['*']` = 全部允许,但仍受 `allowRestricted` 约束)
|
|
20
|
-
-
|
|
21
|
+
- 必须是分组名的字符串数组;非数组或含对象、布尔成员时激活失败、不监听,数字成员转成字符串分组名
|
|
21
22
|
- 工具执行仍走 Aalis 的 `ToolService.execute`,因此 authority 注入的 ExecutionGuard 同样生效
|
|
22
23
|
|
|
23
24
|
## 配置示例
|
|
@@ -27,20 +28,22 @@ plugins:
|
|
|
27
28
|
"@aalis/plugin-mcp-server":
|
|
28
29
|
port: 39870
|
|
29
30
|
bind: 127.0.0.1
|
|
31
|
+
token: "<至少 32 个可见 ASCII 字符的随机串>" # 密钥:启动时移进 secrets.yaml
|
|
30
32
|
toolGroups:
|
|
31
33
|
- search
|
|
32
34
|
- system
|
|
33
35
|
allowRestricted: false
|
|
34
36
|
```
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
以支持 HTTP+SSE 传输、能配请求头的 MCP client 为例(令牌是静态 Bearer 令牌,不走 OAuth;各 host 配置格式不同,以其文档为准;只认 URL 的客户端可以经能加请求头的本地桥接转发):
|
|
37
39
|
|
|
38
40
|
```json
|
|
39
41
|
{
|
|
40
42
|
"mcpServers": {
|
|
41
43
|
"aalis": {
|
|
42
44
|
"type": "sse",
|
|
43
|
-
"url": "http://127.0.0.1:39870/sse"
|
|
45
|
+
"url": "http://127.0.0.1:39870/sse",
|
|
46
|
+
"headers": { "Authorization": "Bearer <令牌>" }
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
}
|
|
@@ -56,7 +59,7 @@ Claude Desktop 客户端配置(仅供参考;MCP client 配置因 host app
|
|
|
56
59
|
由于 MCP 协议不传递 session/user 概念,每次调用注入合成 `ToolCallContext`:
|
|
57
60
|
|
|
58
61
|
```ts
|
|
59
|
-
{ sessionId: 'mcp-server', userId: 'mcp-client', platform: 'mcp' }
|
|
62
|
+
{ sessionId: 'mcp-server', userId: 'mcp-client', platform: 'mcp', participants: [{ platform: 'mcp', userId: 'mcp-client' }] }
|
|
60
63
|
```
|
|
61
64
|
|
|
62
65
|
如果你的工具依赖 sessionId 做权限隔离,需自行处理 platform === 'mcp' 分支。
|
package/dist/index.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ import { Server as McpServer } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
4
4
|
declare const configSchema: {
|
|
5
5
|
readonly port: {
|
|
6
6
|
readonly type: "number";
|
|
7
|
-
readonly label: "
|
|
8
|
-
readonly description: "
|
|
7
|
+
readonly label: import("@aalis/schema-i18n").TextRef;
|
|
8
|
+
readonly description: import("@aalis/schema-i18n").TextRef;
|
|
9
9
|
readonly default: 7861;
|
|
10
10
|
readonly min: 1;
|
|
11
11
|
readonly max: 65535;
|
|
@@ -14,14 +14,23 @@ declare const configSchema: {
|
|
|
14
14
|
};
|
|
15
15
|
readonly bind: {
|
|
16
16
|
readonly type: "string";
|
|
17
|
-
readonly label: "
|
|
17
|
+
readonly label: import("@aalis/schema-i18n").TextRef;
|
|
18
18
|
readonly default: "127.0.0.1";
|
|
19
19
|
readonly onInvalid: "error";
|
|
20
20
|
};
|
|
21
|
+
readonly token: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly label: import("@aalis/schema-i18n").TextRef;
|
|
24
|
+
readonly description: import("@aalis/schema-i18n").TextRef;
|
|
25
|
+
readonly required: true;
|
|
26
|
+
readonly secret: true;
|
|
27
|
+
readonly onInvalid: "error";
|
|
28
|
+
readonly validate: (value: unknown) => import("@aalis/schema-i18n").TextRef | undefined;
|
|
29
|
+
};
|
|
21
30
|
readonly toolGroups: {
|
|
22
31
|
readonly type: "multiselect";
|
|
23
|
-
readonly label: "
|
|
24
|
-
readonly description: "
|
|
32
|
+
readonly label: import("@aalis/schema-i18n").TextRef;
|
|
33
|
+
readonly description: import("@aalis/schema-i18n").TextRef;
|
|
25
34
|
readonly dynamicOptions: "toolGroups";
|
|
26
35
|
readonly allowCustom: true;
|
|
27
36
|
readonly default: readonly [];
|
|
@@ -29,7 +38,7 @@ declare const configSchema: {
|
|
|
29
38
|
};
|
|
30
39
|
readonly allowRestricted: {
|
|
31
40
|
readonly type: "boolean";
|
|
32
|
-
readonly label: "
|
|
41
|
+
readonly label: import("@aalis/schema-i18n").TextRef;
|
|
33
42
|
readonly default: false;
|
|
34
43
|
readonly onInvalid: "error";
|
|
35
44
|
};
|
|
@@ -40,7 +49,7 @@ type Config = ConfigOf<typeof configSchema>;
|
|
|
40
49
|
* 不绑定 transport;调用方负责 `server.connect(transport)`。
|
|
41
50
|
* 导出以便集成测试通过 InMemoryTransport 直连,避开 HTTP/SSE 层。
|
|
42
51
|
*/
|
|
43
|
-
export declare function buildMcpServer(tools: ToolService, config: Config): McpServer;
|
|
52
|
+
export declare function buildMcpServer(tools: ToolService, config: Pick<Config, 'allowRestricted' | 'toolGroups'>): McpServer;
|
|
44
53
|
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
45
54
|
tools: import("@aalis/core").ServiceDescriptor<ToolService, import("@aalis/api-tools").BoundTools>;
|
|
46
55
|
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,KAAK,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AAQjG,OAAO,EAAE,KAAK,QAAQ,EAA0C,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAKhF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqChB,CAAC;AACH,KAAK,MAAM,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAyI5C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,YAAY,CAAC,GAAG,SAAS,CAiEpH;;;;;;;AAED,wBAOG"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* - 默认拒绝 visibility='restricted' 的工具暴露;config.allowRestricted 可改
|
|
12
12
|
* - config.toolGroups 白名单:仅暴露指定分组(空数组=全部允许)
|
|
13
13
|
* - config.bind 默认 127.0.0.1(仅本机访问)
|
|
14
|
+
* - 每个请求要带 Authorization: Bearer <token>(必填的密钥字段),不对回 401
|
|
14
15
|
*/
|
|
16
|
+
import { createHash, timingSafeEqual } from 'node:crypto';
|
|
15
17
|
import { createServer } from 'node:http';
|
|
16
18
|
import { tools as toolsService } from '@aalis/api-tools';
|
|
17
19
|
import { config as configService, definePlugin, lifecycle as lifecycleService, logger as loggerService, } from '@aalis/core';
|
|
@@ -19,22 +21,33 @@ import { configError, defineConfig, parseConfig } from '@aalis/schema-config';
|
|
|
19
21
|
import { Server as McpServer } from '@modelcontextprotocol/sdk/server/index.js';
|
|
20
22
|
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
21
23
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
24
|
+
import { t } from './texts.js';
|
|
22
25
|
const configSchema = defineConfig({
|
|
23
26
|
port: {
|
|
24
27
|
type: 'number',
|
|
25
|
-
label: '
|
|
26
|
-
description: '
|
|
28
|
+
label: t('portLabel'),
|
|
29
|
+
description: t('portDescription'),
|
|
27
30
|
default: 7861,
|
|
28
31
|
min: 1,
|
|
29
32
|
max: 65535,
|
|
30
33
|
integer: true,
|
|
31
34
|
onInvalid: 'error',
|
|
32
35
|
},
|
|
33
|
-
bind: { type: 'string', label: '
|
|
36
|
+
bind: { type: 'string', label: t('bindLabel'), default: '127.0.0.1', onInvalid: 'error' },
|
|
37
|
+
token: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
label: t('tokenLabel'),
|
|
40
|
+
description: t('tokenDescription'),
|
|
41
|
+
required: true,
|
|
42
|
+
secret: true,
|
|
43
|
+
onInvalid: 'error',
|
|
44
|
+
// 持有令牌就能调暴露的工具,防猜靠令牌够长:32 个字符起,与 webui-server 的固定 token 同一下限;要放进请求头,只收可见 ASCII
|
|
45
|
+
validate: value => (/^[\x21-\x7E]{32,}$/.test(String(value)) ? undefined : t('tokenInvalid')),
|
|
46
|
+
},
|
|
34
47
|
toolGroups: {
|
|
35
48
|
type: 'multiselect',
|
|
36
|
-
label: '
|
|
37
|
-
description:
|
|
49
|
+
label: t('toolGroupsLabel'),
|
|
50
|
+
description: t('toolGroupsDescription'),
|
|
38
51
|
dynamicOptions: 'toolGroups',
|
|
39
52
|
allowCustom: true,
|
|
40
53
|
default: [],
|
|
@@ -42,11 +55,26 @@ const configSchema = defineConfig({
|
|
|
42
55
|
},
|
|
43
56
|
allowRestricted: {
|
|
44
57
|
type: 'boolean',
|
|
45
|
-
label: '
|
|
58
|
+
label: t('allowRestrictedLabel'),
|
|
46
59
|
default: false,
|
|
47
60
|
onInvalid: 'error',
|
|
48
61
|
},
|
|
49
62
|
});
|
|
63
|
+
/** 带了 Bearer 令牌、令牌却不对 */
|
|
64
|
+
const WRONG_TOKEN = '令牌不对';
|
|
65
|
+
/**
|
|
66
|
+
* 请求带的令牌对不对:Authorization 要是「Bearer <令牌>」(方案名不分大小写,后面的空格可以不止一个)。不对时交回原因(写进
|
|
67
|
+
* debug 日志,不含令牌),对时为 undefined。两边先取 SHA-256 摘要再定时比较,耗时与令牌的内容和长度无关
|
|
68
|
+
*/
|
|
69
|
+
function rejectReason(header, token) {
|
|
70
|
+
if (!header)
|
|
71
|
+
return '没带 Authorization';
|
|
72
|
+
const given = /^bearer +(.+)$/i.exec(header)?.[1];
|
|
73
|
+
if (given === undefined)
|
|
74
|
+
return '方案不是 Bearer';
|
|
75
|
+
const digest = (s) => createHash('sha256').update(s).digest();
|
|
76
|
+
return timingSafeEqual(digest(given), digest(token)) ? undefined : WRONG_TOKEN;
|
|
77
|
+
}
|
|
50
78
|
const uses = {
|
|
51
79
|
tools: toolsService,
|
|
52
80
|
logger: loggerService,
|
|
@@ -56,7 +84,7 @@ const uses = {
|
|
|
56
84
|
async function run({ tools, logger, lifecycle, config: rawConfig }) {
|
|
57
85
|
const config = parseConfig(configSchema, rawConfig.use, logger.use);
|
|
58
86
|
if (!config.bind.trim())
|
|
59
|
-
throw configError('
|
|
87
|
+
throw configError(t('bindEmpty'));
|
|
60
88
|
// SSE 同时只支持一个活跃连接(标准约束);新连接挤掉旧的
|
|
61
89
|
let currentTransport;
|
|
62
90
|
let mcpServer;
|
|
@@ -77,6 +105,15 @@ async function run({ tools, logger, lifecycle, config: rawConfig }) {
|
|
|
77
105
|
}
|
|
78
106
|
});
|
|
79
107
|
async function handle(req, res, url) {
|
|
108
|
+
const rejected = rejectReason(req.headers.authorization, config.token);
|
|
109
|
+
if (rejected) {
|
|
110
|
+
logger.use.debug(`MCP 请求未通过认证(${rejected}):${req.method} ${url.pathname}`);
|
|
111
|
+
// RFC 6750 第 3.1 节:只有令牌不对时质询带错误码,没带认证信息、方案不支持时不带
|
|
112
|
+
const challenge = rejected === WRONG_TOKEN ? 'Bearer error="invalid_token"' : 'Bearer';
|
|
113
|
+
res.writeHead(401, { 'content-type': 'application/json', 'www-authenticate': challenge });
|
|
114
|
+
res.end(JSON.stringify({ error: 'invalid_token', error_description: 'missing or invalid bearer token' }));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
80
117
|
if (req.method === 'GET' && url.pathname === '/sse') {
|
|
81
118
|
// 每条新连接按当前提供者构建:工具服务换人之后连上来的 client 直接用新实例。
|
|
82
119
|
// 提供者短暂缺席(换人的空档)时不建会话,让 client 重连。
|
|
@@ -138,7 +175,11 @@ async function run({ tools, logger, lifecycle, config: rawConfig }) {
|
|
|
138
175
|
/* ignore */
|
|
139
176
|
}
|
|
140
177
|
}
|
|
141
|
-
await new Promise(resolve =>
|
|
178
|
+
await new Promise(resolve => {
|
|
179
|
+
httpServer.close(() => resolve());
|
|
180
|
+
// close() 只关闲着的连接,客户端开着却还没发请求的连接要等对端自己断:一并断开,停用不等它们
|
|
181
|
+
httpServer.closeAllConnections();
|
|
182
|
+
});
|
|
142
183
|
logger.use.info('MCP server 已停止');
|
|
143
184
|
});
|
|
144
185
|
}
|
|
@@ -192,11 +233,9 @@ export function buildMcpServer(tools, config) {
|
|
|
192
233
|
isError: true,
|
|
193
234
|
};
|
|
194
235
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
platform: 'mcp',
|
|
199
|
-
};
|
|
236
|
+
// 参与者是 MCP 客户端自己:等级按 mcp:mcp-client 这个身份裁决
|
|
237
|
+
const client = { platform: 'mcp', userId: 'mcp-client' };
|
|
238
|
+
const callCtx = { sessionId: 'mcp-server', ...client, participants: [client] };
|
|
200
239
|
try {
|
|
201
240
|
const result = await tools.execute(toolName, args, callCtx);
|
|
202
241
|
// MCP 侧只透传文本:工具交给主模型看的图(images)是 agent 回合内的载荷,不在此暴露
|
|
@@ -211,7 +250,7 @@ export function buildMcpServer(tools, config) {
|
|
|
211
250
|
}
|
|
212
251
|
export default definePlugin({
|
|
213
252
|
name: '@aalis/plugin-mcp-server',
|
|
214
|
-
displayName: '
|
|
253
|
+
displayName: t('displayName'),
|
|
215
254
|
subsystem: 'tools',
|
|
216
255
|
configSchema,
|
|
217
256
|
uses,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
readonly displayName: "MCP server";
|
|
3
|
+
readonly portLabel: "Listening port";
|
|
4
|
+
readonly portDescription: "Must be 1-65535; an invalid value is reported as an error and the server does not start. To pause the service, disable this plugin in the plugin list.";
|
|
5
|
+
readonly bindLabel: "Listening address";
|
|
6
|
+
readonly bindEmpty: "bind must not be empty";
|
|
7
|
+
readonly tokenLabel: "Access token";
|
|
8
|
+
readonly tokenDescription: "External MCP clients must send it in the header Authorization: Bearer <token>. At least 32 visible ASCII characters with no whitespace; can be generated with openssl rand -hex 32";
|
|
9
|
+
readonly tokenInvalid: "must be at least 32 visible ASCII characters (no whitespace)";
|
|
10
|
+
readonly toolGroupsLabel: "Allowed tool groups";
|
|
11
|
+
readonly toolGroupsDescription: "An empty list or ['*'] = expose tools of all groups (still subject to “Allow exposing restricted tools”).";
|
|
12
|
+
readonly allowRestrictedLabel: "Allow exposing restricted tools";
|
|
13
|
+
};
|
|
14
|
+
export default _default;
|
|
15
|
+
//# sourceMappingURL=en.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,wBAeG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineLocale } from '@aalis/schema-i18n';
|
|
2
|
+
export default defineLocale()({
|
|
3
|
+
displayName: 'MCP server',
|
|
4
|
+
portLabel: 'Listening port',
|
|
5
|
+
portDescription: 'Must be 1-65535; an invalid value is reported as an error and the server does not start. To pause the service, disable this plugin in the plugin list.',
|
|
6
|
+
bindLabel: 'Listening address',
|
|
7
|
+
bindEmpty: 'bind must not be empty',
|
|
8
|
+
tokenLabel: 'Access token',
|
|
9
|
+
tokenDescription: 'External MCP clients must send it in the header Authorization: Bearer <token>. At least 32 visible ASCII characters with no whitespace; can be generated with openssl rand -hex 32',
|
|
10
|
+
tokenInvalid: 'must be at least 32 visible ASCII characters (no whitespace)',
|
|
11
|
+
toolGroupsLabel: 'Allowed tool groups',
|
|
12
|
+
toolGroupsDescription: "An empty list or ['*'] = expose tools of all groups (still subject to “Allow exposing restricted tools”).",
|
|
13
|
+
allowRestrictedLabel: 'Allow exposing restricted tools',
|
|
14
|
+
});
|
|
15
|
+
//# 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,SAAS,EAAE,gBAAgB;IAC3B,eAAe,EACb,wJAAwJ;IAC1J,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,wBAAwB;IACnC,UAAU,EAAE,cAAc;IAC1B,gBAAgB,EACd,oLAAoL;IACtL,YAAY,EAAE,8DAA8D;IAC5E,eAAe,EAAE,qBAAqB;IACtC,qBAAqB,EACnB,2GAA2G;IAC7G,oBAAoB,EAAE,iCAAiC;CACxD,CAAC,CAAC"}
|
package/dist/texts.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare const SOURCE: {
|
|
2
|
+
readonly displayName: "MCP 服务端";
|
|
3
|
+
readonly portLabel: "监听端口";
|
|
4
|
+
readonly portDescription: "必须 1-65535;非法值会报错不启动。要暂停服务请在「插件列表」里禁用本插件。";
|
|
5
|
+
readonly bindLabel: "监听地址";
|
|
6
|
+
readonly bindEmpty: "bind 不能为空";
|
|
7
|
+
readonly tokenLabel: "访问令牌";
|
|
8
|
+
readonly tokenDescription: "外部 MCP 客户端要在请求头带上 Authorization: Bearer <令牌>。至少 32 个可见 ASCII 字符、不含空白,可用 openssl rand -hex 32 生成";
|
|
9
|
+
readonly tokenInvalid: "至少 32 个可见 ASCII 字符(不含空白)";
|
|
10
|
+
readonly toolGroupsLabel: "允许的工具分组";
|
|
11
|
+
readonly toolGroupsDescription: "空列表或 ['*'] = 暴露所有分组的工具(仍受「允许暴露 restricted(受限)工具」约束)。";
|
|
12
|
+
readonly allowRestrictedLabel: "允许暴露 restricted(受限)工具";
|
|
13
|
+
};
|
|
14
|
+
export type Source = typeof SOURCE;
|
|
15
|
+
export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
16
|
+
readonly displayName: "MCP 服务端";
|
|
17
|
+
readonly portLabel: "监听端口";
|
|
18
|
+
readonly portDescription: "必须 1-65535;非法值会报错不启动。要暂停服务请在「插件列表」里禁用本插件。";
|
|
19
|
+
readonly bindLabel: "监听地址";
|
|
20
|
+
readonly bindEmpty: "bind 不能为空";
|
|
21
|
+
readonly tokenLabel: "访问令牌";
|
|
22
|
+
readonly tokenDescription: "外部 MCP 客户端要在请求头带上 Authorization: Bearer <令牌>。至少 32 个可见 ASCII 字符、不含空白,可用 openssl rand -hex 32 生成";
|
|
23
|
+
readonly tokenInvalid: "至少 32 个可见 ASCII 字符(不含空白)";
|
|
24
|
+
readonly toolGroupsLabel: "允许的工具分组";
|
|
25
|
+
readonly toolGroupsDescription: "空列表或 ['*'] = 暴露所有分组的工具(仍受「允许暴露 restricted(受限)工具」约束)。";
|
|
26
|
+
readonly allowRestrictedLabel: "允许暴露 restricted(受限)工具";
|
|
27
|
+
}>;
|
|
28
|
+
export {};
|
|
29
|
+
//# 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;;;;;;;;;;;;CAaF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;;;EAKZ,CAAC"}
|
package/dist/texts.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// 本插件自己的原文字典:显示名、配置项与令牌的校验原因、配置报错
|
|
2
|
+
import { defineTexts } from '@aalis/schema-i18n';
|
|
3
|
+
import en from './locales/en.js';
|
|
4
|
+
const SOURCE = {
|
|
5
|
+
displayName: 'MCP 服务端',
|
|
6
|
+
portLabel: '监听端口',
|
|
7
|
+
portDescription: '必须 1-65535;非法值会报错不启动。要暂停服务请在「插件列表」里禁用本插件。',
|
|
8
|
+
bindLabel: '监听地址',
|
|
9
|
+
bindEmpty: 'bind 不能为空',
|
|
10
|
+
tokenLabel: '访问令牌',
|
|
11
|
+
tokenDescription: '外部 MCP 客户端要在请求头带上 Authorization: Bearer <令牌>。至少 32 个可见 ASCII 字符、不含空白,可用 openssl rand -hex 32 生成',
|
|
12
|
+
tokenInvalid: '至少 32 个可见 ASCII 字符(不含空白)',
|
|
13
|
+
toolGroupsLabel: '允许的工具分组',
|
|
14
|
+
toolGroupsDescription: "空列表或 ['*'] = 暴露所有分组的工具(仍受「允许暴露 restricted(受限)工具」约束)。",
|
|
15
|
+
allowRestrictedLabel: '允许暴露 restricted(受限)工具',
|
|
16
|
+
};
|
|
17
|
+
export const t = defineTexts({
|
|
18
|
+
ns: '@aalis/plugin-mcp-server',
|
|
19
|
+
language: 'zh-CN',
|
|
20
|
+
source: SOURCE,
|
|
21
|
+
locales: { en },
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=texts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,2CAA2C;IAC5D,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,MAAM;IAClB,gBAAgB,EACd,iGAAiG;IACnG,YAAY,EAAE,0BAA0B;IACxC,eAAe,EAAE,SAAS;IAC1B,qBAAqB,EAAE,sDAAsD;IAC7E,oBAAoB,EAAE,uBAAuB;CACrC,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-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,17 +24,18 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/schema-config": ">=0.
|
|
28
|
-
"@aalis/
|
|
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
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
32
33
|
"@types/node": "^22.0.0",
|
|
33
34
|
"typescript": "^5.7.0",
|
|
34
|
-
"@aalis/core": "0.
|
|
35
|
+
"@aalis/core": "0.21.1"
|
|
35
36
|
},
|
|
36
37
|
"peerDependencies": {
|
|
37
|
-
"@aalis/core": ">=0.
|
|
38
|
+
"@aalis/core": ">=0.21.0 <1.0.0"
|
|
38
39
|
},
|
|
39
40
|
"aalis": {
|
|
40
41
|
"service": {
|