Skip to content

Commit 642f5c1

Browse files
committed
fix(tools): update env and interactive tools implementation 🔧
1 parent b194c26 commit 642f5c1

2 files changed

Lines changed: 29 additions & 18 deletions

File tree

mcp/src/tools/env.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export function registerEnvTools(server: ExtendedMcpServer) {
3939
}
4040

4141
if (noEnvs) {
42-
return { content: [{ type: "text", text: "当前账户下暂无可用的云开发环境,请先在腾讯云控制台创建环境" }] };
42+
return { content: [{ type: "text", text: "当前账户下暂无可用的云开发环境,请先在腾讯云控制台创建环境 https://tcb.cloud.tencent.com/dev?from=AIToolkit" }] };
4343
}
4444

4545
if (cancelled) {
@@ -91,7 +91,7 @@ export function registerEnvTools(server: ExtendedMcpServer) {
9191
// 清理环境ID配置
9292
await clearUserEnvId();
9393
resetCloudBaseManagerCache();
94-
94+
9595
return {
9696
content: [{
9797
type: "text",
@@ -127,23 +127,30 @@ export function registerEnvTools(server: ExtendedMcpServer) {
127127
async ({ action }: { action: "list" | "info" | "domains" }) => {
128128
try {
129129
let result;
130-
130+
131131
switch (action) {
132132
case "list":
133-
const cloudbaseList = await getCloudBaseManager({ cloudBaseOptions, requireEnvId: false });
134-
result = await cloudbaseList.env.listEnvs();
133+
try {
134+
const cloudbaseList = await getCloudBaseManager({ cloudBaseOptions, requireEnvId: false });
135+
result = await cloudbaseList.env.listEnvs();
136+
} catch (error) {
137+
debug('获取环境列表时出错:', error);
138+
return { content:
139+
[{ type: "text", text: "当前账户下暂无可用的云开发环境,请先在腾讯云控制台创建环境 https://tcb.cloud.tencent.com/dev?from=AIToolkit \n错误信息:" + (error instanceof Error ? error.message : String(error)) }]
140+
};
141+
}
135142
break;
136-
143+
137144
case "info":
138145
const cloudbaseInfo = await getManager();
139146
result = await cloudbaseInfo.env.getEnvInfo();
140147
break;
141-
148+
142149
case "domains":
143150
const cloudbaseDomains = await getManager();
144151
result = await cloudbaseDomains.env.getEnvAuthDomains();
145152
break;
146-
153+
147154
default:
148155
throw new Error(`不支持的查询类型: ${action}`);
149156
}
@@ -187,16 +194,16 @@ export function registerEnvTools(server: ExtendedMcpServer) {
187194
try {
188195
const cloudbase = await getManager();
189196
let result;
190-
197+
191198
switch (action) {
192199
case "create":
193200
result = await cloudbase.env.createEnvDomain(domains);
194201
break;
195-
202+
196203
case "delete":
197204
result = await cloudbase.env.deleteEnvDomain(domains);
198205
break;
199-
206+
200207
default:
201208
throw new Error(`不支持的操作类型: ${action}`);
202209
}

mcp/src/tools/interactive.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,21 +117,24 @@ export async function _promptAndSetEnvironmentId(autoSelectSingle: boolean, serv
117117

118118
// 2. 获取可用环境列表
119119
const cloudbase = await getCloudBaseManager({requireEnvId: false});
120-
const envResult = await cloudbase.env.listEnvs();
121-
debug('envResult', envResult);
122-
if (!envResult || !envResult.EnvList) {
123-
return { selectedEnvId: null, cancelled: false, noEnvs: true };
120+
let envResult;
121+
try {
122+
envResult = await cloudbase.env.listEnvs();
123+
} catch (error) {
124+
debug('获取环境ID时出错:', error);
124125
}
126+
127+
debug('envResult', envResult);
125128

126-
const { EnvList } = envResult;
129+
const { EnvList } = envResult || {};
127130
let selectedEnvId: string | null = null;
128131

129132
// 3. 根据情况选择或提示用户选择
130-
if (autoSelectSingle && EnvList.length === 1 && EnvList[0].EnvId) {
133+
if (autoSelectSingle && EnvList && EnvList.length === 1 && EnvList[0].EnvId) {
131134
selectedEnvId = EnvList[0].EnvId;
132135
} else {
133136
const interactiveServer = getInteractiveServer(server);
134-
const result = await interactiveServer.collectEnvId(EnvList);
137+
const result = await interactiveServer.collectEnvId(EnvList || []);
135138

136139
if (result.cancelled) {
137140
return { selectedEnvId: null, cancelled: true };
@@ -146,6 +149,7 @@ export async function _promptAndSetEnvironmentId(autoSelectSingle: boolean, serv
146149
}
147150

148151
return { selectedEnvId, cancelled: false };
152+
149153
}
150154

151155
// 获取用户配置文件路径

0 commit comments

Comments
 (0)