@zt-playground/mcp-server 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/github.d.ts +3 -0
- package/dist/tools/github.d.ts.map +1 -0
- package/dist/tools/github.js +161 -0
- package/dist/tools/github.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ async function startServer() {
|
|
|
25
25
|
const { registerRepositoryTools } = await import('./tools/repository.js');
|
|
26
26
|
const { registerDatabaseTools } = await import('./tools/database.js');
|
|
27
27
|
const { registerSshTools } = await import('./tools/ssh.js');
|
|
28
|
+
const { registerGitHubTools } = await import('./tools/github.js');
|
|
28
29
|
const { registerProjectResources } = await import('./resources/project.js');
|
|
29
30
|
const { registerIssueResources } = await import('./resources/issue.js');
|
|
30
31
|
// Validate auth (non-blocking — won't abort if no key)
|
|
@@ -51,6 +52,8 @@ async function startServer() {
|
|
|
51
52
|
registerRepositoryTools(server);
|
|
52
53
|
registerDatabaseTools(server);
|
|
53
54
|
registerSshTools(server);
|
|
55
|
+
// Register GitHub workflow tools
|
|
56
|
+
registerGitHubTools(server);
|
|
54
57
|
// Register resources
|
|
55
58
|
registerProjectResources(server);
|
|
56
59
|
registerIssueResources(server);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/tools/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAiNpD"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { api } from '../http-client.js';
|
|
3
|
+
import { jsonResult, errorResult, resolveProjectId } from '../utils.js';
|
|
4
|
+
export function registerGitHubTools(server) {
|
|
5
|
+
server.tool('github_create_branch', 'Creates a branch from an issue (feature/ZT-{seq}-{slug}). Moves issue to IN_PROGRESS.', {
|
|
6
|
+
projectId: z.string().describe('Project ID or name'),
|
|
7
|
+
issueId: z.string().describe('Issue ID'),
|
|
8
|
+
repoId: z.string().optional().describe('Repository ID (uses first linked repo if omitted)'),
|
|
9
|
+
baseBranch: z.string().optional().describe('Base branch (uses default branch if omitted)'),
|
|
10
|
+
}, async (args) => {
|
|
11
|
+
try {
|
|
12
|
+
const projectId = await resolveProjectId(args.projectId);
|
|
13
|
+
const result = await api.post(`/github/projects/${projectId}/branches/from-issue`, {
|
|
14
|
+
issueId: args.issueId,
|
|
15
|
+
repoId: args.repoId,
|
|
16
|
+
baseBranch: args.baseBranch,
|
|
17
|
+
});
|
|
18
|
+
return jsonResult(result);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
return errorResult(`Failed to create branch: ${err.message}`);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
server.tool('github_create_pr', 'Creates a pull request on GitHub. Auto-generates title/body from linked issue.', {
|
|
25
|
+
projectId: z.string().describe('Project ID or name'),
|
|
26
|
+
repoId: z.string().describe('Repository ID'),
|
|
27
|
+
sourceBranch: z.string().describe('Source branch name'),
|
|
28
|
+
targetBranch: z.string().optional().describe('Target branch (uses default branch if omitted)'),
|
|
29
|
+
title: z.string().optional().describe('PR title (auto-generated from issue if omitted)'),
|
|
30
|
+
body: z.string().optional().describe('PR body/description'),
|
|
31
|
+
draft: z.boolean().optional().describe('Create as draft PR'),
|
|
32
|
+
issueId: z.string().optional().describe('Issue ID to link and auto-generate title/body from'),
|
|
33
|
+
}, async (args) => {
|
|
34
|
+
try {
|
|
35
|
+
const projectId = await resolveProjectId(args.projectId);
|
|
36
|
+
const result = await api.post(`/github/projects/${projectId}/repos/${args.repoId}/pulls/create`, {
|
|
37
|
+
repoId: args.repoId,
|
|
38
|
+
sourceBranch: args.sourceBranch,
|
|
39
|
+
targetBranch: args.targetBranch,
|
|
40
|
+
title: args.title,
|
|
41
|
+
body: args.body,
|
|
42
|
+
draft: args.draft,
|
|
43
|
+
issueId: args.issueId,
|
|
44
|
+
});
|
|
45
|
+
return jsonResult(result);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
return errorResult(`Failed to create PR: ${err.message}`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
server.tool('github_merge_pr', 'Merges a pull request. Supports merge, squash, and rebase strategies.', {
|
|
52
|
+
projectId: z.string().describe('Project ID or name'),
|
|
53
|
+
repoId: z.string().describe('Repository ID'),
|
|
54
|
+
prNumber: z.number().describe('PR number'),
|
|
55
|
+
strategy: z.enum(['merge', 'squash', 'rebase']).optional().describe('Merge strategy (default: merge)'),
|
|
56
|
+
commitTitle: z.string().optional().describe('Custom commit title'),
|
|
57
|
+
commitMessage: z.string().optional().describe('Custom commit message'),
|
|
58
|
+
}, async (args) => {
|
|
59
|
+
try {
|
|
60
|
+
const projectId = await resolveProjectId(args.projectId);
|
|
61
|
+
const result = await api.post(`/github/projects/${projectId}/repos/${args.repoId}/pulls/${args.prNumber}/merge`, {
|
|
62
|
+
strategy: args.strategy,
|
|
63
|
+
commitTitle: args.commitTitle,
|
|
64
|
+
commitMessage: args.commitMessage,
|
|
65
|
+
});
|
|
66
|
+
return jsonResult(result);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
return errorResult(`Failed to merge PR: ${err.message}`);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
server.tool('github_pr_review', 'Submits a review on a pull request (approve, request changes, or comment).', {
|
|
73
|
+
projectId: z.string().describe('Project ID or name'),
|
|
74
|
+
repoId: z.string().describe('Repository ID'),
|
|
75
|
+
prNumber: z.number().describe('PR number'),
|
|
76
|
+
event: z.enum(['APPROVE', 'REQUEST_CHANGES', 'COMMENT']).describe('Review event type'),
|
|
77
|
+
body: z.string().optional().describe('Review body/comment'),
|
|
78
|
+
}, async (args) => {
|
|
79
|
+
try {
|
|
80
|
+
const projectId = await resolveProjectId(args.projectId);
|
|
81
|
+
const result = await api.post(`/github/projects/${projectId}/repos/${args.repoId}/pulls/${args.prNumber}/review`, {
|
|
82
|
+
event: args.event,
|
|
83
|
+
body: args.body,
|
|
84
|
+
});
|
|
85
|
+
return jsonResult(result);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
return errorResult(`Failed to submit review: ${err.message}`);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
server.tool('github_get_pr_detail', 'Gets full PR detail including files changed, reviews, checks, and linked issues.', {
|
|
92
|
+
projectId: z.string().describe('Project ID or name'),
|
|
93
|
+
repoId: z.string().describe('Repository ID'),
|
|
94
|
+
prNumber: z.number().describe('PR number'),
|
|
95
|
+
}, async (args) => {
|
|
96
|
+
try {
|
|
97
|
+
const projectId = await resolveProjectId(args.projectId);
|
|
98
|
+
const result = await api.get(`/github/projects/${projectId}/repos/${args.repoId}/pulls/${args.prNumber}/detail`);
|
|
99
|
+
return jsonResult(result);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
return errorResult(`Failed to get PR detail: ${err.message}`);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
server.tool('github_get_pr_checks', 'Gets CI/CD check status for a pull request.', {
|
|
106
|
+
projectId: z.string().describe('Project ID or name'),
|
|
107
|
+
repoId: z.string().describe('Repository ID'),
|
|
108
|
+
prNumber: z.number().describe('PR number'),
|
|
109
|
+
}, async (args) => {
|
|
110
|
+
try {
|
|
111
|
+
const projectId = await resolveProjectId(args.projectId);
|
|
112
|
+
const result = await api.get(`/github/projects/${projectId}/repos/${args.repoId}/pulls/${args.prNumber}/checks`);
|
|
113
|
+
return jsonResult(result);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
return errorResult(`Failed to get PR checks: ${err.message}`);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
server.tool('github_list_prs', 'Lists pull requests for a repository with optional filters.', {
|
|
120
|
+
projectId: z.string().describe('Project ID or name'),
|
|
121
|
+
repoId: z.string().describe('Repository ID'),
|
|
122
|
+
status: z.enum(['OPEN', 'CLOSED', 'MERGED']).optional().describe('Filter by status'),
|
|
123
|
+
author: z.string().optional().describe('Filter by author login'),
|
|
124
|
+
search: z.string().optional().describe('Search in title'),
|
|
125
|
+
limit: z.number().optional().describe('Max results (default 20)'),
|
|
126
|
+
}, async (args) => {
|
|
127
|
+
try {
|
|
128
|
+
const projectId = await resolveProjectId(args.projectId);
|
|
129
|
+
const result = await api.get(`/github/projects/${projectId}/repos/${args.repoId}/pulls`, {
|
|
130
|
+
status: args.status,
|
|
131
|
+
author: args.author,
|
|
132
|
+
search: args.search,
|
|
133
|
+
limit: args.limit,
|
|
134
|
+
});
|
|
135
|
+
return jsonResult({
|
|
136
|
+
total: result.total,
|
|
137
|
+
pullRequests: result.pullRequests?.map((pr) => ({
|
|
138
|
+
id: pr.id,
|
|
139
|
+
number: pr.githubNumber,
|
|
140
|
+
title: pr.title,
|
|
141
|
+
status: pr.status,
|
|
142
|
+
sourceBranch: pr.sourceBranch,
|
|
143
|
+
targetBranch: pr.targetBranch,
|
|
144
|
+
authorLogin: pr.authorLogin,
|
|
145
|
+
isDraft: pr.isDraft,
|
|
146
|
+
url: pr.url,
|
|
147
|
+
createdAt: pr.createdAt,
|
|
148
|
+
issueLinks: pr.issueLinks?.map((l) => ({
|
|
149
|
+
issueId: l.issue?.id,
|
|
150
|
+
sequenceNumber: l.issue?.sequenceNumber,
|
|
151
|
+
title: l.issue?.title,
|
|
152
|
+
})),
|
|
153
|
+
})),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
return errorResult(`Failed to list PRs: ${err.message}`);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=github.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/tools/github.ts"],"names":[],"mappings":"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"}
|