@lofter-admin/mcp-backend 0.1.0 → 0.1.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 +7 -19
- package/dist/cli.js +60 -47
- package/dist/context.js +5 -4
- package/dist/http-client.js +27 -17
- package/dist/server.js +32 -22
- package/dist/tools/check-connection.js +27 -17
- package/dist/tools/common/request.js +64 -55
- package/dist/tools/list-micro-apps.js +21 -10
- package/package.json +16 -11
- package/dist/cli.js.map +0 -1
- package/dist/context.js.map +0 -1
- package/dist/http-client.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/tools/check-connection.js.map +0 -1
- package/dist/tools/common/request.js.map +0 -1
- package/dist/tools/list-micro-apps.js.map +0 -1
package/README.md
CHANGED
|
@@ -10,27 +10,15 @@
|
|
|
10
10
|
|
|
11
11
|
### stdio 模式(本地集成)
|
|
12
12
|
|
|
13
|
-
在
|
|
13
|
+
在 `.mcp.json` 的 `mcp` 字段中添加:
|
|
14
14
|
|
|
15
15
|
```json
|
|
16
|
-
{
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"@lofter-admin/mcp-backend",
|
|
23
|
-
"start",
|
|
24
|
-
"-t",
|
|
25
|
-
"stdio"
|
|
26
|
-
],
|
|
27
|
-
"enabled": true,
|
|
28
|
-
"environment": {
|
|
29
|
-
"LOFTER_ADMIN_SECRET": "<你的密钥>"
|
|
30
|
-
},
|
|
31
|
-
"timeout": 60000
|
|
32
|
-
}
|
|
33
|
-
}
|
|
16
|
+
"LOFTER-admin": {
|
|
17
|
+
"type": "stdio",
|
|
18
|
+
"command": "pnpx",
|
|
19
|
+
"args": ["@lofter-admin/mcp-backend", "start", "-t", "stdio"],
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"timeout": 60000
|
|
34
22
|
}
|
|
35
23
|
```
|
|
36
24
|
|
package/dist/cli.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
import { Command } from 'commander';
|
|
3
12
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
13
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
5
14
|
import { createServer } from 'node:http';
|
|
6
|
-
import { createMcpServer } from './server';
|
|
7
|
-
import { requestContext } from './context';
|
|
15
|
+
import { createMcpServer } from './server.js';
|
|
16
|
+
import { requestContext } from './context.js';
|
|
8
17
|
const program = new Command();
|
|
9
18
|
program
|
|
10
19
|
.name('lofter-mcp')
|
|
@@ -16,63 +25,67 @@ program
|
|
|
16
25
|
.option('-t, --transport <type>', 'transport 类型: stdio | http', 'stdio')
|
|
17
26
|
.option('-p, --port <number>', 'HTTP 模式监听端口(仅 --transport http 时有效)', '3000')
|
|
18
27
|
.option('-b, --base-url <url>', '后台服务 BASE URL,也可通过 LOFTER_BASE_URL 环境变量设置')
|
|
19
|
-
.action(
|
|
28
|
+
.action((options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
29
|
const { transport, port, baseUrl } = options;
|
|
21
30
|
if (transport === 'stdio') {
|
|
22
|
-
|
|
31
|
+
yield startStdio();
|
|
23
32
|
}
|
|
24
33
|
else if (transport === 'http') {
|
|
25
|
-
|
|
34
|
+
yield startHttp(parseInt(port, 10), baseUrl);
|
|
26
35
|
}
|
|
27
36
|
else {
|
|
28
37
|
process.stderr.write(`未知的 transport 类型: ${transport},支持 stdio | http\n`);
|
|
29
38
|
process.exit(1);
|
|
30
39
|
}
|
|
31
|
-
});
|
|
40
|
+
}));
|
|
32
41
|
program.parse();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
function startStdio() {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
const server = createMcpServer();
|
|
45
|
+
const transport = new StdioServerTransport();
|
|
46
|
+
yield server.connect(transport);
|
|
47
|
+
// stdio 模式下避免向 stdout 写入非协议内容
|
|
48
|
+
process.stderr.write('[lofter-mcp] stdio 模式已启动\n');
|
|
49
|
+
});
|
|
39
50
|
}
|
|
40
51
|
const MCP_ENDPOINT = '/mcp';
|
|
41
52
|
const ALLOWED_METHODS = new Set(['GET', 'POST', 'DELETE']);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
53
|
+
function startHttp(port, baseUrl) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
const httpServer = createServer((req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
// MCP v2 (2025-03-26) Streamable HTTP: 所有请求集中在单一 MCP endpoint
|
|
58
|
+
// POST /mcp - 发送 JSON-RPC 消息(requests / notifications / responses)
|
|
59
|
+
// GET /mcp - 建立 SSE 流,接收服务端推送
|
|
60
|
+
// DELETE /mcp - 显式终止 session(stateful 模式)
|
|
61
|
+
const url = new URL((_a = req.url) !== null && _a !== void 0 ? _a : '/', `http://localhost:${port}`);
|
|
62
|
+
const method = (_b = req.method) !== null && _b !== void 0 ? _b : '';
|
|
63
|
+
if (url.pathname !== MCP_ENDPOINT) {
|
|
64
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
65
|
+
res.end(JSON.stringify({ error: `Not Found. MCP endpoint is ${MCP_ENDPOINT}` }));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!ALLOWED_METHODS.has(method)) {
|
|
69
|
+
res.writeHead(405, {
|
|
70
|
+
'Content-Type': 'application/json',
|
|
71
|
+
Allow: 'GET, POST, DELETE',
|
|
72
|
+
});
|
|
73
|
+
res.end(JSON.stringify({ error: 'Method Not Allowed' }));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const rawSecret = req.headers['lofter-admin-secret'];
|
|
77
|
+
const secret = typeof rawSecret === 'string' ? rawSecret : undefined;
|
|
78
|
+
const server = createMcpServer();
|
|
79
|
+
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
|
|
80
|
+
yield server.connect(transport);
|
|
81
|
+
yield requestContext.run({ secret, baseUrl }, () => transport.handleRequest(req, res));
|
|
82
|
+
}));
|
|
83
|
+
httpServer.listen(port, () => {
|
|
84
|
+
console.log(`[lofter-mcp] HTTP MCP Server 已启动,端口: ${port}`);
|
|
85
|
+
console.log(`[lofter-mcp] MCP endpoint: http://localhost:${port}${MCP_ENDPOINT}`);
|
|
86
|
+
console.log(`[lofter-mcp] POST ${MCP_ENDPOINT} - 发送 JSON-RPC 消息`);
|
|
87
|
+
console.log(`[lofter-mcp] GET ${MCP_ENDPOINT} - 建立 SSE 推送流`);
|
|
88
|
+
console.log(`[lofter-mcp] DELETE ${MCP_ENDPOINT} - 终止 session`);
|
|
89
|
+
});
|
|
76
90
|
});
|
|
77
91
|
}
|
|
78
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/context.js
CHANGED
|
@@ -11,20 +11,21 @@ function getSecretFromUserConfig() {
|
|
|
11
11
|
const configs = JSON.parse(configStr);
|
|
12
12
|
return configs.secret;
|
|
13
13
|
}
|
|
14
|
-
catch {
|
|
14
|
+
catch (_a) {
|
|
15
15
|
return undefined;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
export function getSecret() {
|
|
19
|
+
var _a, _b;
|
|
19
20
|
const ctx = requestContext.getStore();
|
|
20
|
-
const secret = ctx
|
|
21
|
+
const secret = (_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.secret) !== null && _a !== void 0 ? _a : process.env.LOFTER_ADMIN_SECRET) !== null && _b !== void 0 ? _b : getSecretFromUserConfig();
|
|
21
22
|
if (!secret) {
|
|
22
23
|
throw new Error('LOFTER_ADMIN_SECRET 未设置(请求 header、环境变量或 ~/.lofter-micro/config 中的 secret)');
|
|
23
24
|
}
|
|
24
25
|
return secret;
|
|
25
26
|
}
|
|
26
27
|
export function getBaseUrl() {
|
|
28
|
+
var _a, _b;
|
|
27
29
|
const ctx = requestContext.getStore();
|
|
28
|
-
return ctx
|
|
30
|
+
return (_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.baseUrl) !== null && _a !== void 0 ? _a : process.env.LOFTER_BASE_URL) !== null && _b !== void 0 ? _b : DEFAULT_BASE_URL;
|
|
29
31
|
}
|
|
30
|
-
//# sourceMappingURL=context.js.map
|
package/dist/http-client.js
CHANGED
|
@@ -1,19 +1,29 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import axios from 'axios';
|
|
2
|
-
import { getSecret, getBaseUrl } from './context';
|
|
3
|
-
const DEFAULT_TIMEOUT =
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
import { getSecret, getBaseUrl } from './context.js';
|
|
12
|
+
const DEFAULT_TIMEOUT = 30000;
|
|
13
|
+
export function httpGet(path_1) {
|
|
14
|
+
return __awaiter(this, arguments, void 0, function* (path, options = {}) {
|
|
15
|
+
const { withAuth = false, timeout = DEFAULT_TIMEOUT, params } = options;
|
|
16
|
+
const config = {
|
|
17
|
+
method: 'GET',
|
|
18
|
+
url: `${getBaseUrl()}${path}`,
|
|
19
|
+
timeout,
|
|
20
|
+
params,
|
|
21
|
+
headers: {},
|
|
22
|
+
};
|
|
23
|
+
if (withAuth) {
|
|
24
|
+
config.headers['lofter-micro-secret'] = getSecret();
|
|
25
|
+
}
|
|
26
|
+
const response = yield axios.request(config);
|
|
27
|
+
return response.data;
|
|
28
|
+
});
|
|
18
29
|
}
|
|
19
|
-
//# sourceMappingURL=http-client.js.map
|
package/dist/server.js
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
11
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
12
|
import { z } from 'zod';
|
|
4
|
-
import { requestContext } from './context';
|
|
5
|
-
import { checkConnection } from './tools/check-connection';
|
|
6
|
-
import { listMicroApps } from './tools/list-micro-apps';
|
|
7
|
-
import { commonRequest } from './tools/common/request';
|
|
13
|
+
import { requestContext } from './context.js';
|
|
14
|
+
import { checkConnection } from './tools/check-connection.js';
|
|
15
|
+
import { listMicroApps } from './tools/list-micro-apps.js';
|
|
16
|
+
import { commonRequest } from './tools/common/request.js';
|
|
8
17
|
export function createMcpServer() {
|
|
9
18
|
const server = new McpServer({
|
|
10
19
|
name: 'lofter-admin-mcp',
|
|
11
20
|
version: '0.1.0',
|
|
12
21
|
});
|
|
13
22
|
// Tool: check_connection
|
|
14
|
-
server.tool('check_connection', '测试与 LOFTER 管理后台的连接是否正常', {},
|
|
15
|
-
const result =
|
|
23
|
+
server.tool('check_connection', '测试与 LOFTER 管理后台的连接是否正常', {}, () => __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const result = yield checkConnection();
|
|
16
25
|
return {
|
|
17
26
|
content: [
|
|
18
27
|
{
|
|
@@ -21,11 +30,11 @@ export function createMcpServer() {
|
|
|
21
30
|
},
|
|
22
31
|
],
|
|
23
32
|
};
|
|
24
|
-
});
|
|
33
|
+
}));
|
|
25
34
|
// Tool: list_micro_apps
|
|
26
|
-
server.tool('list_micro_apps', '获取 LOFTER 管理后台所有子应用的配置信息,包括主应用信息和子应用列表', {},
|
|
35
|
+
server.tool('list_micro_apps', '获取 LOFTER 管理后台所有子应用的配置信息,包括主应用信息和子应用列表', {}, () => __awaiter(this, void 0, void 0, function* () {
|
|
27
36
|
try {
|
|
28
|
-
const result =
|
|
37
|
+
const result = yield listMicroApps();
|
|
29
38
|
return {
|
|
30
39
|
content: [
|
|
31
40
|
{
|
|
@@ -47,7 +56,7 @@ export function createMcpServer() {
|
|
|
47
56
|
isError: true,
|
|
48
57
|
};
|
|
49
58
|
}
|
|
50
|
-
});
|
|
59
|
+
}));
|
|
51
60
|
// Tool: common_request
|
|
52
61
|
server.tool('common_request', '通用 HTTP 请求工具,转发至 LOFTER 管理后台接口,支持 GET/POST/PUT/DELETE 及多种请求体格式', {
|
|
53
62
|
functionDomain: z.enum(['api', 'platform']).optional().describe('功能域:api = 业务数据(/api/*),platform = 应用管理(/platform/*),默认 api'),
|
|
@@ -61,9 +70,9 @@ export function createMcpServer() {
|
|
|
61
70
|
json: z.record(z.unknown()).optional().describe('JSON 请求体,自动设置 Content-Type: application/json'),
|
|
62
71
|
text: z.string().optional().describe('文本请求体'),
|
|
63
72
|
buffer: z.string().optional().describe('二进制请求体,Base64 编码字符串'),
|
|
64
|
-
},
|
|
73
|
+
}, (params) => __awaiter(this, void 0, void 0, function* () {
|
|
65
74
|
try {
|
|
66
|
-
const result =
|
|
75
|
+
const result = yield commonRequest(params);
|
|
67
76
|
return {
|
|
68
77
|
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
69
78
|
};
|
|
@@ -75,16 +84,17 @@ export function createMcpServer() {
|
|
|
75
84
|
isError: true,
|
|
76
85
|
};
|
|
77
86
|
}
|
|
78
|
-
});
|
|
87
|
+
}));
|
|
79
88
|
return server;
|
|
80
89
|
}
|
|
81
|
-
export
|
|
82
|
-
return
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
90
|
+
export function createMcpRequestHandler(options) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
return (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
const secret = req.headers['lofter-micro-secret'];
|
|
94
|
+
const server = createMcpServer();
|
|
95
|
+
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
|
|
96
|
+
yield server.connect(transport);
|
|
97
|
+
return requestContext.run({ secret, baseUrl: options === null || options === void 0 ? void 0 : options.baseUrl }, () => transport.handleRequest(req, res));
|
|
98
|
+
});
|
|
99
|
+
});
|
|
89
100
|
}
|
|
90
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1,19 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { httpGet } from '../http-client.js';
|
|
11
|
+
export function checkConnection() {
|
|
12
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
try {
|
|
14
|
+
const data = yield httpGet('/health/check', {
|
|
15
|
+
withAuth: false,
|
|
16
|
+
timeout: 5000,
|
|
17
|
+
});
|
|
18
|
+
const body = typeof data === 'string' ? data.trim() : String(data);
|
|
19
|
+
if (body === '200') {
|
|
20
|
+
return { connected: true, message: '连接正常' };
|
|
21
|
+
}
|
|
22
|
+
return { connected: false, message: `服务返回异常内容: ${body}` };
|
|
11
23
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
26
|
+
return { connected: false, message: `连接失败: ${message}` };
|
|
27
|
+
}
|
|
28
|
+
});
|
|
18
29
|
}
|
|
19
|
-
//# sourceMappingURL=check-connection.js.map
|
|
@@ -1,58 +1,67 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import axios from 'axios';
|
|
2
|
-
import { getSecret, getBaseUrl } from '../../context';
|
|
3
|
-
const DEFAULT_TIMEOUT =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
'lofter-micro-secret': getSecret(),
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
};
|
|
11
|
+
import { getSecret, getBaseUrl } from '../../context.js';
|
|
12
|
+
const DEFAULT_TIMEOUT = 10000;
|
|
13
|
+
function makeRequest(params) {
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
const { functionDomain = 'api', functionName, method, headers = {}, timeout = DEFAULT_TIMEOUT, responseType = 'json', query, formData, json, text, buffer, } = params;
|
|
16
|
+
const url = `${getBaseUrl()}/${functionDomain}/${functionName}`;
|
|
17
|
+
// 构建请求头
|
|
18
|
+
const requestHeaders = Object.assign({ 'lofter-micro-secret': getSecret() }, headers);
|
|
19
|
+
// 构建请求体
|
|
20
|
+
let data;
|
|
21
|
+
if (formData !== undefined) {
|
|
22
|
+
requestHeaders['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
23
|
+
data = new URLSearchParams(Object.entries(formData).map(([k, v]) => [k, String(v)])).toString();
|
|
24
|
+
}
|
|
25
|
+
else if (json !== undefined) {
|
|
26
|
+
requestHeaders['Content-Type'] = 'application/json';
|
|
27
|
+
data = json;
|
|
28
|
+
}
|
|
29
|
+
else if (text !== undefined) {
|
|
30
|
+
data = text;
|
|
31
|
+
}
|
|
32
|
+
else if (buffer !== undefined) {
|
|
33
|
+
data = Buffer.from(buffer, 'base64');
|
|
34
|
+
}
|
|
35
|
+
// axios responseType 映射
|
|
36
|
+
const axiosResponseType = responseType === 'buffer' ? 'arraybuffer' : responseType;
|
|
37
|
+
const config = {
|
|
38
|
+
method: method.toUpperCase(),
|
|
39
|
+
url,
|
|
40
|
+
timeout,
|
|
41
|
+
params: query,
|
|
42
|
+
headers: requestHeaders,
|
|
43
|
+
data,
|
|
44
|
+
responseType: axiosResponseType,
|
|
45
|
+
};
|
|
46
|
+
const response = yield axios.request(config);
|
|
47
|
+
// 处理响应数据
|
|
48
|
+
let responseData;
|
|
49
|
+
if (responseType === 'buffer') {
|
|
50
|
+
// arraybuffer 转 Base64 字符串返回
|
|
51
|
+
responseData = Buffer.from(response.data).toString('base64');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
responseData = response.data;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
status: response.status,
|
|
58
|
+
headers: response.headers,
|
|
59
|
+
data: responseData,
|
|
60
|
+
};
|
|
61
|
+
});
|
|
54
62
|
}
|
|
55
|
-
export
|
|
56
|
-
return
|
|
63
|
+
export function commonRequest(params) {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
return makeRequest(params);
|
|
66
|
+
});
|
|
57
67
|
}
|
|
58
|
-
//# sourceMappingURL=request.js.map
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { httpGet } from '../http-client.js';
|
|
11
|
+
export function listMicroApps() {
|
|
12
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
var _a;
|
|
14
|
+
const resp = yield httpGet('/micro/config', {
|
|
15
|
+
withAuth: true,
|
|
16
|
+
timeout: 10000,
|
|
17
|
+
});
|
|
18
|
+
if (resp.code !== 0) {
|
|
19
|
+
throw new Error(`接口返回错误: ${(_a = resp.message) !== null && _a !== void 0 ? _a : resp.code}`);
|
|
20
|
+
}
|
|
21
|
+
return resp.data;
|
|
6
22
|
});
|
|
7
|
-
if (resp.code !== 0) {
|
|
8
|
-
throw new Error(`接口返回错误: ${resp.message ?? resp.code}`);
|
|
9
|
-
}
|
|
10
|
-
return resp.data;
|
|
11
23
|
}
|
|
12
|
-
//# sourceMappingURL=list-micro-apps.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lofter-admin/mcp-backend",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "LOFTER Admin MCP Server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -11,12 +11,23 @@
|
|
|
11
11
|
"README.md"
|
|
12
12
|
],
|
|
13
13
|
"exports": {
|
|
14
|
-
".": "./
|
|
15
|
-
"./server": "./
|
|
14
|
+
".": "./src/cli.js",
|
|
15
|
+
"./server": "./server.ts"
|
|
16
16
|
},
|
|
17
17
|
"publishConfig": {
|
|
18
18
|
"access": "public",
|
|
19
|
-
"registry": "https://registry.npmjs.org"
|
|
19
|
+
"registry": "https://registry.npmjs.org",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": "./dist/cli.js",
|
|
22
|
+
"./server": "./dist/server.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"clean": "rimraf dist",
|
|
27
|
+
"dev": "tsc --watch",
|
|
28
|
+
"build": "npm run clean && tsc",
|
|
29
|
+
"prepublishOnly": "npm run build",
|
|
30
|
+
"start": "node dist/cli.js start"
|
|
20
31
|
},
|
|
21
32
|
"dependencies": {
|
|
22
33
|
"@modelcontextprotocol/sdk": "^1.10.2",
|
|
@@ -31,11 +42,5 @@
|
|
|
31
42
|
},
|
|
32
43
|
"engines": {
|
|
33
44
|
"node": ">=20"
|
|
34
|
-
},
|
|
35
|
-
"scripts": {
|
|
36
|
-
"clean": "rimraf dist",
|
|
37
|
-
"dev": "tsc --watch",
|
|
38
|
-
"build": "npm run clean && tsc",
|
|
39
|
-
"start": "node dist/cli.js start"
|
|
40
45
|
}
|
|
41
|
-
}
|
|
46
|
+
}
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AACzD,MAAM,6BAA6B,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AAOzF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAEtE,SAAS,uBAAuB;IAC9B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA2B,CAAC;QAChE,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uBAAuB,EAAE,CAAC;IAC3F,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACtC,OAAO,GAAG,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gBAAgB,CAAC;AACzE,CAAC"}
|
package/dist/http-client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAY,EACZ,UAII,EAAE;IAEN,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAG,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAExE,MAAM,MAAM,GAAuB;QACjC,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE;QAC7B,OAAO;QACP,MAAM;QACN,OAAO,EAAE,EAA4B;KACtC,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACZ,MAAM,CAAC,OAAkC,CAAC,qBAAqB,CAAC,GAAG,SAAS,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
|
package/dist/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-connection.js","sourceRoot":"","sources":["../../src/tools/check-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAOzC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAS,eAAe,EAAE;YAClD,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,IAAI,EAAE,EAAE,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/tools/common/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,MAAM,eAAe,GAAG,MAAM,CAAC;AAyC/B,KAAK,UAAU,WAAW,CACxB,MAA2B;IAE3B,MAAM,EACJ,cAAc,GAAG,KAAK,EACtB,YAAY,EACZ,MAAM,EACN,OAAO,GAAG,EAAE,EACZ,OAAO,GAAG,eAAe,EACzB,YAAY,GAAG,MAAM,EACrB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,MAAM,GACP,GAAG,MAAM,CAAC;IAEX,MAAM,GAAG,GAAG,GAAG,UAAU,EAAE,IAAI,cAAc,IAAI,YAAY,EAAE,CAAC;IAEhE,QAAQ;IACR,MAAM,cAAc,GAA2B;QAC7C,qBAAqB,EAAE,SAAS,EAAE;QAClC,GAAG,OAAO;KACX,CAAC;IAEF,QAAQ;IACR,IAAI,IAAa,CAAC;IAClB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,cAAc,CAAC,cAAc,CAAC,GAAG,mCAAmC,CAAC;QACrE,IAAI,GAAG,IAAI,eAAe,CACxB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,cAAc,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QACpD,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,wBAAwB;IACxB,MAAM,iBAAiB,GACrB,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IAE3D,MAAM,MAAM,GAAuB;QACjC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;QAC5B,GAAG;QACH,OAAO;QACP,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,cAAc;QACvB,IAAI;QACJ,YAAY,EAAE,iBAAiB;KAChC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7C,SAAS;IACT,IAAI,YAAqB,CAAC;IAC1B,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,6BAA6B;QAC7B,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAmB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAiC;QACnD,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA2B;IAE3B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-micro-apps.js","sourceRoot":"","sources":["../../src/tools/list-micro-apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAuCzC,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAsB,eAAe,EAAE;QAC/D,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC"}
|