Skip to content

Project wikis

A project’s wiki: list its pages, read one, create, update and delete one, and upload a file attachment that a page can reference. Group wikis are actions of Groups, served from Premium.

  • “List the wiki pages of project 42”
  • “Show the Home wiki page”
  • “Create a wiki page with the release checklist”
  • Dynamic, the default surface: call gitlab_execute_action with action set to the action’s ID, such as wiki.create, and its parameters in params. gitlab_find_action finds an ID from a description of the task.
  • Meta (GITLAB_MCP_TOOL_SURFACE=meta): call gitlab_wiki with action set to the action’s name, such as create, and its parameters in params.
  • Individual (GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such as gitlab_wiki_create, with its parameters as the arguments.

Every tier serves the whole group, on self-managed instances and on GitLab.com alike.

Read-only actions: 2 of 6, the ones a deployment in read-only mode keeps. A token with read_api and not api is served 2 of the 6.

The description of each action, and of each of its parameters, is the text the server serves for it on the default surface, quoted as served. The token lines say what GitLab 19.4.1 requires of a token for the requests each action sends; on an instance with Admin Mode turned on, an action only an administrator may run also needs admin_mode. A destructive action runs only once confirmed, unless GITLAB_MCP_YOLO_MODE (or AUTOPILOT) skips that step: the dynamic surface needs confirm: true on gitlab_execute_action, and the other two take a confirm parameter or the client’s prompt (Destructive actions).

ActionIndividual
wiki.creategitlab_wiki_create
wiki.deletegitlab_wiki_delete
wiki.getgitlab_wiki_get
wiki.listgitlab_wiki_list
wiki.updategitlab_wiki_update
wiki.upload_attachmentgitlab_wiki_upload_attachment

Create a new wiki page. Returns: the created page with title, slug, format, content, and encoding. See also: wiki.get, wiki.update, wiki.list.

  • Meta-tool: gitlab_wiki, action create
  • Individual tool: gitlab_wiki_create
  • Tier: Free
  • Classic or OAuth token: api
  • Fine-grained token: Wiki: Create at project (permissions page)
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
contentstringyesContent of the wiki page (Markdown, RDoc, AsciiDoc, or Org)
project_idstring/integeryesProject ID or URL-encoded path
titlestringyesTitle of the wiki page
formatstring (markdown, rdoc, asciidoc, org)noContent format: markdown (default), rdoc, asciidoc, or org

Delete a wiki page permanently. Returns: a success confirmation for the removed page. See also: wiki.get, wiki.list.

  • Meta-tool: gitlab_wiki, action delete
  • Individual tool: gitlab_wiki_delete
  • Tier: Free
  • Classic or OAuth token: api
  • Fine-grained token: Wiki: Delete at project (permissions page)
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
slugstringyesSlug of the wiki page to delete as wiki.list returns it (e.g. ‘dir/page’)

Get a single wiki page by slug. Returns: the page title, slug, format, content, and encoding. See also: wiki.list, wiki.update, wiki.delete.

  • Meta-tool: gitlab_wiki, action get
  • Individual tool: gitlab_wiki_get
  • Tier: Free
  • Classic or OAuth token: read_api (or api)
  • Fine-grained token: Wiki: Read at project (permissions page)
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
slugstringyesSlug of the wiki page as wiki.list returns it, a subpage with its slash (e.g. ‘my-page’ or ‘dir/page’)
render_htmlbooleannoReturn HTML-rendered content instead of raw format
versionstringnoWiki page version SHA to retrieve a specific revision

List a project’s wiki pages. Returns: each page’s title, slug, and format (plus content when with_content is set), with hints to read or create pages. See also: wiki.get, wiki.create.

  • Meta-tool: gitlab_wiki, action list
  • Individual tool: gitlab_wiki_list
  • Tier: Free
  • Classic or OAuth token: read_api (or api)
  • Fine-grained token: Wiki: Read at project (permissions page)
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
with_contentbooleannoInclude page content in the response

Update an existing wiki page by slug. Returns: the updated page with title, slug, format, content, and encoding. See also: wiki.get, wiki.delete, wiki.list.

  • Meta-tool: gitlab_wiki, action update
  • Individual tool: gitlab_wiki_update
  • Tier: Free
  • Classic or OAuth token: api
  • Fine-grained token: Wiki: Update at project (permissions page)
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
slugstringyesSlug of the wiki page to update as wiki.list returns it (e.g. ‘dir/page’)
contentstringnoNew content for the wiki page
formatstring (markdown, rdoc, asciidoc, org)noContent format: markdown, rdoc, asciidoc, or org
titlestringnoNew title for the wiki page

Upload an attachment to the project wiki repository. Returns: the attachment file name, file path, branch, URL, and ready-to-paste Markdown link. See also: wiki.get, wiki.update.

  • Meta-tool: gitlab_wiki, action upload_attachment
  • Individual tool: gitlab_wiki_upload_attachment
  • Tier: Free
  • Classic or OAuth token: api
  • Fine-grained token: Wiki: Update at project (permissions page)
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
filenamestringyesName of the file to upload (e.g. diagram.png)
project_idstring/integeryesProject ID or URL-encoded path
branchstringnoBranch to upload the attachment to
content_base64stringnoBase64-encoded file content. Provide either content_base64 or file_path
file_pathstringnoAbsolute path to a local file. Provide either file_path or content_base64