@@ -58,6 +58,7 @@ import {
58
58
GetBranchDiffsSchema ,
59
59
GetCommitDiffSchema ,
60
60
GetCommitSchema ,
61
+ GetDraftNoteSchema ,
61
62
GetFileContentsSchema ,
62
63
GetIssueLinkSchema ,
63
64
GetIssueSchema ,
@@ -497,6 +498,11 @@ const allTools = [
497
498
description : "Add a new note to an existing merge request thread" ,
498
499
inputSchema : zodToJsonSchema ( CreateMergeRequestNoteSchema ) ,
499
500
} ,
501
+ {
502
+ name : "get_draft_note" ,
503
+ description : "Get a single draft note from a merge request" ,
504
+ inputSchema : zodToJsonSchema ( GetDraftNoteSchema ) ,
505
+ } ,
500
506
{
501
507
name : "list_draft_notes" ,
502
508
description : "List draft notes for a merge request" ,
@@ -2347,6 +2353,24 @@ async function createNote(
2347
2353
* @param {number|string } mergeRequestIid - The internal ID of the merge request
2348
2354
* @returns {Promise<GitLabDraftNote[]> } Array of draft notes
2349
2355
*/
2356
+ async function getDraftNote (
2357
+ project_id : string ,
2358
+ merge_request_iid : string ,
2359
+ draft_note_id : string
2360
+ ) : Promise < GitLabDraftNote > {
2361
+ const response = await fetch (
2362
+ `/projects/${ encodeURIComponent ( project_id ) } /merge_requests/${ merge_request_iid } /draft_notes/${ draft_note_id } `
2363
+ ) ;
2364
+
2365
+ if ( ! response . ok ) {
2366
+ const errorText = await response . text ( ) ;
2367
+ throw new Error ( `GitLab API error: ${ response . status } ${ response . statusText } \n${ errorText } ` ) ;
2368
+ }
2369
+
2370
+ const data = await response . json ( ) ;
2371
+ return GitLabDraftNoteSchema . parse ( data ) ;
2372
+ }
2373
+
2350
2374
async function listDraftNotes (
2351
2375
projectId : string ,
2352
2376
mergeRequestIid : number | string
@@ -4631,6 +4655,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
4631
4655
} ;
4632
4656
}
4633
4657
4658
+ case "get_draft_note" : {
4659
+ const args = GetDraftNoteSchema . parse ( request . params . arguments ) ;
4660
+ const { project_id, merge_request_iid, draft_note_id } = args ;
4661
+
4662
+ const draftNote = await getDraftNote ( project_id , merge_request_iid , draft_note_id ) ;
4663
+ return {
4664
+ content : [ { type : "text" , text : JSON . stringify ( draftNote , null , 2 ) } ] ,
4665
+ } ;
4666
+ }
4667
+
4634
4668
case "list_draft_notes" : {
4635
4669
const args = ListDraftNotesSchema . parse ( request . params . arguments ) ;
4636
4670
const { project_id, merge_request_iid } = args ;
0 commit comments