feat(mcp): 补齐服务导入与能力工作台链路
This commit is contained in:
64
frontend/src/api/__tests__/mcp.spec.ts
Normal file
64
frontend/src/api/__tests__/mcp.spec.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import {
|
||||
getMcpWorkspace,
|
||||
importMcpServer,
|
||||
listMcpCapabilitiesByServerCode,
|
||||
listMcpCapabilitiesByServerId,
|
||||
listMcpServers,
|
||||
saveMcpCapability,
|
||||
} from '../mcp';
|
||||
import { get, post } from '../request';
|
||||
|
||||
vi.mock('../request', () => ({
|
||||
get: vi.fn(),
|
||||
post: vi.fn(),
|
||||
}));
|
||||
|
||||
describe('mcp api', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it('maps mcp endpoints correctly', () => {
|
||||
importMcpServer({
|
||||
serverCode: 'jira_server',
|
||||
serverName: 'Jira 服务',
|
||||
importType: 'URL',
|
||||
endpointUrl: 'https://mcp.example.com/sse',
|
||||
manifestJson: '{"server":"jira"}',
|
||||
});
|
||||
listMcpServers();
|
||||
listMcpCapabilitiesByServerId('1001');
|
||||
listMcpCapabilitiesByServerCode('jira_server');
|
||||
saveMcpCapability({
|
||||
serverId: '1001',
|
||||
capabilityCode: 'jira_issue_search',
|
||||
capabilityName: '问题检索',
|
||||
capabilityType: 'TOOL',
|
||||
schemaJson: '{"type":"object"}',
|
||||
enabled: true,
|
||||
});
|
||||
getMcpWorkspace('1001');
|
||||
|
||||
expect(post).toHaveBeenCalledWith('/mcp/import', {
|
||||
serverCode: 'jira_server',
|
||||
serverName: 'Jira 服务',
|
||||
importType: 'URL',
|
||||
endpointUrl: 'https://mcp.example.com/sse',
|
||||
manifestJson: '{"server":"jira"}',
|
||||
});
|
||||
expect(get).toHaveBeenCalledWith('/mcp/servers');
|
||||
expect(get).toHaveBeenCalledWith('/mcp/servers/1001/capabilities');
|
||||
expect(get).toHaveBeenCalledWith('/mcp/servers/code/jira_server/capabilities');
|
||||
expect(post).toHaveBeenCalledWith('/mcp/capabilities/save', {
|
||||
serverId: '1001',
|
||||
capabilityCode: 'jira_issue_search',
|
||||
capabilityName: '问题检索',
|
||||
capabilityType: 'TOOL',
|
||||
schemaJson: '{"type":"object"}',
|
||||
enabled: true,
|
||||
});
|
||||
expect(get).toHaveBeenCalledWith('/mcp/workspace', { params: { serverId: '1001' } });
|
||||
});
|
||||
});
|
||||
74
frontend/src/api/mcp.ts
Normal file
74
frontend/src/api/mcp.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import { get, post } from './request';
|
||||
|
||||
export interface McpImportRequest {
|
||||
serverCode: string;
|
||||
serverName: string;
|
||||
importType: string;
|
||||
endpointUrl?: string;
|
||||
packageName?: string;
|
||||
manifestJson: string;
|
||||
authType?: string;
|
||||
secretRef?: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface McpServer {
|
||||
id?: string;
|
||||
serverCode: string;
|
||||
serverName: string;
|
||||
importType: string;
|
||||
endpointUrl?: string;
|
||||
packageName?: string;
|
||||
manifestJson: string;
|
||||
authType?: string;
|
||||
secretRef?: string;
|
||||
healthStatus?: string;
|
||||
enabled?: boolean;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface McpCapability {
|
||||
id?: string;
|
||||
serverId: string;
|
||||
capabilityCode: string;
|
||||
capabilityName: string;
|
||||
capabilityType: string;
|
||||
schemaJson: string;
|
||||
enabled?: boolean;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface McpWorkspace {
|
||||
serverId: string;
|
||||
serverCode: string;
|
||||
serverName: string;
|
||||
importType: string;
|
||||
healthStatus: string;
|
||||
enabled: boolean;
|
||||
enabledCapabilityCount: number;
|
||||
capabilities: McpCapability[];
|
||||
}
|
||||
|
||||
export function importMcpServer(data: McpImportRequest) {
|
||||
return post<boolean, McpImportRequest>('/mcp/import', data);
|
||||
}
|
||||
|
||||
export function listMcpServers() {
|
||||
return get<McpServer[]>('/mcp/servers');
|
||||
}
|
||||
|
||||
export function listMcpCapabilitiesByServerId(serverId: string) {
|
||||
return get<McpCapability[]>(`/mcp/servers/${serverId}/capabilities`);
|
||||
}
|
||||
|
||||
export function listMcpCapabilitiesByServerCode(serverCode: string) {
|
||||
return get<McpCapability[]>(`/mcp/servers/code/${serverCode}/capabilities`);
|
||||
}
|
||||
|
||||
export function saveMcpCapability(data: McpCapability) {
|
||||
return post<boolean, McpCapability>('/mcp/capabilities/save', data);
|
||||
}
|
||||
|
||||
export function getMcpWorkspace(serverId: string) {
|
||||
return get<McpWorkspace>('/mcp/workspace', { params: { serverId } });
|
||||
}
|
||||
Reference in New Issue
Block a user