fix: Apply MCP node acquisition tool (#3510)

This commit is contained in:
shaohuzhang1 2025-07-08 17:02:02 +08:00 committed by GitHub
parent f04de2328a
commit fce2f50a01
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 15 additions and 11 deletions

View File

@ -572,8 +572,8 @@ class PlayDemoTextRequest(serializers.Serializer):
async def get_mcp_tools(servers): async def get_mcp_tools(servers):
async with MultiServerMCPClient(servers) as client: client = MultiServerMCPClient(servers)
return client.get_tools() return await client.get_tools()
class McpServersSerializer(serializers.Serializer): class McpServersSerializer(serializers.Serializer):

View File

@ -71,7 +71,8 @@ class ApplicationAPI(APIView):
RoleConstants.USER.get_workspace_role(), RoleConstants.USER.get_workspace_role(),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()) RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def get(self, request: Request, workspace_id: str): def get(self, request: Request, workspace_id: str):
return result.success(Query(data={'workspace_id': workspace_id, 'user_id': request.user.id}).list(request.query_params)) return result.success(
Query(data={'workspace_id': workspace_id, 'user_id': request.user.id}).list(request.query_params))
class Page(APIView): class Page(APIView):
authentication_classes = [TokenAuth] authentication_classes = [TokenAuth]
@ -266,9 +267,11 @@ class McpServers(APIView):
[PermissionConstants.APPLICATION.get_workspace_application_permission()], [PermissionConstants.APPLICATION.get_workspace_application_permission()],
CompareConstants.AND), CompareConstants.AND),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role()) RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def get(self, request: Request, workspace_id, application_id: str): def post(self, request: Request, workspace_id, application_id: str):
return result.success(ApplicationOperateSerializer( return result.success(ApplicationOperateSerializer(
data={'mcp_servers': request.query_params.get('mcp_servers')}).get_mcp_servers()) data={'mcp_servers': request.query_params.get('mcp_servers'), 'workspace_id': workspace_id,
'user_id': request.user.id,
'application_id': application_id}).get_mcp_servers(request.data))
class SpeechToText(APIView): class SpeechToText(APIView):

View File

@ -289,11 +289,12 @@ const speechToText: (
/** /**
* mcp * mcp
*/ */
const getMcpTools: (application_id: String, loading?: Ref<boolean>) => Promise<Result<any>> = ( const getMcpTools: (
application_id, application_id: String,
loading, mcp_servers: any,
) => { loading?: Ref<boolean>,
return get(`${prefix.value}/${application_id}/mcp_tools`, undefined, loading) ) => Promise<Result<any>> = (application_id, mcp_servers, loading) => {
return post(`${prefix.value}/${application_id}/mcp_tools`, { mcp_servers }, {}, loading)
} }
/** /**

View File

@ -260,7 +260,7 @@ function getTools() {
MsgError(t('views.applicationWorkflow.nodes.mcpNode.mcpServerTip')) MsgError(t('views.applicationWorkflow.nodes.mcpNode.mcpServerTip'))
return return
} }
applicationApi.getMcpTools(id, loading).then((res: any) => { applicationApi.getMcpTools(id, form_data.value.mcp_servers, loading).then((res: any) => {
form_data.value.mcp_tools = res.data form_data.value.mcp_tools = res.data
MsgSuccess(t('views.applicationWorkflow.nodes.mcpNode.getToolsSuccess')) MsgSuccess(t('views.applicationWorkflow.nodes.mcpNode.getToolsSuccess'))
// jsonmcp_server // jsonmcp_server