delete_issue
Remove an issue from a GitHub repository by specifying the owner, repo, and issue number using GraphQL API. Simplify issue cleanup and repository management.
Instructions
Delete an issue from a GitHub repository using GraphQL API
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| issue_number | Yes | ||
| owner | Yes | ||
| repo | Yes |
Implementation Reference
- operations/issues.ts:135-168 (handler)The main handler function that implements the delete_issue tool logic: fetches issue node_id then deletes via GitHub GraphQL API.export async function deleteIssue(owner: string, repo: string, issue_number: number) { // Bước 1: Lấy node_id (GraphQL ID) của issue const issue = await getIssue(owner, repo, issue_number) as { node_id: string }; if (!issue || !issue.node_id) { throw new Error(`Issue #${issue_number} not found or cannot be accessed`); } // Bước 2: Sử dụng GraphQL API để xóa issue const mutation = ` mutation DeleteIssue($issueId: ID!) { deleteIssue(input: { issueId: $issueId }) { clientMutationId repository { id name } } } `; const variables = { issueId: issue.node_id }; const result = await graphqlRequest(mutation, variables); return { success: true, issue_number: issue_number, repository: `${owner}/${repo}`, ...result.data.deleteIssue }; }
- operations/issues.ts:57-61 (schema)Zod schema defining the input parameters for the delete_issue tool.export const DeleteIssueSchema = z.object({ owner: z.string(), repo: z.string(), issue_number: z.number(), });
- index.ts:210-213 (registration)Tool registration in the list of tools returned by ListToolsRequestHandler.{ name: "delete_issue", description: "Delete an issue from a GitHub repository using GraphQL API", inputSchema: zodToJsonSchema(issues.DeleteIssueSchema),
- index.ts:490-496 (handler)Dispatcher case in the main CallToolRequestHandler that parses arguments and calls the deleteIssue function.case "delete_issue": { const args = issues.DeleteIssueSchema.parse(request.params.arguments); const result = await issues.deleteIssue(args.owner, args.repo, args.issue_number); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; }