Skip to main content
Glama
Qihoo360

360 AI Cloud Drive MCP Server

by Qihoo360

user-info

Retrieve detailed user account information from 360 AI Cloud Drive for authentication and account management purposes.

Instructions

获取360AI云盘用户详细信息。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Main execution logic for the 'user-info' tool: authenticates, fetches user data from API, formats storage and VIP info, returns formatted text response.
    async (mcpReq: any) => { const httpContext = gethttpContext(mcpReq, server); // 使用transport中的authInfo const transportAuthInfo = httpContext.authInfo; console.error('transportAuthInfo==user-info', transportAuthInfo); try { let authInfo: AuthInfo; try { // 传入方法名和qid参数 authInfo = await getAuthInfo({}, transportAuthInfo); authInfo.request_url = getConfig(transportAuthInfo?.ecsEnv).request_url } catch (authError) { throw new Error("获取鉴权信息失败,请提供有效的API_KEY"); } // 调用API获取用户信息 const apiResponse = await fetchUserInfo(authInfo); // 检查API响应是否成功 if (apiResponse && apiResponse.errno === 0 && apiResponse.data) { const user = apiResponse.data; // 格式化部分关键信息 const info = [ `昵称: ${user.name}`, `会员: ${user.is_vip ? '是' : '否'}${user.vip_desc ? '(' + user.vip_desc + ')' : ''}`, `总空间: ${(parseInt(user.total_size) / (1024 * 1024 * 1024)).toFixed(2)} GB`, `已用空间: ${(parseInt(user.used_size) / (1024 * 1024 * 1024)).toFixed(2)} GB`, `剩余空间: ${(user.available_size / (1024 * 1024 * 1024)).toFixed(2)} GB`, `会员剩余天数: ${user.expire_day}天`, `会员到期时间: ${user.expire ? new Date(parseInt(user.expire) * 1000).toLocaleString() : '未知'}` ].join('\n'); return { content: [ { type: "text", text: `用户信息获取成功!\n${info}`, }, ], userInfo: user }; } else { const errorMsg = apiResponse?.errmsg || "API请求失败"; throw new Error(errorMsg); } } catch (error: any) { console.error("获取用户信息出错:", error); return { content: [ { type: "text", text: `获取用户信息时发生错误: ${error.message}`, }, { type: "text", text: TOOL_LIMIT_NOTE, }, ], }; } }, );
  • Registers the 'user-info' tool on the MCP server using server.tool(), defining name, description, and handler.
    export function registerUserInfoTool(server: McpServer) { server.tool( "user-info", "获取360AI云盘用户详细信息。", async (mcpReq: any) => { const httpContext = gethttpContext(mcpReq, server); // 使用transport中的authInfo const transportAuthInfo = httpContext.authInfo; console.error('transportAuthInfo==user-info', transportAuthInfo); try { let authInfo: AuthInfo; try { // 传入方法名和qid参数 authInfo = await getAuthInfo({}, transportAuthInfo); authInfo.request_url = getConfig(transportAuthInfo?.ecsEnv).request_url } catch (authError) { throw new Error("获取鉴权信息失败,请提供有效的API_KEY"); } // 调用API获取用户信息 const apiResponse = await fetchUserInfo(authInfo); // 检查API响应是否成功 if (apiResponse && apiResponse.errno === 0 && apiResponse.data) { const user = apiResponse.data; // 格式化部分关键信息 const info = [ `昵称: ${user.name}`, `会员: ${user.is_vip ? '是' : '否'}${user.vip_desc ? '(' + user.vip_desc + ')' : ''}`, `总空间: ${(parseInt(user.total_size) / (1024 * 1024 * 1024)).toFixed(2)} GB`, `已用空间: ${(parseInt(user.used_size) / (1024 * 1024 * 1024)).toFixed(2)} GB`, `剩余空间: ${(user.available_size / (1024 * 1024 * 1024)).toFixed(2)} GB`, `会员剩余天数: ${user.expire_day}天`, `会员到期时间: ${user.expire ? new Date(parseInt(user.expire) * 1000).toLocaleString() : '未知'}` ].join('\n'); return { content: [ { type: "text", text: `用户信息获取成功!\n${info}`, }, ], userInfo: user }; } else { const errorMsg = apiResponse?.errmsg || "API请求失败"; throw new Error(errorMsg); } } catch (error: any) { console.error("获取用户信息出错:", error); return { content: [ { type: "text", text: `获取用户信息时发生错误: ${error.message}`, }, { type: "text", text: TOOL_LIMIT_NOTE, }, ], }; } }, ); }
  • Helper function to fetch raw user information from the 360AI cloud disk API using GET request with auth params.
    async function fetchUserInfo(authInfo: AuthInfo): Promise<any> { try { const url = new URL(authInfo.request_url || ''); // 构建请求头 const headers = { 'Access-Token': authInfo.access_token || '' }; // 构建请求参数 const baseParams: Record<string, string> = { 'method': 'User.getUserDetail', 'access_token': authInfo.access_token || '', 'qid': authInfo.qid || '', 'sign': '' }; // 添加所有参数到URL Object.entries(baseParams).forEach(([key, value]) => { url.searchParams.append(key, String(value)); }); const response = await fetch(url.toString(), { method: 'GET', headers: headers }); if (!response.ok) { throw new Error(`API 请求失败,状态码: ${response.status}`); } // 获取原始响应文本 const responseText = await response.text(); try { // 尝试解析为JSON const data = JSON.parse(responseText); return data; } catch (jsonError) { console.error("JSON解析错误:", jsonError); throw new Error(`无法解析API响应: ${responseText.substring(0, 100)}...`); } } catch (error) { console.error('获取用户信息失败:', error); throw error; } }
  • Invokes registerUserInfoTool to register the tool as part of all tools registration.
    registerUserInfoTool(server);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Qihoo360/ecs_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server