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 } } } } } `;