@ric_/forgejo-mcp 0.1.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.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +302 -0
  3. package/dist/client.d.ts +35 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +107 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +10 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +86 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/http.d.ts +3 -0
  12. package/dist/http.d.ts.map +1 -0
  13. package/dist/http.js +108 -0
  14. package/dist/http.js.map +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +16 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/server.d.ts +4 -0
  20. package/dist/server.d.ts.map +1 -0
  21. package/dist/server.js +27 -0
  22. package/dist/server.js.map +1 -0
  23. package/dist/tools/admin.d.ts +4 -0
  24. package/dist/tools/admin.d.ts.map +1 -0
  25. package/dist/tools/admin.js +261 -0
  26. package/dist/tools/admin.js.map +1 -0
  27. package/dist/tools/helpers.d.ts +16 -0
  28. package/dist/tools/helpers.d.ts.map +1 -0
  29. package/dist/tools/helpers.js +30 -0
  30. package/dist/tools/helpers.js.map +1 -0
  31. package/dist/tools/issues.d.ts +4 -0
  32. package/dist/tools/issues.d.ts.map +1 -0
  33. package/dist/tools/issues.js +337 -0
  34. package/dist/tools/issues.js.map +1 -0
  35. package/dist/tools/organizations.d.ts +4 -0
  36. package/dist/tools/organizations.d.ts.map +1 -0
  37. package/dist/tools/organizations.js +232 -0
  38. package/dist/tools/organizations.js.map +1 -0
  39. package/dist/tools/pullrequests.d.ts +4 -0
  40. package/dist/tools/pullrequests.d.ts.map +1 -0
  41. package/dist/tools/pullrequests.js +251 -0
  42. package/dist/tools/pullrequests.js.map +1 -0
  43. package/dist/tools/repository.d.ts +4 -0
  44. package/dist/tools/repository.d.ts.map +1 -0
  45. package/dist/tools/repository.js +437 -0
  46. package/dist/tools/repository.js.map +1 -0
  47. package/dist/tools/users.d.ts +4 -0
  48. package/dist/tools/users.d.ts.map +1 -0
  49. package/dist/tools/users.js +204 -0
  50. package/dist/tools/users.js.map +1 -0
  51. package/dist/validation.d.ts +35 -0
  52. package/dist/validation.d.ts.map +1 -0
  53. package/dist/validation.js +68 -0
  54. package/dist/validation.js.map +1 -0
  55. package/package.json +49 -0
@@ -0,0 +1,337 @@
1
+ import { z } from "zod";
2
+ import { formatResponse, formatError } from "./helpers.js";
3
+ import { zOwner, zRepo, zPage, zLimit, zIndex, zId, zTitle, zBody, zState } from "../validation.js";
4
+ export function registerIssueTools(server, client) {
5
+ // 1. list_issues
6
+ server.tool("list_issues", "List issues for a repository", {
7
+ owner: zOwner,
8
+ repo: zRepo,
9
+ state: zState,
10
+ labels: z.string().optional().describe("Comma-separated list of label names"),
11
+ page: zPage,
12
+ limit: zLimit,
13
+ type: z.string().optional().describe("Filter by type: issues or pulls"),
14
+ milestones: z.string().optional().describe("Comma-separated list of milestone names"),
15
+ sort: z.string().optional().describe("Sort order"),
16
+ }, async (params) => {
17
+ try {
18
+ const { owner, repo, ...query } = params;
19
+ const result = await client.get(`/repos/${owner}/${repo}/issues`, query);
20
+ return formatResponse(result);
21
+ }
22
+ catch (error) {
23
+ return formatError(error);
24
+ }
25
+ });
26
+ // 2. get_issue
27
+ server.tool("get_issue", "Get a single issue by index", {
28
+ owner: zOwner,
29
+ repo: zRepo,
30
+ index: zIndex,
31
+ }, async (params) => {
32
+ try {
33
+ const result = await client.get(`/repos/${params.owner}/${params.repo}/issues/${params.index}`);
34
+ return formatResponse(result);
35
+ }
36
+ catch (error) {
37
+ return formatError(error);
38
+ }
39
+ });
40
+ // 3. create_issue
41
+ server.tool("create_issue", "Create a new issue in a repository", {
42
+ owner: zOwner,
43
+ repo: zRepo,
44
+ title: zTitle.describe("Issue title"),
45
+ body: zBody.optional().describe("Issue body"),
46
+ labels: z.array(z.number()).optional().describe("Array of label IDs"),
47
+ milestone: z.number().optional().describe("Milestone ID"),
48
+ assignees: z.array(z.string()).optional().describe("Array of assignee usernames"),
49
+ }, async (params) => {
50
+ try {
51
+ const { owner, repo, ...body } = params;
52
+ const result = await client.post(`/repos/${owner}/${repo}/issues`, body);
53
+ return formatResponse(result);
54
+ }
55
+ catch (error) {
56
+ return formatError(error);
57
+ }
58
+ });
59
+ // 4. edit_issue
60
+ server.tool("edit_issue", "Edit an existing issue", {
61
+ owner: zOwner,
62
+ repo: zRepo,
63
+ index: zIndex,
64
+ title: zTitle.optional().describe("New title"),
65
+ body: zBody.optional().describe("New body"),
66
+ state: zState,
67
+ labels: z.array(z.number()).optional().describe("Array of label IDs"),
68
+ milestone: z.number().optional().describe("Milestone ID"),
69
+ assignees: z.array(z.string()).optional().describe("Array of assignee usernames"),
70
+ }, async (params) => {
71
+ try {
72
+ const { owner, repo, index, ...body } = params;
73
+ const result = await client.patch(`/repos/${owner}/${repo}/issues/${index}`, body);
74
+ return formatResponse(result);
75
+ }
76
+ catch (error) {
77
+ return formatError(error);
78
+ }
79
+ });
80
+ // 5. list_issue_comments
81
+ server.tool("list_issue_comments", "List comments on an issue", {
82
+ owner: zOwner,
83
+ repo: zRepo,
84
+ index: zIndex,
85
+ page: zPage,
86
+ limit: zLimit,
87
+ }, async (params) => {
88
+ try {
89
+ const { owner, repo, index, ...query } = params;
90
+ const result = await client.get(`/repos/${owner}/${repo}/issues/${index}/comments`, query);
91
+ return formatResponse(result);
92
+ }
93
+ catch (error) {
94
+ return formatError(error);
95
+ }
96
+ });
97
+ // 6. create_issue_comment
98
+ server.tool("create_issue_comment", "Add a comment to an issue", {
99
+ owner: zOwner,
100
+ repo: zRepo,
101
+ index: zIndex,
102
+ body: zBody.describe("Comment body"),
103
+ }, async (params) => {
104
+ try {
105
+ const { owner, repo, index, body } = params;
106
+ const result = await client.post(`/repos/${owner}/${repo}/issues/${index}/comments`, { body });
107
+ return formatResponse(result);
108
+ }
109
+ catch (error) {
110
+ return formatError(error);
111
+ }
112
+ });
113
+ // 7. edit_issue_comment
114
+ server.tool("edit_issue_comment", "Edit a comment on an issue", {
115
+ owner: zOwner,
116
+ repo: zRepo,
117
+ id: zId,
118
+ body: zBody.describe("New comment body"),
119
+ }, async (params) => {
120
+ try {
121
+ const { owner, repo, id, body } = params;
122
+ const result = await client.patch(`/repos/${owner}/${repo}/issues/comments/${id}`, { body });
123
+ return formatResponse(result);
124
+ }
125
+ catch (error) {
126
+ return formatError(error);
127
+ }
128
+ });
129
+ // 8. delete_issue_comment
130
+ server.tool("delete_issue_comment", "Delete a comment on an issue", {
131
+ owner: zOwner,
132
+ repo: zRepo,
133
+ id: zId,
134
+ }, async (params) => {
135
+ try {
136
+ const { owner, repo, id } = params;
137
+ await client.delete(`/repos/${owner}/${repo}/issues/comments/${id}`);
138
+ return formatResponse({ message: "Comment deleted successfully" });
139
+ }
140
+ catch (error) {
141
+ return formatError(error);
142
+ }
143
+ });
144
+ // 9. list_labels
145
+ server.tool("list_labels", "List labels for a repository", {
146
+ owner: zOwner,
147
+ repo: zRepo,
148
+ page: zPage,
149
+ limit: zLimit,
150
+ }, async (params) => {
151
+ try {
152
+ const { owner, repo, ...query } = params;
153
+ const result = await client.get(`/repos/${owner}/${repo}/labels`, query);
154
+ return formatResponse(result);
155
+ }
156
+ catch (error) {
157
+ return formatError(error);
158
+ }
159
+ });
160
+ // 10. get_label
161
+ server.tool("get_label", "Get a single label by ID", {
162
+ owner: zOwner,
163
+ repo: zRepo,
164
+ id: zId,
165
+ }, async (params) => {
166
+ try {
167
+ const result = await client.get(`/repos/${params.owner}/${params.repo}/labels/${params.id}`);
168
+ return formatResponse(result);
169
+ }
170
+ catch (error) {
171
+ return formatError(error);
172
+ }
173
+ });
174
+ // 11. create_label
175
+ server.tool("create_label", "Create a label in a repository", {
176
+ owner: zOwner,
177
+ repo: zRepo,
178
+ name: zTitle.describe("Label name"),
179
+ color: z.string().regex(/^[0-9a-fA-F]{6}$/, "Must be a 6-char hex color").describe("Label color as hex string without #"),
180
+ description: zBody.optional().describe("Label description"),
181
+ }, async (params) => {
182
+ try {
183
+ const { owner, repo, ...body } = params;
184
+ const result = await client.post(`/repos/${owner}/${repo}/labels`, body);
185
+ return formatResponse(result);
186
+ }
187
+ catch (error) {
188
+ return formatError(error);
189
+ }
190
+ });
191
+ // 12. edit_label
192
+ server.tool("edit_label", "Edit an existing label", {
193
+ owner: zOwner,
194
+ repo: zRepo,
195
+ id: zId,
196
+ name: zTitle.optional().describe("New label name"),
197
+ color: z.string().regex(/^[0-9a-fA-F]{6}$/, "Must be a 6-char hex color").optional().describe("New label color as hex string without #"),
198
+ description: zBody.optional().describe("New label description"),
199
+ }, async (params) => {
200
+ try {
201
+ const { owner, repo, id, ...body } = params;
202
+ const result = await client.patch(`/repos/${owner}/${repo}/labels/${id}`, body);
203
+ return formatResponse(result);
204
+ }
205
+ catch (error) {
206
+ return formatError(error);
207
+ }
208
+ });
209
+ // 13. delete_label
210
+ server.tool("delete_label", "Delete a label from a repository", {
211
+ owner: zOwner,
212
+ repo: zRepo,
213
+ id: zId,
214
+ }, async (params) => {
215
+ try {
216
+ await client.delete(`/repos/${params.owner}/${params.repo}/labels/${params.id}`);
217
+ return formatResponse({ message: "Label deleted successfully" });
218
+ }
219
+ catch (error) {
220
+ return formatError(error);
221
+ }
222
+ });
223
+ // 14. add_issue_labels
224
+ server.tool("add_issue_labels", "Add labels to an issue", {
225
+ owner: zOwner,
226
+ repo: zRepo,
227
+ index: zIndex,
228
+ labels: z.array(z.number()).describe("Array of label IDs to add"),
229
+ }, async (params) => {
230
+ try {
231
+ const { owner, repo, index, labels } = params;
232
+ const result = await client.post(`/repos/${owner}/${repo}/issues/${index}/labels`, { labels });
233
+ return formatResponse(result);
234
+ }
235
+ catch (error) {
236
+ return formatError(error);
237
+ }
238
+ });
239
+ // 15. remove_issue_label
240
+ server.tool("remove_issue_label", "Remove a label from an issue", {
241
+ owner: zOwner,
242
+ repo: zRepo,
243
+ index: zIndex,
244
+ id: zId,
245
+ }, async (params) => {
246
+ try {
247
+ await client.delete(`/repos/${params.owner}/${params.repo}/issues/${params.index}/labels/${params.id}`);
248
+ return formatResponse({ message: "Label removed from issue successfully" });
249
+ }
250
+ catch (error) {
251
+ return formatError(error);
252
+ }
253
+ });
254
+ // 16. list_milestones
255
+ server.tool("list_milestones", "List milestones for a repository", {
256
+ owner: zOwner,
257
+ repo: zRepo,
258
+ state: zState,
259
+ page: zPage,
260
+ limit: zLimit,
261
+ }, async (params) => {
262
+ try {
263
+ const { owner, repo, ...query } = params;
264
+ const result = await client.get(`/repos/${owner}/${repo}/milestones`, query);
265
+ return formatResponse(result);
266
+ }
267
+ catch (error) {
268
+ return formatError(error);
269
+ }
270
+ });
271
+ // 17. get_milestone
272
+ server.tool("get_milestone", "Get a single milestone by ID", {
273
+ owner: zOwner,
274
+ repo: zRepo,
275
+ id: zId,
276
+ }, async (params) => {
277
+ try {
278
+ const result = await client.get(`/repos/${params.owner}/${params.repo}/milestones/${params.id}`);
279
+ return formatResponse(result);
280
+ }
281
+ catch (error) {
282
+ return formatError(error);
283
+ }
284
+ });
285
+ // 18. create_milestone
286
+ server.tool("create_milestone", "Create a milestone in a repository", {
287
+ owner: zOwner,
288
+ repo: zRepo,
289
+ title: zTitle.describe("Milestone title"),
290
+ description: zBody.optional().describe("Milestone description"),
291
+ due_on: z.string().optional().describe("Due date in ISO 8601 format"),
292
+ state: zState,
293
+ }, async (params) => {
294
+ try {
295
+ const { owner, repo, ...body } = params;
296
+ const result = await client.post(`/repos/${owner}/${repo}/milestones`, body);
297
+ return formatResponse(result);
298
+ }
299
+ catch (error) {
300
+ return formatError(error);
301
+ }
302
+ });
303
+ // 19. edit_milestone
304
+ server.tool("edit_milestone", "Edit an existing milestone", {
305
+ owner: zOwner,
306
+ repo: zRepo,
307
+ id: zId,
308
+ title: zTitle.optional().describe("New title"),
309
+ description: zBody.optional().describe("New description"),
310
+ due_on: z.string().optional().describe("New due date in ISO 8601 format"),
311
+ state: zState,
312
+ }, async (params) => {
313
+ try {
314
+ const { owner, repo, id, ...body } = params;
315
+ const result = await client.patch(`/repos/${owner}/${repo}/milestones/${id}`, body);
316
+ return formatResponse(result);
317
+ }
318
+ catch (error) {
319
+ return formatError(error);
320
+ }
321
+ });
322
+ // 20. delete_milestone
323
+ server.tool("delete_milestone", "Delete a milestone from a repository", {
324
+ owner: zOwner,
325
+ repo: zRepo,
326
+ id: zId,
327
+ }, async (params) => {
328
+ try {
329
+ await client.delete(`/repos/${params.owner}/${params.repo}/milestones/${params.id}`);
330
+ return formatResponse({ message: "Milestone deleted successfully" });
331
+ }
332
+ catch (error) {
333
+ return formatError(error);
334
+ }
335
+ });
336
+ }
337
+ //# sourceMappingURL=issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ForgejoClient } from "../client.js";
3
+ export declare function registerOrganizationTools(server: McpServer, client: ForgejoClient): void;
4
+ //# sourceMappingURL=organizations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAwSxF"}
@@ -0,0 +1,232 @@
1
+ import { z } from "zod";
2
+ import { formatResponse, formatError } from "./helpers.js";
3
+ import { zOwner, zPage, zLimit, zId, zTitle, zBody, zVisibility, zPermission } from "../validation.js";
4
+ export function registerOrganizationTools(server, client) {
5
+ // 1. list_orgs
6
+ server.tool("list_orgs", "List all organizations on the Forgejo instance", {
7
+ page: zPage,
8
+ limit: zLimit,
9
+ }, async (params) => {
10
+ try {
11
+ const data = await client.get("/orgs", {
12
+ page: params.page,
13
+ limit: params.limit,
14
+ });
15
+ return formatResponse(data);
16
+ }
17
+ catch (err) {
18
+ return formatError(err);
19
+ }
20
+ });
21
+ // 2. get_org
22
+ server.tool("get_org", "Get details of an organization", {
23
+ org: zOwner.describe("Name of the organization"),
24
+ }, async (params) => {
25
+ try {
26
+ const data = await client.get(`/orgs/${params.org}`);
27
+ return formatResponse(data);
28
+ }
29
+ catch (err) {
30
+ return formatError(err);
31
+ }
32
+ });
33
+ // 3. create_org
34
+ server.tool("create_org", "Create a new organization", {
35
+ username: zOwner.describe("Username for the organization"),
36
+ full_name: zTitle.optional().describe("Full display name of the organization"),
37
+ description: zBody.optional().describe("Description of the organization"),
38
+ visibility: zVisibility.describe("Visibility of the organization: public, limited, or private"),
39
+ }, async (params) => {
40
+ try {
41
+ const data = await client.post("/orgs", {
42
+ username: params.username,
43
+ full_name: params.full_name,
44
+ description: params.description,
45
+ visibility: params.visibility,
46
+ });
47
+ return formatResponse(data);
48
+ }
49
+ catch (err) {
50
+ return formatError(err);
51
+ }
52
+ });
53
+ // 4. edit_org
54
+ server.tool("edit_org", "Edit an organization's properties", {
55
+ org: zOwner.describe("Name of the organization to edit"),
56
+ full_name: zTitle.optional().describe("Full display name of the organization"),
57
+ description: zBody.optional().describe("Description of the organization"),
58
+ visibility: zVisibility.describe("Visibility of the organization: public, limited, or private"),
59
+ }, async (params) => {
60
+ try {
61
+ const data = await client.patch(`/orgs/${params.org}`, {
62
+ full_name: params.full_name,
63
+ description: params.description,
64
+ visibility: params.visibility,
65
+ });
66
+ return formatResponse(data);
67
+ }
68
+ catch (err) {
69
+ return formatError(err);
70
+ }
71
+ });
72
+ // 5. delete_org
73
+ server.tool("delete_org", "Delete an organization", {
74
+ org: zOwner.describe("Name of the organization to delete"),
75
+ }, async (params) => {
76
+ try {
77
+ const data = await client.delete(`/orgs/${params.org}`);
78
+ return formatResponse(data);
79
+ }
80
+ catch (err) {
81
+ return formatError(err);
82
+ }
83
+ });
84
+ // 6. list_org_repos
85
+ server.tool("list_org_repos", "List repositories belonging to an organization", {
86
+ org: zOwner.describe("Name of the organization"),
87
+ page: zPage,
88
+ limit: zLimit,
89
+ }, async (params) => {
90
+ try {
91
+ const data = await client.get(`/orgs/${params.org}/repos`, {
92
+ page: params.page,
93
+ limit: params.limit,
94
+ });
95
+ return formatResponse(data);
96
+ }
97
+ catch (err) {
98
+ return formatError(err);
99
+ }
100
+ });
101
+ // 7. list_org_members
102
+ server.tool("list_org_members", "List members of an organization", {
103
+ org: zOwner.describe("Name of the organization"),
104
+ page: zPage,
105
+ limit: zLimit,
106
+ }, async (params) => {
107
+ try {
108
+ const data = await client.get(`/orgs/${params.org}/members`, {
109
+ page: params.page,
110
+ limit: params.limit,
111
+ });
112
+ return formatResponse(data);
113
+ }
114
+ catch (err) {
115
+ return formatError(err);
116
+ }
117
+ });
118
+ // 8. list_org_teams
119
+ server.tool("list_org_teams", "List teams in an organization", {
120
+ org: zOwner.describe("Name of the organization"),
121
+ page: zPage,
122
+ limit: zLimit,
123
+ }, async (params) => {
124
+ try {
125
+ const data = await client.get(`/orgs/${params.org}/teams`, {
126
+ page: params.page,
127
+ limit: params.limit,
128
+ });
129
+ return formatResponse(data);
130
+ }
131
+ catch (err) {
132
+ return formatError(err);
133
+ }
134
+ });
135
+ // 9. get_team
136
+ server.tool("get_team", "Get a team by its ID", {
137
+ id: zId.describe("ID of the team"),
138
+ }, async (params) => {
139
+ try {
140
+ const data = await client.get(`/teams/${params.id}`);
141
+ return formatResponse(data);
142
+ }
143
+ catch (err) {
144
+ return formatError(err);
145
+ }
146
+ });
147
+ // 10. create_team
148
+ server.tool("create_team", "Create a new team in an organization", {
149
+ org: zOwner.describe("Name of the organization"),
150
+ name: zTitle.describe("Name of the team"),
151
+ description: zBody.optional().describe("Description of the team"),
152
+ permission: zPermission.describe("Permission level for the team: read, write, or admin"),
153
+ units: z
154
+ .array(z.string())
155
+ .optional()
156
+ .describe("List of unit types the team has access to (e.g. repo.code, repo.issues)"),
157
+ }, async (params) => {
158
+ try {
159
+ const data = await client.post(`/orgs/${params.org}/teams`, {
160
+ name: params.name,
161
+ description: params.description,
162
+ permission: params.permission,
163
+ units: params.units,
164
+ });
165
+ return formatResponse(data);
166
+ }
167
+ catch (err) {
168
+ return formatError(err);
169
+ }
170
+ });
171
+ // 11. add_team_member
172
+ server.tool("add_team_member", "Add a member to a team", {
173
+ id: zId.describe("ID of the team"),
174
+ username: zOwner.describe("Username of the user to add"),
175
+ }, async (params) => {
176
+ try {
177
+ const data = await client.put(`/teams/${params.id}/members/${params.username}`);
178
+ return formatResponse(data);
179
+ }
180
+ catch (err) {
181
+ return formatError(err);
182
+ }
183
+ });
184
+ // 12. remove_team_member
185
+ server.tool("remove_team_member", "Remove a member from a team", {
186
+ id: zId.describe("ID of the team"),
187
+ username: zOwner.describe("Username of the user to remove"),
188
+ }, async (params) => {
189
+ try {
190
+ const data = await client.delete(`/teams/${params.id}/members/${params.username}`);
191
+ return formatResponse(data);
192
+ }
193
+ catch (err) {
194
+ return formatError(err);
195
+ }
196
+ });
197
+ // 13. list_org_labels
198
+ server.tool("list_org_labels", "List labels for an organization", {
199
+ org: zOwner.describe("Name of the organization"),
200
+ page: zPage,
201
+ limit: zLimit,
202
+ }, async (params) => {
203
+ try {
204
+ const data = await client.get(`/orgs/${params.org}/labels`, {
205
+ page: params.page,
206
+ limit: params.limit,
207
+ });
208
+ return formatResponse(data);
209
+ }
210
+ catch (err) {
211
+ return formatError(err);
212
+ }
213
+ });
214
+ // 14. list_org_hooks
215
+ server.tool("list_org_hooks", "List webhooks for an organization", {
216
+ org: zOwner.describe("Name of the organization"),
217
+ page: zPage,
218
+ limit: zLimit,
219
+ }, async (params) => {
220
+ try {
221
+ const data = await client.get(`/orgs/${params.org}/hooks`, {
222
+ page: params.page,
223
+ limit: params.limit,
224
+ });
225
+ return formatResponse(data);
226
+ }
227
+ catch (err) {
228
+ return formatError(err);
229
+ }
230
+ });
231
+ }
232
+ //# sourceMappingURL=organizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ForgejoClient } from "../client.js";
3
+ export declare function registerPullRequestTools(server: McpServer, client: ForgejoClient): void;
4
+ //# sourceMappingURL=pullrequests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pullrequests.d.ts","sourceRoot":"","sources":["../../src/tools/pullrequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAkVvF"}