diff --git a/web/package.json b/web/package.json index abdc435b..36e6acf3 100644 --- a/web/package.json +++ b/web/package.json @@ -23,6 +23,7 @@ "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@hookform/resolvers": "^5.0.1", + "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-checkbox": "^1.3.1", "@radix-ui/react-context-menu": "^2.2.15", "@radix-ui/react-dialog": "^1.1.14", diff --git a/web/src/app/home/plugins/mcp-market/MCPMarketComponent.tsx b/web/src/app/home/plugins/mcp-market/MCPMarketComponent.tsx index 7cb90d76..e1388ef5 100644 --- a/web/src/app/home/plugins/mcp-market/MCPMarketComponent.tsx +++ b/web/src/app/home/plugins/mcp-market/MCPMarketComponent.tsx @@ -4,7 +4,7 @@ import { useEffect, useState, useRef } from 'react'; import styles from '@/app/home/plugins/plugins.module.css'; import { MCPMarketCardVO } from '@/app/home/plugins/mcp-market/mcp-market-card/MCPMarketCardVO'; import MCPMarketCardComponent from '@/app/home/plugins/mcp-market/mcp-market-card/MCPMarketCardComponent'; -import { spaceClient } from '@/app/infra/http/HttpClient'; +// import { spaceClient } from '@/app/infra/http/HttpClient'; import { useTranslation } from 'react-i18next'; import { Input } from '@/components/ui/input'; import { @@ -72,44 +72,44 @@ export default function MCPMarketComponent({ sortOrder: string = sortOrderValue, ) { setLoading(true); - spaceClient - .getMCPMarketServers(page, pageSize, keyword, sortBy, sortOrder) - .then((res) => { - setMarketServerList( - res.servers.map((marketServer) => { - let repository = marketServer.repository; - if (repository.startsWith('https://github.com/')) { - repository = repository.replace('https://github.com/', ''); - } + // spaceClient + // .getMCPMarketServers(page, pageSize, keyword, sortBy, sortOrder) + // .then((res) => { + // setMarketServerList( + // res.servers.map((marketServer) => { + // let repository = marketServer.repository; + // if (repository.startsWith('https://github.com/')) { + // repository = repository.replace('https://github.com/', ''); + // } - if (repository.startsWith('github.com/')) { - repository = repository.replace('github.com/', ''); - } + // if (repository.startsWith('github.com/')) { + // repository = repository.replace('github.com/', ''); + // } - const author = repository.split('/')[0]; - const name = repository.split('/')[1]; - return new MCPMarketCardVO({ - author: author, - description: marketServer.description, - githubURL: `https://github.com/${repository}`, - name: name, - serverId: String(marketServer.ID), - starCount: marketServer.stars, - version: - 'version' in marketServer - ? String(marketServer.version) - : '1.0.0', // 如果没有提供版本,则默认为1.0.0 - }); - }), - ); - setTotalCount(res.total); - setLoading(false); - console.log('market servers:', res); - }) - .catch((error) => { - console.error(t('mcp.getServerListError'), error); - setLoading(false); - }); + // const author = repository.split('/')[0]; + // const name = repository.split('/')[1]; + // return new MCPMarketCardVO({ + // author: author, + // description: marketServer.description, + // githubURL: `https://github.com/${repository}`, + // name: name, + // serverId: String(marketServer.ID), + // starCount: marketServer.stars, + // version: + // 'version' in marketServer + // ? String(marketServer.version) + // : '1.0.0', // 如果没有提供版本,则默认为1.0.0 + // }); + // }), + // ); + // setTotalCount(res.total); + // setLoading(false); + // console.log('market servers:', res); + // }) + // .catch((error) => { + // console.error(t('mcp.getServerListError'), error); + // setLoading(false); + // }); } function handlePageChange(page: number) { diff --git a/web/src/app/home/plugins/mcp/MCPComponent.tsx b/web/src/app/home/plugins/mcp/MCPComponent.tsx index 9bc83127..63299b95 100644 --- a/web/src/app/home/plugins/mcp/MCPComponent.tsx +++ b/web/src/app/home/plugins/mcp/MCPComponent.tsx @@ -122,7 +122,7 @@ const MCPComponent = forwardRef((props, ref) => { viewBox="0 0 24 24" fill="currentColor" > - +
{t('mcp.noServerInstalled')}
diff --git a/web/src/app/home/plugins/page.tsx b/web/src/app/home/plugins/page.tsx index 1f159fb8..3edfe1e2 100644 --- a/web/src/app/home/plugins/page.tsx +++ b/web/src/app/home/plugins/page.tsx @@ -375,8 +375,8 @@ export default function PluginConfigPage() { )} - MCP - + MCP +
diff --git a/web/src/app/infra/http/BackendClient.ts b/web/src/app/infra/http/BackendClient.ts index 41b84a8f..f27cea9d 100644 --- a/web/src/app/infra/http/BackendClient.ts +++ b/web/src/app/infra/http/BackendClient.ts @@ -491,66 +491,66 @@ export class BackendClient extends BaseHttpClient { return this.post(`/api/v1/plugins/${author}/${name}/upgrade`); } - // ============ MCP API ============ - public getMCPServers(): Promise { - return this.get('/api/v1/mcp/servers'); - } - - public getMCPServer(serverName: string): Promise { - return this.get(`/api/v1/mcp/servers/${serverName}`); - } - - public createMCPServer( - server: MCPServerConfig, - ): Promise { - return this.post('/api/v1/mcp/servers', server); - } - - public updateMCPServer( - serverName: string, - server: Partial, - ): Promise { - return this.put(`/api/v1/mcp/servers/${serverName}`, server); - } - - public deleteMCPServer(serverName: string): Promise { - return this.delete(`/api/v1/mcp/servers/${serverName}`); - } - - public toggleMCPServer( - serverName: string, - target_enabled: boolean, - ): Promise { - return this.put(`/api/v1/mcp/servers/${serverName}/toggle`, { - target_enabled, - }); - } - - public testMCPServer(serverName: string): Promise { - return this.post(`/api/v1/mcp/servers/${serverName}/test`); - } - - // public getMCPMarketServers( - // page: number, - // page_size: number, - // query: string, - // sort_by: string = 'stars', - // sort_order: string = 'DESC', - // ): Promise { - // return this.post(`/api/v1/market/mcp`, { - // page, - // page_size, - // query, - // sort_by, - // sort_order, - // }); - // } - - public installMCPServerFromGithub( - source: string, - ): Promise { - return this.post('/api/v1/mcp/install/github', { source }); - } + // ============ MCP API ============ + public getMCPServers(): Promise { + return this.get('/api/v1/mcp/servers'); + } + + public getMCPServer(serverName: string): Promise { + return this.get(`/api/v1/mcp/servers/${serverName}`); + } + + public createMCPServer( + server: MCPServerConfig, + ): Promise { + return this.post('/api/v1/mcp/servers', server); + } + + public updateMCPServer( + serverName: string, + server: Partial, + ): Promise { + return this.put(`/api/v1/mcp/servers/${serverName}`, server); + } + + public deleteMCPServer(serverName: string): Promise { + return this.delete(`/api/v1/mcp/servers/${serverName}`); + } + + public toggleMCPServer( + serverName: string, + target_enabled: boolean, + ): Promise { + return this.put(`/api/v1/mcp/servers/${serverName}/toggle`, { + target_enabled, + }); + } + + public testMCPServer(serverName: string): Promise { + return this.post(`/api/v1/mcp/servers/${serverName}/test`); + } + + // public getMCPMarketServers( + // page: number, + // page_size: number, + // query: string, + // sort_by: string = 'stars', + // sort_order: string = 'DESC', + // ): Promise { + // return this.post(`/api/v1/market/mcp`, { + // page, + // page_size, + // query, + // sort_by, + // sort_order, + // }); + // } + + public installMCPServerFromGithub( + source: string, + ): Promise { + return this.post('/api/v1/mcp/install/github', { source }); + } // ============ System API ============ public getSystemInfo(): Promise {