@grayls1998/guidebook_planner_mcp 1.0.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 +2 -0
- package/bin/proxy.js +41 -0
- package/bin/setup.js +45 -0
- package/package.json +16 -0
package/README.md
ADDED
package/bin/proxy.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
|
|
3
|
+
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
4
|
+
const axios = require('axios');
|
|
5
|
+
const keytar = require('keytar');
|
|
6
|
+
|
|
7
|
+
const SERVICE_NAME = "guidebook_planner_mcp";
|
|
8
|
+
const MCP_SERVER_URL = "https://www.aeterr.top/sse";
|
|
9
|
+
|
|
10
|
+
async function getToken() {
|
|
11
|
+
const token = await keytar.getPassword(SERVICE_NAME, 'auth-token');
|
|
12
|
+
if (!token) throw new Error('未找到识别码,请运行 setup');
|
|
13
|
+
return token;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const server = new Server(
|
|
17
|
+
{ name: 'guidebook-planner-proxy', version: '1.0.0' },
|
|
18
|
+
{ capabilities: { tools: {} } }
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
server.setRequestHandler('tools/list', async () => {
|
|
22
|
+
const token = await getToken();
|
|
23
|
+
const res = await axios.get(`${MCP_SERVER_URL}/tools`, {
|
|
24
|
+
headers: { 'X-Auth-Token': token }
|
|
25
|
+
});
|
|
26
|
+
return res.data;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
server.setRequestHandler('tools/call', async (request) => {
|
|
30
|
+
const token = await getToken();
|
|
31
|
+
const res = await axios.post(`${MCP_SERVER_URL}/tools/call`, {
|
|
32
|
+
name: request.params.name,
|
|
33
|
+
arguments: request.params.arguments
|
|
34
|
+
}, {
|
|
35
|
+
headers: { 'X-Auth-Token': token }
|
|
36
|
+
});
|
|
37
|
+
return res.data;
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const transport = new StdioServerTransport();
|
|
41
|
+
server.connect(transport).catch(console.error);
|
package/bin/setup.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const http = require('http');
|
|
3
|
+
const url = require('url');
|
|
4
|
+
const open = require('open');
|
|
5
|
+
const keytar = require('keytar');
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
const path = require('path');
|
|
8
|
+
const os = require('os');
|
|
9
|
+
|
|
10
|
+
const SERVICE_NAME = "guidebook_planner_mcp";
|
|
11
|
+
const LOGIN_URL = "https://www.aeterr.top/login-mcp.html";
|
|
12
|
+
|
|
13
|
+
(async () => {
|
|
14
|
+
const token = await new Promise((resolve) => {
|
|
15
|
+
const server = http.createServer((req, res) => {
|
|
16
|
+
const query = url.parse(req.url, true).query;
|
|
17
|
+
if (query.token) {
|
|
18
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
19
|
+
res.end('<h2>授权成功 ✅</h2><p>请关闭页面,重启 AI 助手。</p>');
|
|
20
|
+
server.close();
|
|
21
|
+
resolve(query.token);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
server.listen(0, '127.0.0.1', () => {
|
|
25
|
+
const port = server.address().port;
|
|
26
|
+
const callback = `http://127.0.0.1:${port}/callback`;
|
|
27
|
+
open(`${LOGIN_URL}?callback=${encodeURIComponent(callback)}`);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
await keytar.setPassword(SERVICE_NAME, 'auth-token', token);
|
|
32
|
+
console.log('识别码已存储');
|
|
33
|
+
|
|
34
|
+
// 自动修改 Cursor 配置(可扩展其他工具)
|
|
35
|
+
const configPath = path.join(os.homedir(), '.cursor', 'mcp.json');
|
|
36
|
+
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
37
|
+
const config = fs.existsSync(configPath) ? JSON.parse(fs.readFileSync(configPath, 'utf8')) : {};
|
|
38
|
+
config.mcpServers = config.mcpServers || {};
|
|
39
|
+
config.mcpServers['guidebook-planner'] = {
|
|
40
|
+
command: 'npx',
|
|
41
|
+
args: ['@yourcompany/guidebook_planner_mcp', 'proxy']
|
|
42
|
+
};
|
|
43
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
44
|
+
console.log('✅ 配置完成!请重启 AI 工具。');
|
|
45
|
+
})();
|
package/package.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@grayls1998/guidebook_planner_mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "行程规划MCP一键配置工具",
|
|
5
|
+
"bin": {
|
|
6
|
+
"guidebook_planner_mcp_setup": "./bin/setup.js",
|
|
7
|
+
"guidebook_planner_mcp_proxy": "./bin/proxy.js"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
11
|
+
"axios": "^1.6.0",
|
|
12
|
+
"open": "^9.0.0",
|
|
13
|
+
"keytar": "^7.9.0"
|
|
14
|
+
},
|
|
15
|
+
"license": "MIT"
|
|
16
|
+
}
|