get-user-profile
Retrieve LeetCode user profile data by providing a username to access contest history, problem statistics, and ranking information.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | LeetCode username |
Implementation Reference
- src/tools/user-tools.ts:12-27 (handler)The handler function that implements the core logic of the 'get-user-profile' tool: fetches the LeetCode user profile and returns it as formatted JSON or an error message.async ({ username }) => { try { const data = await leetcodeService.fetchUserProfile(username); return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [{ type: "text", text: `Error: ${errorMessage}` }], isError: true }; }
- src/tools/user-tools.ts:9-11 (schema)Input schema definition using Zod, specifying the required 'username' parameter.{ username: z.string().describe("LeetCode username") },
- src/tools/user-tools.ts:7-29 (registration)Registration of the 'get-user-profile' tool on the MCP server, including schema and handler.server.tool( "get-user-profile", { username: z.string().describe("LeetCode username") }, async ({ username }) => { try { const data = await leetcodeService.fetchUserProfile(username); return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [{ type: "text", text: `Error: ${errorMessage}` }], isError: true }; } } );
- Supporting method in LeetCodeService that executes the GraphQL query to retrieve user profile data./** * Fetch user profile data */ async fetchUserProfile(username: string) { return this.executeQuery(userProfileQuery, { username }); }
- src/graphql/queries.ts:1-49 (helper)GraphQL query used to fetch comprehensive user profile information from LeetCode API.export const userProfileQuery = ` query getUserProfile($username: String!) { matchedUser(username: $username) { username submitStats: submitStatsGlobal { acSubmissionNum { difficulty count submissions } totalSubmissionNum { difficulty count submissions } } profile { ranking reputation starRating realName aboutMe userAvatar skillTags country company school websites countryName location contestCount asciiCode socialAccounts skillSet { langLevels { langName langVerboseName level } topics { slug name level } } } } } `;