Skip to main content
Glama

AtomGit MCP Server

Mulan Permissive Software License, Version 2
1
7
issues.ts6.61 kB
import { z } from "zod"; import { atomGitRequest } from "../common/utils.js"; export const CreateIssueOptionsSchema = z.object({ title: z.string().describe("Issue title"), body: z.string().describe("Issue content (in Markdown format)"), assignees: z.array(z.string()).optional(), milestone: z.number().optional(), labels: z.array(z.string()).optional(), }); export const CreateIssueSchema = z.object({ owner: z.string().describe("Repository owner, typically referred to as 'username (owner)'. Case-insensitive."), repo: z.string().describe("Repository name. Case-insensitive."), ...CreateIssueOptionsSchema.shape, }); export const AssignIssueSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), issue_number: z.number().describe("Issue number"), assignee: z.string().describe("List of assignees to be assigned"), }); export const CreateIssueCommentSchema = z.object({ owner: z.string().describe("Repository owner, typically referred to as 'username (owner)'. Case-insensitive."), repo: z.string().describe("Repository name. Case-insensitive."), issue_number: z.number().describe("Issue number"), body: z.string().describe("Issue comment content (in Markdown format)"), }); export const DeleteIssueCommentSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), comment_id: z.number().describe("Comment ID"), }); export const GetIssueCommentSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), comment_id: z.number().describe("Comment ID"), }); export const ListIssueCommentsSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), issue_number: z.number().describe("Issue number"), }); export const GetIssueSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), issue_number: z.number().describe("Issue number"), }); export const ListAssigneesSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), }); export const CheckAssigneeSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), assignee: z.string().describe("Username to be checked"), }); export const ListIssuesSchema = z.object({ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), }); export async function createIssue( owner: string, repo: string, options: z.infer<typeof CreateIssueOptionsSchema> ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues`, { method: "POST", body: options, }, ); } /** * Deletes a specific issue comment. * @param owner - Repository owner * @param repo - Repository name * @param comment_id - ID of the comment to delete */ export async function deleteIssueComment( owner: string, repo: string, comment_id: number ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/comments/${encodeURIComponent(comment_id)}`, { method: "DELETE", } ); } /** * Retrieves details of a specific issue comment. * @param owner - Repository owner * @param repo - Repository name * @param comment_id - ID of the comment to retrieve */ export async function getIssueComment( owner: string, repo: string, comment_id: number ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/comments/${encodeURIComponent(comment_id)}`, { method: "GET", } ); } /** * Lists all comments for a specific issue. * @param owner - Repository owner * @param repo - Repository name * @param issue_number - Issue number */ export async function listIssueComments( owner: string, repo: string, issue_number: number ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/${encodeURIComponent(issue_number)}/comments`, { method: "GET", } ); } /** * Lists all issues in a repository. * @param owner - Repository owner * @param repo - Repository name */ export async function listIssues(owner: string, repo: string) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues`, { method: "GET", } ); } /** * Retrieves details of a specific issue. * @param owner - Repository owner * @param repo - Repository name * @param issue_number - Issue number */ export async function getIssue( owner: string, repo: string, issue_number: number ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/${encodeURIComponent(issue_number)}`, { method: "GET", } ); } /** * Sets assignees for a specific issue. * @param owner - Repository owner * @param repo - Repository name * @param issue_number - Issue number * @param assignees - List of assignees */ export async function setAssignee( owner: string, repo: string, issue_number: number, assignee: string ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/${encodeURIComponent(issue_number)}/assignees`, { method: "POST", body: { assignee, }, } ); } export async function listIssueAssignees( owner: string, repo: string ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/assignees`, { method: "GET", } ); } export async function checkIfUserIsAssignable( owner: string, repo: string, assignee: string ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/assignees/${encodeURIComponent(assignee)}`, { method: "GET", } ); } export async function createIssueComment( owner: string, repo: string, issue_number: number, body: string ) { return atomGitRequest( `https://api.atomgit.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/${encodeURIComponent(issue_number)}/comments`, { method: "POST", body: { body }, } ); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kaiyuanxiaobing/atomgit-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server