Refa: migrate MCP APIs to RESTful api (#14317)

### What problem does this PR solve?

migrate MCP APIs to RESTful api

### Type of change

- [x] Refactoring
This commit is contained in:
buua436
2026-04-23 12:51:27 +08:00
committed by GitHub
parent dbf8c6ed90
commit aa4526266f
6 changed files with 481 additions and 317 deletions

View File

@@ -141,8 +141,12 @@ export const useDeleteMcpServer = () => {
} = useMutation({
mutationKey: [McpApiAction.DeleteMcpServer],
mutationFn: async (ids: string[]) => {
const { data = {} } = await mcpServerService.delete({ mcp_ids: ids });
if (data.code === 0) {
const results = await Promise.all(
ids.map((id) => mcpServerService.delete({ mcp_id: id })),
);
const failed = results.find(({ data = {} }) => data.code !== 0);
const data = failed?.data ?? { code: 0, data: true };
if (!failed) {
message.success(i18n.t(`message.deleted`));
queryClient.invalidateQueries({
@@ -188,8 +192,23 @@ export const useExportMcpServer = () => {
} = useMutation<ResponseType<IExportedMcpServers>, Error, string[]>({
mutationKey: [McpApiAction.ExportMcpServer],
mutationFn: async (ids) => {
const { data = {} } = await mcpServerService.export({ mcp_ids: ids });
if (data.code === 0) {
const results = await Promise.all(
ids.map((id) => mcpServerService.export({ mcp_id: id })),
);
const failed = results.find(({ data = {} }) => data.code !== 0);
const data = (failed?.data ?? {
code: 0,
data: results.reduce<IExportedMcpServers>(
(acc, result) => ({
mcpServers: {
...acc.mcpServers,
...(result.data?.data?.mcpServers ?? {}),
},
}),
{ mcpServers: {} },
),
}) as ResponseType<IExportedMcpServers>;
if (!failed) {
message.success(i18n.t(`message.operated`));
}
return data;

View File

@@ -43,12 +43,7 @@ interface ISymbol {
}
export interface IExportedMcpServers {
mcpServers: McpServers;
}
interface McpServers {
fetch_2: IExportedMcpServer;
github_1: IExportedMcpServer;
mcpServers: Record<string, IExportedMcpServer>;
}
export interface IExportedMcpServer {

View File

@@ -1,57 +1,27 @@
import { IPaginationRequestBody } from '@/interfaces/request/base';
import api from '@/utils/api';
import registerServer from '@/utils/register-server';
import request from '@/utils/request';
const {
listMcpServer,
createMcpServer,
updateMcpServer,
deleteMcpServer,
getMcpServer,
importMcpServer,
exportMcpServer,
testMcpServer,
} = api;
const methods = {
list: {
url: listMcpServer,
method: 'post',
},
get: {
url: getMcpServer,
method: 'get',
},
create: {
url: createMcpServer,
method: 'post',
},
update: {
url: updateMcpServer,
method: 'post',
},
delete: {
url: deleteMcpServer,
method: 'post',
},
import: {
url: importMcpServer,
method: 'post',
},
export: {
url: exportMcpServer,
method: 'post',
},
test: {
url: testMcpServer,
method: 'post',
},
} as const;
const mcpServerService = registerServer<keyof typeof methods>(methods, request);
const mcpServerService = {
get: (params: { mcp_id: string }) =>
request.get(api.getMcpServer(params.mcp_id), {
params: { mode: 'preview' },
}),
create: (params?: Record<string, any>) =>
request.post(api.createMcpServer, { data: params }),
update: ({ mcp_id, ...params }: Record<string, any>) =>
request.put(api.updateMcpServer(mcp_id), { data: params }),
delete: ({ mcp_id }: { mcp_id: string }) =>
request.delete(api.deleteMcpServer(mcp_id)),
import: (params?: Record<string, any>) =>
request.post(api.importMcpServer, { data: params }),
export: ({ mcp_id }: { mcp_id: string }) =>
request.get(api.exportMcpServer(mcp_id)),
test: (params: Record<string, any>) =>
request.post(api.testMcpServer(params.name || 'preview'), { data: params }),
};
export default mcpServerService;
export const listMcpServers = (params?: IPaginationRequestBody, body?: any) =>
request.post(api.listMcpServer, { data: body || {}, params });
request.get(api.listMcpServer, { params: { ...params, ...(body || {}) } });

View File

@@ -220,14 +220,15 @@ export default {
`${webAPI}/canvas/${canvasId}/completion`,
// mcp server
listMcpServer: `${webAPI}/mcp_server/list`,
getMcpServer: `${webAPI}/mcp_server/detail`,
createMcpServer: `${webAPI}/mcp_server/create`,
updateMcpServer: `${webAPI}/mcp_server/update`,
deleteMcpServer: `${webAPI}/mcp_server/rm`,
importMcpServer: `${webAPI}/mcp_server/import`,
exportMcpServer: `${webAPI}/mcp_server/export`,
testMcpServer: `${webAPI}/mcp_server/test_mcp`,
listMcpServer: `${restAPIv1}/mcp/servers`,
getMcpServer: (id: string) => `${restAPIv1}/mcp/servers/${id}`,
createMcpServer: `${restAPIv1}/mcp/servers`,
updateMcpServer: (id: string) => `${restAPIv1}/mcp/servers/${id}`,
deleteMcpServer: (id: string) => `${restAPIv1}/mcp/servers/${id}`,
importMcpServer: `${restAPIv1}/mcp/servers/import`,
exportMcpServer: (id: string) =>
`${restAPIv1}/mcp/servers/${id}?mode=download`,
testMcpServer: (id: string) => `${restAPIv1}/mcp/servers/${id}/test`,
// next-search
createSearch: `${restAPIv1}/searches`,