|
|
@@ -80,6 +80,12 @@ const GetCommitsSchema = z.object({
|
|
|
page: z.number().optional().describe('Page number (default: 1)'),
|
|
|
});
|
|
|
|
|
|
+const GetTreeSchema = z.object({
|
|
|
+ owner: z.string().describe('Repository owner username'),
|
|
|
+ repo: z.string().describe('Repository name'),
|
|
|
+ sha: z.string().describe('Git tree SHA or commit SHA'),
|
|
|
+});
|
|
|
+
|
|
|
const ListIssuesSchema = z.object({
|
|
|
owner: z.string().describe('Repository owner username'),
|
|
|
repo: z.string().describe('Repository name'),
|
|
|
@@ -527,6 +533,28 @@ export function createMcpServer(gogsClient: GogsClient): Server {
|
|
|
required: ['owner', 'repo'],
|
|
|
},
|
|
|
},
|
|
|
+ {
|
|
|
+ name: 'get_tree',
|
|
|
+ description: 'Get a git tree by SHA - provides low-level access to repository structure at a specific commit or tree SHA',
|
|
|
+ inputSchema: {
|
|
|
+ type: 'object',
|
|
|
+ properties: {
|
|
|
+ owner: {
|
|
|
+ type: 'string',
|
|
|
+ description: 'Repository owner username',
|
|
|
+ },
|
|
|
+ repo: {
|
|
|
+ type: 'string',
|
|
|
+ description: 'Repository name',
|
|
|
+ },
|
|
|
+ sha: {
|
|
|
+ type: 'string',
|
|
|
+ description: 'Git tree SHA or commit SHA',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ required: ['owner', 'repo', 'sha'],
|
|
|
+ },
|
|
|
+ },
|
|
|
{
|
|
|
name: 'list_issues',
|
|
|
description: 'List issues in a repository',
|
|
|
@@ -1386,6 +1414,19 @@ export function createMcpServer(gogsClient: GogsClient): Server {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+ case 'get_tree': {
|
|
|
+ const { owner, repo, sha } = GetTreeSchema.parse(args);
|
|
|
+ const tree = await gogsClient.getTree(owner, repo, sha);
|
|
|
+ return {
|
|
|
+ content: [
|
|
|
+ {
|
|
|
+ type: 'text',
|
|
|
+ text: JSON.stringify(tree, null, 2),
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
case 'list_issues': {
|
|
|
const { owner, repo, state, labels, page, per_page } = ListIssuesSchema.parse(args);
|
|
|
const issues = await gogsClient.listIssues(owner, repo, { state, labels, page, per_page });
|