efficient-gitlab-mcp-server 2.5.0 → 2.6.1

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 (2) hide show
  1. package/dist/index.js +58 -4
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -53878,7 +53878,9 @@ var ListIssueDiscussionsSchema = exports_external.object({
53878
53878
  var CreateIssueNoteSchema = exports_external.object({
53879
53879
  project_id: exports_external.string().describe("Project ID or URL-encoded path"),
53880
53880
  issue_iid: exports_external.number().describe("Issue IID"),
53881
- body: exports_external.string().describe("Note body")
53881
+ body: exports_external.string().describe("Note body"),
53882
+ discussion_id: exports_external.string().optional().describe("Discussion thread ID to reply to instead of creating a top-level note"),
53883
+ created_at: exports_external.string().optional().describe("ISO 8601 creation date (admin/project owner only)")
53882
53884
  });
53883
53885
  var UpdateIssueNoteSchema = exports_external.object({
53884
53886
  project_id: exports_external.string().describe("Project ID or URL-encoded path"),
@@ -53886,6 +53888,17 @@ var UpdateIssueNoteSchema = exports_external.object({
53886
53888
  note_id: exports_external.number().describe("Note ID"),
53887
53889
  body: exports_external.string().describe("New note body")
53888
53890
  });
53891
+ var GetIssueLinkSchema = exports_external.object({
53892
+ project_id: exports_external.string().describe("Project ID or URL-encoded path"),
53893
+ issue_iid: exports_external.number().describe("Issue IID"),
53894
+ issue_link_id: exports_external.number().describe("ID of the issue relationship")
53895
+ });
53896
+ var CreateNoteSchema = exports_external.object({
53897
+ project_id: exports_external.string().describe("Project ID or URL-encoded path"),
53898
+ notable_type: exports_external.enum(["issue", "merge_request"]).describe("Type of notable (issue or merge_request)"),
53899
+ notable_iid: exports_external.string().describe("IID of the issue or merge request"),
53900
+ body: exports_external.string().describe("Note content")
53901
+ });
53889
53902
  function registerIssueTools(server, logger2) {
53890
53903
  logger2.debug("Registering issue tools");
53891
53904
  const tools = new Map;
@@ -54086,17 +54099,23 @@ function registerIssueTools(server, logger2) {
54086
54099
  tools.set("list_issue_discussions", toolRef10);
54087
54100
  const toolRef11 = server.registerTool("create_issue_note", {
54088
54101
  title: "Create Issue Note",
54089
- description: "Add a new note to an existing issue",
54102
+ description: "Add a note to an issue, or reply to a discussion thread",
54090
54103
  inputSchema: {
54091
54104
  project_id: exports_external.string().describe("Project ID or URL-encoded path"),
54092
54105
  issue_iid: exports_external.number().describe("Issue IID"),
54093
- body: exports_external.string().describe("Note body")
54106
+ body: exports_external.string().describe("Note body"),
54107
+ discussion_id: exports_external.string().optional().describe("Discussion thread ID to reply to instead of creating a top-level note"),
54108
+ created_at: exports_external.string().optional().describe("ISO 8601 creation date (admin/project owner only)")
54094
54109
  },
54095
54110
  annotations: { destructiveHint: false }
54096
54111
  }, async (params) => {
54097
54112
  const args = CreateIssueNoteSchema.parse(params);
54098
54113
  const projectId = encodeProjectId(args.project_id);
54099
- const note = await defaultClient.post(`/projects/${projectId}/issues/${args.issue_iid}/notes`, { body: args.body });
54114
+ const endpoint = args.discussion_id ? `/projects/${projectId}/issues/${args.issue_iid}/discussions/${args.discussion_id}/notes` : `/projects/${projectId}/issues/${args.issue_iid}/notes`;
54115
+ const note = await defaultClient.post(endpoint, {
54116
+ body: args.body,
54117
+ ...args.created_at && { created_at: args.created_at }
54118
+ });
54100
54119
  return { content: [{ type: "text", text: JSON.stringify(note, null, 2) }] };
54101
54120
  });
54102
54121
  toolRef11.disable();
@@ -54119,6 +54138,41 @@ function registerIssueTools(server, logger2) {
54119
54138
  });
54120
54139
  toolRef12.disable();
54121
54140
  tools.set("update_issue_note", toolRef12);
54141
+ const toolRef13 = server.registerTool("get_issue_link", {
54142
+ title: "Get Issue Link",
54143
+ description: "Get a single issue link/relationship by ID",
54144
+ inputSchema: {
54145
+ project_id: exports_external.string().describe("Project ID or URL-encoded path"),
54146
+ issue_iid: exports_external.number().describe("Issue IID"),
54147
+ issue_link_id: exports_external.number().describe("ID of the issue relationship")
54148
+ },
54149
+ annotations: { readOnlyHint: true }
54150
+ }, async (params) => {
54151
+ const args = GetIssueLinkSchema.parse(params);
54152
+ const projectId = encodeProjectId(args.project_id);
54153
+ const link = await defaultClient.get(`/projects/${projectId}/issues/${args.issue_iid}/links/${args.issue_link_id}`);
54154
+ return { content: [{ type: "text", text: JSON.stringify(link, null, 2) }] };
54155
+ });
54156
+ toolRef13.disable();
54157
+ tools.set("get_issue_link", toolRef13);
54158
+ const toolRef14 = server.registerTool("create_note", {
54159
+ title: "Create Note",
54160
+ description: "Create a note/comment on an issue or merge request. Use notable_type to specify which.",
54161
+ inputSchema: {
54162
+ project_id: exports_external.string().describe("Project ID or URL-encoded path"),
54163
+ notable_type: exports_external.enum(["issue", "merge_request"]).describe("Type of notable (issue or merge_request)"),
54164
+ notable_iid: exports_external.string().describe("IID of the issue or merge request"),
54165
+ body: exports_external.string().describe("Note content")
54166
+ }
54167
+ }, async (params) => {
54168
+ const args = CreateNoteSchema.parse(params);
54169
+ const projectId = encodeProjectId(args.project_id);
54170
+ const notablePlural = args.notable_type === "issue" ? "issues" : "merge_requests";
54171
+ const note = await defaultClient.post(`/projects/${projectId}/${notablePlural}/${args.notable_iid}/notes`, { body: args.body });
54172
+ return { content: [{ type: "text", text: JSON.stringify(note, null, 2) }] };
54173
+ });
54174
+ toolRef14.disable();
54175
+ tools.set("create_note", toolRef14);
54122
54176
  logger2.debug("Issue tools registered", { count: tools.size });
54123
54177
  return tools;
54124
54178
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efficient-gitlab-mcp-server",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "mcpName": "io.github.detailobsessed/efficient-gitlab",
5
5
  "description": "Production-ready GitLab MCP Server with progressive disclosure pattern",
6
6
  "license": "MIT",