From 5e254836e8d1aee3df24ba6214b214faef0b9918 Mon Sep 17 00:00:00 2001 From: Vince <46563912+VinceCYLiao@users.noreply.github.com> Date: Tue, 3 Jun 2025 18:33:36 +0800 Subject: [PATCH] Add support for retrieving wiki page content in list_wiki_pages (#82) Co-authored-by: Vince Liao --- index.ts | 11 ++++++++--- schemas.ts | 4 +++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/index.ts b/index.ts index da09ff5..bdbe5f1 100644 --- a/index.ts +++ b/index.ts @@ -171,6 +171,7 @@ import { GitLabCompareResult, GitLabCompareResultSchema, GetBranchDiffsSchema, + ListWikiPagesOptions, } from "./schemas.js"; /** @@ -2376,12 +2377,14 @@ async function listGroupProjects( */ async function listWikiPages( projectId: string, - options: Omit, "project_id"> = {} + options: Omit = {} ): Promise { projectId = decodeURIComponent(projectId); // Decode project ID const url = new URL(`${GITLAB_API_URL}/projects/${encodeURIComponent(projectId)}/wikis`); if (options.page) url.searchParams.append("page", options.page.toString()); if (options.per_page) url.searchParams.append("per_page", options.per_page.toString()); + if (options.with_content) + url.searchParams.append("with_content", options.with_content.toString()); const response = await fetch(url.toString(), { ...DEFAULT_FETCH_CONFIG, }); @@ -3597,8 +3600,10 @@ server.setRequestHandler(CallToolRequestSchema, async request => { } case "list_wiki_pages": { - const { project_id, page, per_page } = ListWikiPagesSchema.parse(request.params.arguments); - const wikiPages = await listWikiPages(project_id, { page, per_page }); + const { project_id, page, per_page, with_content } = ListWikiPagesSchema.parse( + request.params.arguments + ); + const wikiPages = await listWikiPages(project_id, { page, per_page, with_content }); return { content: [{ type: "text", text: JSON.stringify(wikiPages, null, 2) }], }; diff --git a/schemas.ts b/schemas.ts index f669f1d..d435ca8 100644 --- a/schemas.ts +++ b/schemas.ts @@ -1197,7 +1197,9 @@ export const ListGroupProjectsSchema = z.object({ // Add wiki operation schemas export const ListWikiPagesSchema = z.object({ project_id: z.string().describe("Project ID or URL-encoded path"), + with_content: z.boolean().optional().describe("Include content of the wiki pages"), }).merge(PaginationOptionsSchema); + export const GetWikiPageSchema = z.object({ project_id: z.string().describe("Project ID or URL-encoded path"), slug: z.string().describe("URL-encoded slug of the wiki page"), @@ -1226,7 +1228,7 @@ export const GitLabWikiPageSchema = z.object({ title: z.string(), slug: z.string(), format: z.string(), - content: z.string(), + content: z.string().optional(), created_at: z.string().optional(), updated_at: z.string().optional(), });