discourse_get_user
Retrieve basic user information from Discourse forums by providing a username. Integrate with Discourse MCP to enable AI agents to access and process user data efficiently.
Instructions
Get basic user info.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Implementation Reference
- src/tools/builtin/get_user.ts:16-37 (handler)Handler function that fetches user information from the Discourse API using the username, processes the response to extract name, trust level, creation date, bio, and profile URL, formats it into lines of text, and returns it as a content block. Handles errors by returning an error message.async ({ username }, _extra: any) => { try { const { base, client } = ctx.siteState.ensureSelectedSite(); const data = (await client.get(`/u/${encodeURIComponent(username)}.json`)) as any; const user = data?.user || data?.user_badges || data; const name = user?.name || username; const trust = user?.trust_level; const created = user?.created_at || user?.user?.created_at || ""; const bio = user?.bio_raw || ""; const lines = [ `@${username} (${name})`, trust != null ? `Trust level: ${trust}` : undefined, created ? `Joined: ${created}` : undefined, bio ? "" : undefined, bio ? bio.slice(0, 1000) : undefined, `Profile: ${base}/u/${encodeURIComponent(username)}`, ].filter(Boolean) as string[]; return { content: [{ type: "text", text: lines.join("\n") }] }; } catch (e: any) { return { content: [{ type: "text", text: `Failed to get user ${username}: ${e?.message || String(e)}` }], isError: true }; } }
- src/tools/builtin/get_user.ts:5-7 (schema)Zod schema defining the input: an object with a required 'username' string that must be at least 1 character long.const schema = z.object({ username: z.string().min(1), });
- src/tools/builtin/get_user.ts:9-15 (registration)Registers the discourse_get_user tool with the MCP server, specifying the tool name, title, description, and input schema (handler follows inline).server.registerTool( "discourse_get_user", { title: "Get User", description: "Get basic user info.", inputSchema: schema.shape, },
- src/tools/registry.ts:46-46 (registration)Top-level call to registerGetUser function, which in turn registers the discourse_get_user tool, invoked during registerAllTools with allowWrites: false.registerGetUser(server, ctx, { allowWrites: false });