jira_get_users
Search for Jira users by name, email, username, or account ID to retrieve display names, email addresses, account status, and account types with pagination support.
Instructions
Search for users by name, email, username, or account ID. Returns display name, email, account status, and account type. Supports pagination.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Specific account ID to search for | |
| maxResults | No | Maximum number of results to return | |
| query | No | Search query for user name or email (partial matches supported) | |
| startAt | No | Index of first result to return (for pagination) | |
| username | No | Specific username to search for |
Implementation Reference
- src/tools/get-users.ts:50-81 (handler)Main handler function that validates input, prepares API parameters, fetches users from Jira API using helper, formats the response, logs activity, and handles errors.export async function handleGetUsers(input: unknown): Promise<McpToolResponse> { try { const validated = validateInput(GetUsersInputSchema, input); if (validated.query) { log.info(`Searching users with query: "${validated.query}"...`); } else if (validated.username) { log.info(`Searching for username: "${validated.username}"...`); } else if (validated.accountId) { log.info(`Searching for account ID: "${validated.accountId}"...`); } else { log.info('Getting all users...'); } const getParams: any = {}; if (validated.query !== undefined) getParams.query = validated.query; if (validated.username !== undefined) getParams.username = validated.username; if (validated.accountId !== undefined) getParams.accountId = validated.accountId; if (validated.startAt !== undefined) getParams.startAt = validated.startAt; if (validated.maxResults !== undefined) getParams.maxResults = validated.maxResults; const users = await getUsers(getParams); log.info(`Found ${users.length} user(s)`); return formatUsersResponse(users); } catch (error) { log.error('Error in handleGetUsers:', error); return handleError(error); } }
- src/types/tools.ts:143-151 (schema)Zod schema for input validation of the jira_get_users tool, defining optional query, username, accountId, pagination parameters.export const GetUsersInputSchema = z.object({ query: z.string().optional().describe('Search query for user name or email'), username: z.string().optional().describe('Specific username to search for'), accountId: z.string().optional().describe('Specific account ID to search for'), startAt: z.number().min(0).default(0).describe('Index of first result to return'), maxResults: z.number().min(1).max(50).default(50).describe('Maximum number of results to return'), }); export type GetUsersInput = z.infer<typeof GetUsersInputSchema>;
- src/index.ts:32-49 (registration)Server-side registration mapping tool name 'jira_get_users' (TOOL_NAMES.GET_USERS) to its handler function handleGetUsers for execution.const toolHandlers = new Map<string, (input: unknown) => Promise<any>>([ [TOOL_NAMES.GET_VISIBLE_PROJECTS, tools.handleGetVisibleProjects], [TOOL_NAMES.GET_ISSUE, tools.handleGetIssue], [TOOL_NAMES.SEARCH_ISSUES, tools.handleSearchIssues], [TOOL_NAMES.GET_MY_ISSUES, tools.handleGetMyIssues], [TOOL_NAMES.GET_ISSUE_TYPES, tools.handleGetIssueTypes], [TOOL_NAMES.GET_USERS, tools.handleGetUsers], [TOOL_NAMES.GET_PRIORITIES, tools.handleGetPriorities], [TOOL_NAMES.GET_STATUSES, tools.handleGetStatuses], [TOOL_NAMES.CREATE_ISSUE, tools.handleCreateIssue], [TOOL_NAMES.UPDATE_ISSUE, tools.handleUpdateIssue], [TOOL_NAMES.ADD_COMMENT, tools.handleAddComment], [TOOL_NAMES.GET_PROJECT_INFO, tools.handleGetProjectInfo], [TOOL_NAMES.CREATE_SUBTASK, tools.handleCreateSubtask], [TOOL_NAMES.GET_CREATE_META, tools.handleGetCreateMeta], [TOOL_NAMES.GET_CUSTOM_FIELDS, tools.handleGetCustomFields], [TOOL_NAMES.CREATE_ISSUE_LINK, tools.handleCreateIssueLink], ]);
- src/index.ts:52-69 (registration)Registration in the list of all available tools, including getUsersTool which defines the tool name, description, and input schema for MCP listTools request.const allTools = [ tools.getVisibleProjectsTool, tools.getIssueTool, tools.searchIssuesTool, tools.getMyIssuesTool, tools.getIssueTypesTool, tools.getUsersTool, tools.getPrioritiesTool, tools.getStatusesTool, tools.createIssueTool, tools.updateIssueTool, tools.addCommentTool, tools.getProjectInfoTool, tools.createSubtaskTool, tools.getCreateMetaTool, tools.getCustomFieldsTool, tools.createIssueLinkTool, ];
- src/tools/get-users.ts:13-48 (schema)MCP Tool definition object with name 'jira_get_users', description, and JSON schema for input validation in listTools response.export const getUsersTool: Tool = { name: TOOL_NAMES.GET_USERS, description: 'Search for users by name, email, username, or account ID. Returns display name, email, account status, and account type. Supports pagination.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for user name or email (partial matches supported)', }, username: { type: 'string', description: 'Specific username to search for', }, accountId: { type: 'string', description: 'Specific account ID to search for', }, startAt: { type: 'number', description: 'Index of first result to return (for pagination)', minimum: 0, default: 0, }, maxResults: { type: 'number', description: 'Maximum number of results to return', minimum: 1, maximum: 50, default: 50, }, }, required: [], }, };