[{"data":1,"prerenderedAt":1890},["ShallowReactive",2],{"/blog/extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp":3,"navigation-en-us":1105,"banner-en-us":1533,"footer-en-us":1543,"blog-post-authors-en-us-Albert Rabassa":1788,"blog-related-posts-en-us-extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp":1803,"blog-promotions-en-us":1828,"next-steps-en-us":1880},{"id":4,"title":5,"authors":6,"body":8,"category":1085,"date":1086,"description":1087,"extension":1088,"externalUrl":1089,"faq":1089,"featured":1090,"heroImage":1091,"meta":1092,"navigation":1093,"path":1094,"seo":1095,"slug":1097,"stem":1098,"tags":1099,"template":1103,"updatedDate":1089,"__hash__":1104},"blogPosts/en-us/blog/extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp.md","Extend GitLab Duo Agent Platform: Connect any tool with MCP",[7],"Albert Rabassa",{"type":9,"value":10,"toc":1057},"minimark",[11,15,25,30,33,56,60,63,123,127,134,138,141,146,149,285,289,292,303,307,310,314,321,492,502,506,523,527,530,538,541,547,550,556,563,569,575,581,587,593,599,603,610,625,652,658,664,670,676,682,688,692,701,705,709,712,716,722,725,736,741,744,750,756,760,764,767,771,776,779,793,796,802,808,812,816,818,822,827,830,847,850,856,862,868,872,876,878,882,885,941,952,956,959,979,983,986,1012,1015,1019,1053],[12,13,14],"p",{},"Managing software development often means juggling multiple tools: tracking issues in Jira, writing code in your IDE, and collaborating through GitLab. Context switching between these platforms disrupts focus and slows down delivery.",[12,16,17,18,24],{},"With GitLab Duo Agent Platform's ",[19,20,23],"a",{"href":21,"rel":22},"https://about.gitlab.com/topics/ai/model-context-protocol/",[],"MCP"," support, you can now connect Jira or any tool that supports MCP directly to your AI-powered development environment. Query issues, update tickets, and sync your workflow — all through natural language, without ever leaving your IDE.",[26,27,29],"h2",{"id":28},"what-youll-learn","What you'll learn",[12,31,32],{},"In this tutorial, we'll walk you through:",[34,35,36,44,50],"ul",{},[37,38,39,43],"li",{},[40,41,42],"strong",{},"Setting up the Jira/Atlassian OAuth application"," for secure authentication",[37,45,46,49],{},[40,47,48],{},"Configuring GitLab Duo Agent Platform"," as an MCP client",[37,51,52,55],{},[40,53,54],{},"Three practical use cases"," demonstrating real-world workflows",[26,57,59],{"id":58},"prerequisites","Prerequisites",[12,61,62],{},"Before getting started, ensure you have the following:",[64,65,66,79],"table",{},[67,68,69],"thead",{},[70,71,72,76],"tr",{},[73,74,75],"th",{},"Requirement",[73,77,78],{},"Details",[80,81,82,93,103,113],"tbody",{},[70,83,84,90],{},[85,86,87],"td",{},[40,88,89],{},"GitLab instance",[85,91,92],{},"GitLab 18.8+ with Duo Agent Platform enabled",[70,94,95,100],{},[85,96,97],{},[40,98,99],{},"Jira account",[85,101,102],{},"Jira Cloud instance with admin access to create OAuth applications",[70,104,105,110],{},[85,106,107],{},[40,108,109],{},"IDE",[85,111,112],{},"Visual Studio Code with GitLab Workflow extension installed",[70,114,115,120],{},[85,116,117],{},[40,118,119],{},"MCP support",[85,121,122],{},"MCP support enabled in GitLab",[26,124,126],{"id":125},"understanding-the-architecture","Understanding the architecture",[12,128,129,130,133],{},"GitLab Duo Agent Platform acts as an ",[40,131,132],{},"MCP client",", connecting to the Atlassian MCP server to access your Jira project management data. Atlassian  MCP server handles authentication, translates natural language requests into API calls, and returns structured data back to GitLab Duo Agent Platform — all while maintaining security and audit controls.",[26,135,137],{"id":136},"part-1-configure-jira-oauth-application","Part 1: Configure Jira OAuth application",[12,139,140],{},"To securely connect GitLab Duo Agent Platform to your Jira instance, you'll need to create an OAuth 2.0 application in the Atlassian Developer Console. This grants to GitLab the MCP server authorized access to your Jira data.",[142,143,145],"h3",{"id":144},"setup-steps","Setup steps",[12,147,148],{},"If you prefer to configure manually, follow these steps:",[150,151,152,170,195,237,260],"ol",{},[37,153,154,157],{},[40,155,156],{},"Navigate to the Atlassian Developer Console",[34,158,159,167],{},[37,160,161,162],{},"Go to ",[19,163,166],{"href":164,"rel":165},"https://developer.atlassian.com/console/myapps",[],"developer.atlassian.com/console/myapps",[37,168,169],{},"Sign in with your Atlassian account",[37,171,172,175],{},[40,173,174],{},"Create a new OAuth 2.0 app",[34,176,177,187,190],{},[37,178,179,180,183,184],{},"Click ",[40,181,182],{},"Create"," → ",[40,185,186],{},"OAuth 2.0 integration",[37,188,189],{},"Enter a name (e.g., \"gitlab-dap-mcp\")",[37,191,192,193],{},"Accept the terms and click ",[40,194,182],{},[37,196,197,200],{},[40,198,199],{},"Configure permissions",[34,201,202,209],{},[37,203,204,205,208],{},"Navigate to ",[40,206,207],{},"Permissions"," in the left sidebar.",[37,210,211,212,215,216],{},"Add ",[40,213,214],{},"Jira API"," and configure the following scopes:",[34,217,218,225,231],{},[37,219,220,224],{},[221,222,223],"code",{},"read:jira-work"," — Read issues, projects, and boards",[37,226,227,230],{},[221,228,229],{},"write:jira-work"," — Create and update issues",[37,232,233,236],{},[221,234,235],{},"read:jira-user"," — Read user information",[37,238,239,242],{},[40,240,241],{},"Set up authorization",[34,243,244,250,257],{},[37,245,161,246,249],{},[40,247,248],{},"Authorization"," in the left sidebar",[37,251,252,253,256],{},"Add a callback URL for your environment (",[221,254,255],{},"https://gitlab.com/oauth/callback",")",[37,258,259],{},"Save your changes",[37,261,262,265],{},[40,263,264],{},"Retrieve credentials",[34,266,267,272,282],{},[37,268,204,269],{},[40,270,271],{},"Settings",[37,273,274,275,278,279],{},"Copy your ",[40,276,277],{},"Client ID"," and ",[40,280,281],{},"Client Secret",[37,283,284],{},"Store these securely — you'll need them for the MCP configuration",[142,286,288],{"id":287},"interactive-walkthrough-jira-oauth-setup","Interactive walkthrough: Jira OAuth setup",[12,290,291],{},"Click on the image below to get started.",[12,293,294],{},[19,295,298],{"href":296,"rel":297},"https://gitlab.navattic.com/jira-oauth-setup",[],[299,300],"img",{"alt":301,"src":302},"Jira OAuth setup tour","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772644850/wnzfoq43nkkfmgdqldmr.png",[26,304,306],{"id":305},"part-2-configure-gitlab-duo-agent-platform-mcp-client","Part 2: Configure GitLab Duo Agent Platform MCP client",[12,308,309],{},"With your OAuth credentials ready, you can now configure GitLab Duo Agent Platform to connect to the Atlassian MCP server.",[142,311,313],{"id":312},"create-your-mcp-configuration-file","Create your MCP configuration file",[12,315,316,317,320],{},"Create the MCP configuration file in your GitLab project at ",[221,318,319],{},".gitlab/duo/mcp.json",":",[322,323,328],"pre",{"className":324,"code":325,"language":326,"meta":327,"style":327},"language-json shiki shiki-themes github-light","{\n  \"mcpServers\": {\n    \"atlassian\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.atlassian.com/v1/mcp\",\n      \"auth\": {\n        \"type\": \"oauth2\",\n        \"clientId\": \"YOUR_CLIENT_ID\",\n        \"clientSecret\": \"YOUR_CLIENT_SECRET\",\n        \"authorizationUrl\": \"https://auth.atlassian.com/oauth/authorize\",\n        \"tokenUrl\": \"https://auth.atlassian.com/oauth/token\"\n      },\n      \"approvedTools\": true\n    }\n  }\n}\n","json","",[221,329,330,339,349,357,373,386,394,407,420,433,446,457,463,474,480,486],{"__ignoreMap":327},[331,332,335],"span",{"class":333,"line":334},"line",1,[331,336,338],{"class":337},"sgsFI","{\n",[331,340,342,346],{"class":333,"line":341},2,[331,343,345],{"class":344},"sYu0t","  \"mcpServers\"",[331,347,348],{"class":337},": {\n",[331,350,352,355],{"class":333,"line":351},3,[331,353,354],{"class":344},"    \"atlassian\"",[331,356,348],{"class":337},[331,358,360,363,366,370],{"class":333,"line":359},4,[331,361,362],{"class":344},"      \"type\"",[331,364,365],{"class":337},": ",[331,367,369],{"class":368},"sYBdl","\"http\"",[331,371,372],{"class":337},",\n",[331,374,376,379,381,384],{"class":333,"line":375},5,[331,377,378],{"class":344},"      \"url\"",[331,380,365],{"class":337},[331,382,383],{"class":368},"\"https://mcp.atlassian.com/v1/mcp\"",[331,385,372],{"class":337},[331,387,389,392],{"class":333,"line":388},6,[331,390,391],{"class":344},"      \"auth\"",[331,393,348],{"class":337},[331,395,397,400,402,405],{"class":333,"line":396},7,[331,398,399],{"class":344},"        \"type\"",[331,401,365],{"class":337},[331,403,404],{"class":368},"\"oauth2\"",[331,406,372],{"class":337},[331,408,410,413,415,418],{"class":333,"line":409},8,[331,411,412],{"class":344},"        \"clientId\"",[331,414,365],{"class":337},[331,416,417],{"class":368},"\"YOUR_CLIENT_ID\"",[331,419,372],{"class":337},[331,421,423,426,428,431],{"class":333,"line":422},9,[331,424,425],{"class":344},"        \"clientSecret\"",[331,427,365],{"class":337},[331,429,430],{"class":368},"\"YOUR_CLIENT_SECRET\"",[331,432,372],{"class":337},[331,434,436,439,441,444],{"class":333,"line":435},10,[331,437,438],{"class":344},"        \"authorizationUrl\"",[331,440,365],{"class":337},[331,442,443],{"class":368},"\"https://auth.atlassian.com/oauth/authorize\"",[331,445,372],{"class":337},[331,447,449,452,454],{"class":333,"line":448},11,[331,450,451],{"class":344},"        \"tokenUrl\"",[331,453,365],{"class":337},[331,455,456],{"class":368},"\"https://auth.atlassian.com/oauth/token\"\n",[331,458,460],{"class":333,"line":459},12,[331,461,462],{"class":337},"      },\n",[331,464,466,469,471],{"class":333,"line":465},13,[331,467,468],{"class":344},"      \"approvedTools\"",[331,470,365],{"class":337},[331,472,473],{"class":344},"true\n",[331,475,477],{"class":333,"line":476},14,[331,478,479],{"class":337},"    }\n",[331,481,483],{"class":333,"line":482},15,[331,484,485],{"class":337},"  }\n",[331,487,489],{"class":333,"line":488},16,[331,490,491],{"class":337},"}\n",[12,493,494,495,278,498,501],{},"Replace ",[221,496,497],{},"YOUR_CLIENT_ID",[221,499,500],{},"YOUR_CLIENT_SECRET"," with the credentials you generated in Part 1.",[142,503,505],{"id":504},"enable-mcp-in-gitlab","Enable MCP in GitLab",[150,507,508,520],{},[37,509,510,511,183,514,183,517],{},"Navigate to your ",[40,512,513],{},"Group Settings",[40,515,516],{},"GitLab Duo",[40,518,519],{},"Configuration",[37,521,522],{},"Make sure “Allow external MCP tools” is checked",[142,524,526],{"id":525},"verify-the-connection","Verify the connection",[12,528,529],{},"Open your project in VS Code and ask in GitLab Duo Agent Platform chat:",[322,531,536],{"className":532,"code":534,"language":535,"meta":327},[533],"language-text","What MCP tools do you have access to?\n","text",[221,537,534],{"__ignoreMap":327},[12,539,540],{},"Then",[322,542,545],{"className":543,"code":544,"language":535,"meta":327},[533],"Test the MCP JIRA configuration in this project\n",[221,546,544],{"__ignoreMap":327},[12,548,549],{},"At this point you'll be redirected from the IDE to the MCP Atlassian website to approve access:",[12,551,552],{},[299,553],{"alt":554,"src":555,"title":554},"Redirect to MCP Atlassian website","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/z5acqjgguh0damnnde9g.png",[12,557,558,561],{},[559,560],"br",{},[559,562],{},[12,564,565],{},[299,566],{"alt":567,"src":568,"title":567},"Approve access","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/rwowamm8nsubhpixtn3i.png",[12,570,571,573],{},[559,572],{},[559,574],{},[12,576,577],{},[299,578],{"alt":579,"src":580,"title":579},"Select your JIRA instance and approve","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/chuzqd0jeptfwvoj7wjr.png",[12,582,583,585],{},[559,584],{},[559,586],{},[12,588,589],{},[299,590],{"alt":591,"src":592,"title":591},"Success!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/bsgti5iste2bzck19o5y.png",[12,594,595,597],{},[559,596],{},[559,598],{},[142,600,602],{"id":601},"verify-with-the-mcp-dashboard","Verify with the MCP Dashboard",[12,604,605,606,609],{},"GitLab also provides a built-in ",[40,607,608],{},"MCP Dashboard"," directly in your IDE for this.",[12,611,612,613,616,617,620,621,624],{},"In VS Code or VSCodium, open the Command Palette (",[221,614,615],{},"Cmd+Shift+P"," on macOS, ",[221,618,619],{},"Ctrl+Shift+P"," on Windows/Linux) and search for ",[40,622,623],{},"\"GitLab: Show MCP Dashboard\"",". The dashboard opens in a new editor tab and gives you:",[34,626,627,633,646],{},[37,628,629,632],{},[40,630,631],{},"Connection status"," for each configured MCP server",[37,634,635,638,639,642,643,256],{},[40,636,637],{},"Available tools"," exposed by the server (e.g., ",[221,640,641],{},"jira_get_issue",", ",[221,644,645],{},"jira_create_issue",[37,647,648,651],{},[40,649,650],{},"Server logs"," so you can see exactly which tools are being called in real time",[12,653,654],{},[299,655],{"alt":656,"src":657,"title":656},"MCP servers dashboard and status","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/mmvdfchucacsydivowvn.png",[12,659,660,662],{},[559,661],{},[559,663],{},[12,665,666],{},[299,667],{"alt":668,"src":669,"title":668},"Server details and permissions","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/tcocgdvovp2dl42pvfn8.png",[12,671,672,674],{},[559,673],{},[559,675],{},[12,677,678],{},[299,679],{"alt":680,"src":681,"title":680},"MCP Server logs","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643466/mougvqqk1bozchaufsci.png",[12,683,684,686],{},[559,685],{},[559,687],{},[142,689,691],{"id":690},"interactive-walkthrough-testing-mcp","Interactive walkthrough: Testing MCP",[693,694],"iframe",{"src":695,"frameBorder":696,"allow":697,"referrerPolicy":698,"style":699,"title":700},"https://player.vimeo.com/video/1170005495?badge=0&autopause=0& player_id=0&app_id=58479","0","autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share","strict-origin-when-cross-origin","position:absolute;top:0;left:0;width:100%;height:100%;","Testing MCP",[702,703],"script",{"src":704},"https://player.vimeo.com/api/player.js",[26,706,708],{"id":707},"part-3-use-cases-in-action","Part 3: Use cases in action",[12,710,711],{},"Now that your integration is configured, let's explore three practical workflows that demonstrate the power of connecting Jira to GitLab Duo Agent Platform.",[142,713,715],{"id":714},"planning-assistant","Planning assistant",[12,717,718,721],{},[40,719,720],{},"Scenario:"," You're preparing for sprint planning and need to quickly assess the backlog, understand priorities, and identify blockers.",[12,723,724],{},"This demo shows you how to:",[34,726,727,730,733],{},[37,728,729],{},"Query the backlog",[37,731,732],{},"Identify unassigned high-priority issues",[37,734,735],{},"Get AI-powered sprint recommendations",[737,738,740],"h4",{"id":739},"example-prompts","Example prompts",[12,742,743],{},"Try these prompts in GitLab Duo Agent Platform Chat:",[322,745,748],{"className":746,"code":747,"language":535,"meta":327},[533],"List all the unassigned issues in JIRA for project GITLAB\n",[221,749,747],{"__ignoreMap":327},[322,751,754],{"className":752,"code":753,"language":535,"meta":327},[533],"Suggest the two top issues to prioritize and summarize them. Assign them to me.\n",[221,755,753],{"__ignoreMap":327},[142,757,759],{"id":758},"interactive-walkthrough-project-planning","Interactive walkthrough: Project planning",[693,761],{"src":762,"frameBorder":696,"allow":697,"referrerPolicy":698,"style":699,"title":763},"https://player.vimeo.com/video/1170005462?badge=0&autopause=0&player_id=0&app_id=58479","Project Planning",[702,765],{"src":766},"https://player.vimeo.com/api/player. js",[142,768,770],{"id":769},"issue-triage-and-creation-from-code","Issue triage and creation from code",[12,772,773,775],{},[40,774,720],{}," While reviewing code, you discover a bug and want to create a Jira issue with relevant context — without leaving your IDE.",[12,777,778],{},"This demo walks you through:",[34,780,781,784,787,790],{},[37,782,783],{},"Identifying a bug while coding",[37,785,786],{},"Creating a detailed Jira issue via natural language",[37,788,789],{},"Auto-populating issue fields with code context",[37,791,792],{},"Linking the issue to your current branch",[737,794,740],{"id":795},"example-prompts-1",[322,797,800],{"className":798,"code":799,"language":535,"meta":327},[533],"Search in JIRA for a bug related to: Null pointer exception in PaymentService.processRefund().\nIf it does not exist create it with all the context needed from the code. Find possible blockers that this bug may cause.\n",[221,801,799],{"__ignoreMap":327},[322,803,806],{"className":804,"code":805,"language":535,"meta":327},[533],"Create a new branch called issue-gitlab-18, checkout, and link it to the issue we just created. Assign the JIRA issue to me and mark it as in-progress.\n",[221,807,805],{"__ignoreMap":327},[142,809,811],{"id":810},"interactive-walkthrough-bug-review-and-task-automation","Interactive walkthrough: Bug review and task automation",[693,813],{"src":814,"frameBorder":696,"allow":697,"referrerPolicy":698,"style":699,"title":815},"https://player.vimeo.com/video/1170005368?badge=0&autopause=0& player_id=0&app_id=58479","Bug Review",[702,817],{"src":704},[142,819,821],{"id":820},"cross-system-incident-investigation","Cross-system incident investigation",[12,823,824,826],{},[40,825,720],{}," A production incident occurs, and you need to correlate information from Jira (incident ticket), GitLab Project Management, your codebase, and merge requests to identify the root cause.",[12,828,829],{},"This demo demonstrates:",[34,831,832,835,838,841,844],{},[37,833,834],{},"Fetching incident details from Jira",[37,836,837],{},"Correlating with recent merge requests in GitLab",[37,839,840],{},"Identifying potentially related code changes",[37,842,843],{},"Generating an incident timeline",[37,845,846],{},"Design a remediation plan and create it as a work item in GitLab",[737,848,740],{"id":849},"example-prompts-2",[322,851,854],{"className":852,"code":853,"language":535,"meta":327},[533],"\"We have a production incident INC-1 about checkout failures. Can you help me investigate with all available context?\"\n",[221,855,853],{"__ignoreMap":327},[322,857,860],{"className":858,"code":859,"language":535,"meta":327},[533],"Create a timeline of events for incident INC-1 including related Jira issues and recent deployments\n",[221,861,859],{"__ignoreMap":327},[322,863,866],{"className":864,"code":865,"language":535,"meta":327},[533],"Propose a remediation plan\n",[221,867,865],{"__ignoreMap":327},[142,869,871],{"id":870},"interactive-walkthrough-cross-system-troubleshooting-and-remediation","Interactive walkthrough: Cross-system troubleshooting and remediation",[693,873],{"src":874,"frameBorder":696,"allow":697,"referrerPolicy":698,"style":699,"title":875},"https://player.vimeo.com/video/1170005413?badge=0&autopause=0& player_id=0&app_id=58479","Cross System Investigation",[702,877],{"src":704},[26,879,881],{"id":880},"troubleshooting","Troubleshooting",[12,883,884],{},"These are some common setup issues and quick fixes:",[64,886,887,897],{},[67,888,889],{},[70,890,891,894],{},[73,892,893],{},"Issue",[73,895,896],{},"Solution",[80,898,899,911,919,930],{},[70,900,901,904],{},[85,902,903],{},"\"MCP server not found\"",[85,905,906,907,910],{},"Verify the ",[221,908,909],{},"mcp.json"," file is in the correct location and properly formatted",[70,912,913,916],{},[85,914,915],{},"\"Authentication failed\"",[85,917,918],{},"Re-check your OAuth credentials and ensure scopes are correctly configured in Atlassian",[70,920,921,924],{},[85,922,923],{},"\"No Jira tools available\"",[85,925,926,927,929],{},"Restart VS Code after updating ",[221,928,909],{}," and ensure MCP is enabled in GitLab",[70,931,932,935],{},[85,933,934],{},"\"Connection timeout\"",[85,936,937,938],{},"Check your network connectivity to ",[221,939,940],{},"mcp.atlassian.com",[12,942,943,945,946,951],{},[559,944],{}," For detailed troubleshooting, see the ",[19,947,950],{"href":948,"rel":949},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_clients/",[],"GitLab MCP clients documentation",".",[26,953,955],{"id":954},"security-considerations","Security considerations",[12,957,958],{},"When integrating Jira with GitLab Duo Agent Platform:",[34,960,961,967,973],{},[37,962,963,966],{},[40,964,965],{},"OAuth tokens"," — Make sure credentials remain secure",[37,968,969,972],{},[40,970,971],{},"Principle of least privilege"," — Only grant the minimum required Jira scopes",[37,974,975,978],{},[40,976,977],{},"Token rotation"," — Regularly rotate your OAuth credentials as part of security hygiene",[26,980,982],{"id":981},"summary","Summary",[12,984,985],{},"Connecting GitLab Duo Agent Platform to different tools through MCP transforms how you interact with your development lifecycle. In this article, you have learned how to:",[34,987,988,994,1000,1006],{},[37,989,990,993],{},[40,991,992],{},"Query issues naturally"," — Ask questions about your backlog, sprints, and incidents in natural language.",[37,995,996,999],{},[40,997,998],{},"Create and update issues on all your DevSecOps environment"," — File bugs and update tickets without leaving your IDE.",[37,1001,1002,1005],{},[40,1003,1004],{},"Correlate across systems"," — Combine Jira data with GitLab project management, merge requests, and pipelines for complete visibility.",[37,1007,1008,1011],{},[40,1009,1010],{},"Reduce context switching"," — Keep your focus on code while staying connected to project management.",[12,1013,1014],{},"This integration exemplifies the power of MCP: standardized, secure access to your tools through AI, enabling developers to work more efficiently without sacrificing governance or security.",[26,1016,1018],{"id":1017},"read-more","Read more",[34,1020,1021,1028,1034,1041,1046],{},[37,1022,1023],{},[19,1024,1027],{"href":1025,"rel":1026},"https://about.gitlab.com/blog/duo-agent-platform-with-mcp/",[],"GitLab Duo Agent Platform adds support for Model Context Protocol",[37,1029,1030],{},[19,1031,1033],{"href":21,"rel":1032},[],"What is Model Context Protocol?",[37,1035,1036],{},[19,1037,1040],{"href":1038,"rel":1039},"https://about.gitlab.com/blog/agentic-ai-guides-and-resources/",[],"Agentic AI guides and resources",[37,1042,1043],{},[19,1044,950],{"href":948,"rel":1045},[],[37,1047,1048],{},[19,1049,1052],{"href":1050,"rel":1051},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-complete-getting-started-guide/",[],"Get started with GitLab Duo Agent Platform: The complete guide",[1054,1055,1056],"style",{},"html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":327,"searchDepth":341,"depth":341,"links":1058},[1059,1060,1061,1062,1066,1073,1081,1082,1083,1084],{"id":28,"depth":341,"text":29},{"id":58,"depth":341,"text":59},{"id":125,"depth":341,"text":126},{"id":136,"depth":341,"text":137,"children":1063},[1064,1065],{"id":144,"depth":351,"text":145},{"id":287,"depth":351,"text":288},{"id":305,"depth":341,"text":306,"children":1067},[1068,1069,1070,1071,1072],{"id":312,"depth":351,"text":313},{"id":504,"depth":351,"text":505},{"id":525,"depth":351,"text":526},{"id":601,"depth":351,"text":602},{"id":690,"depth":351,"text":691},{"id":707,"depth":341,"text":708,"children":1074},[1075,1076,1077,1078,1079,1080],{"id":714,"depth":351,"text":715},{"id":758,"depth":351,"text":759},{"id":769,"depth":351,"text":770},{"id":810,"depth":351,"text":811},{"id":820,"depth":351,"text":821},{"id":870,"depth":351,"text":871},{"id":880,"depth":341,"text":881},{"id":954,"depth":341,"text":955},{"id":981,"depth":341,"text":982},{"id":1017,"depth":341,"text":1018},"ai","2026-03-05","Learn how to connect external tools to GitLab Duo Agent Platform using MCP. Step-by-step setup with three practical workflow demos.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643639/sapu29gmlgtwvhggmj6k.png",{},true,"/en-us/blog/extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp",{"config":1096,"title":5,"description":1087},{"noIndex":1090},"extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp","en-us/blog/extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp",[1100,1101,1102],"AI","product","tutorial","BlogPost","6cCHKcLqWWKdSovg-DA6ZUZBQ7PkQoip_8a3LS_mgFQ",{"logo":1106,"freeTrial":1111,"sales":1116,"login":1121,"items":1126,"search":1453,"minimal":1484,"duo":1503,"switchNav":1512,"pricingDeployment":1523},{"config":1107},{"href":1108,"dataGaName":1109,"dataGaLocation":1110},"/","gitlab logo","header",{"text":1112,"config":1113},"Get free trial",{"href":1114,"dataGaName":1115,"dataGaLocation":1110},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":1117,"config":1118},"Request a demo",{"href":1119,"dataGaName":1120,"dataGaLocation":1110},"/sales/?contact-topic=request-demo","sales",{"text":1122,"config":1123},"Sign in",{"href":1124,"dataGaName":1125,"dataGaLocation":1110},"https://gitlab.com/users/sign_in/","sign in",[1127,1156,1256,1261,1375,1431],{"text":1128,"config":1129,"menu":1131},"Platform",{"dataNavLevelOne":1130},"platform",{"type":1132,"columns":1133},"cards",[1134,1140,1148],{"title":1128,"description":1135,"link":1136},"The intelligent orchestration platform for DevSecOps",{"text":1137,"config":1138},"Explore our Platform",{"href":1139,"dataGaName":1130,"dataGaLocation":1110},"/platform/",{"title":1141,"description":1142,"link":1143},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":1144,"config":1145},"Meet GitLab Duo",{"href":1146,"dataGaName":1147,"dataGaLocation":1110},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1149,"description":1150,"link":1151},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":1152,"config":1153},"Learn more",{"href":1154,"dataGaName":1155,"dataGaLocation":1110},"/why-gitlab/","why gitlab",{"text":1157,"left":1093,"config":1158,"menu":1160},"Product",{"dataNavLevelOne":1159},"solutions",{"type":1161,"link":1162,"columns":1166,"feature":1235},"lists",{"text":1163,"config":1164},"View all Solutions",{"href":1165,"dataGaName":1159,"dataGaLocation":1110},"/solutions/",[1167,1191,1214],{"title":1168,"description":1169,"link":1170,"items":1175},"Automation","CI/CD and automation to accelerate deployment",{"config":1171},{"icon":1172,"href":1173,"dataGaName":1174,"dataGaLocation":1110},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[1176,1180,1183,1187],{"text":1177,"config":1178},"CI/CD",{"href":1179,"dataGaLocation":1110,"dataGaName":1177},"/solutions/continuous-integration/",{"text":1141,"config":1181},{"href":1146,"dataGaLocation":1110,"dataGaName":1182},"gitlab duo agent platform - product menu",{"text":1184,"config":1185},"Source Code Management",{"href":1186,"dataGaLocation":1110,"dataGaName":1184},"/solutions/source-code-management/",{"text":1188,"config":1189},"Automated Software Delivery",{"href":1173,"dataGaLocation":1110,"dataGaName":1190},"Automated software delivery",{"title":1192,"description":1193,"link":1194,"items":1199},"Security","Deliver code faster without compromising security",{"config":1195},{"href":1196,"dataGaName":1197,"dataGaLocation":1110,"icon":1198},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1200,1204,1209],{"text":1201,"config":1202},"Application Security Testing",{"href":1196,"dataGaName":1203,"dataGaLocation":1110},"Application security testing",{"text":1205,"config":1206},"Software Supply Chain Security",{"href":1207,"dataGaLocation":1110,"dataGaName":1208},"/solutions/supply-chain/","Software supply chain security",{"text":1210,"config":1211},"Software Compliance",{"href":1212,"dataGaName":1213,"dataGaLocation":1110},"/solutions/software-compliance/","software compliance",{"title":1215,"link":1216,"items":1221},"Measurement",{"config":1217},{"icon":1218,"href":1219,"dataGaName":1220,"dataGaLocation":1110},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[1222,1226,1230],{"text":1223,"config":1224},"Visibility & Measurement",{"href":1219,"dataGaLocation":1110,"dataGaName":1225},"Visibility and Measurement",{"text":1227,"config":1228},"Value Stream Management",{"href":1229,"dataGaLocation":1110,"dataGaName":1227},"/solutions/value-stream-management/",{"text":1231,"config":1232},"Analytics & Insights",{"href":1233,"dataGaLocation":1110,"dataGaName":1234},"/solutions/analytics-and-insights/","Analytics and insights",{"title":1236,"type":1161,"items":1237},"GitLab for",[1238,1244,1250],{"text":1239,"config":1240},"Enterprise",{"icon":1241,"href":1242,"dataGaLocation":1110,"dataGaName":1243},"Building","/enterprise/","enterprise",{"text":1245,"config":1246},"Small Business",{"icon":1247,"href":1248,"dataGaLocation":1110,"dataGaName":1249},"Work","/small-business/","small business",{"text":1251,"config":1252},"Public Sector",{"icon":1253,"href":1254,"dataGaLocation":1110,"dataGaName":1255},"Organization","/solutions/public-sector/","public sector",{"text":1257,"config":1258},"Pricing",{"href":1259,"dataGaName":1260,"dataGaLocation":1110,"dataNavLevelOne":1260},"/pricing/","pricing",{"text":1262,"config":1263,"menu":1265},"Resources",{"dataNavLevelOne":1264},"resources",{"type":1161,"link":1266,"columns":1270,"feature":1364},{"text":1267,"config":1268},"View all resources",{"href":1269,"dataGaName":1264,"dataGaLocation":1110},"/resources/",[1271,1304,1331],{"title":1272,"items":1273},"Getting started",[1274,1279,1284,1289,1294,1299],{"text":1275,"config":1276},"Install",{"href":1277,"dataGaName":1278,"dataGaLocation":1110},"/install/","install",{"text":1280,"config":1281},"Quick start guides",{"href":1282,"dataGaName":1283,"dataGaLocation":1110},"/get-started/","quick setup checklists",{"text":1285,"config":1286},"Learn",{"href":1287,"dataGaLocation":1110,"dataGaName":1288},"https://university.gitlab.com/","learn",{"text":1290,"config":1291},"Product documentation",{"href":1292,"dataGaName":1293,"dataGaLocation":1110},"https://docs.gitlab.com/","product documentation",{"text":1295,"config":1296},"Best practice videos",{"href":1297,"dataGaName":1298,"dataGaLocation":1110},"/getting-started-videos/","best practice videos",{"text":1300,"config":1301},"Integrations",{"href":1302,"dataGaName":1303,"dataGaLocation":1110},"/integrations/","integrations",{"title":1305,"items":1306},"Discover",[1307,1312,1317,1322,1326],{"text":1308,"config":1309},"Customer success stories",{"href":1310,"dataGaName":1311,"dataGaLocation":1110},"/customers/","customer success stories",{"text":1313,"config":1314},"Blog",{"href":1315,"dataGaName":1316,"dataGaLocation":1110},"/blog/","blog",{"text":1318,"config":1319},"Demo Hub",{"href":1320,"dataGaName":1321,"dataGaLocation":1110},"/demo-hub/","demo hub",{"text":1323,"config":1324},"The Source",{"href":1325,"dataGaName":1316,"dataGaLocation":1110},"/the-source/",{"text":1327,"config":1328},"Remote",{"href":1329,"dataGaName":1330,"dataGaLocation":1110},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1332,"items":1333},"Connect",[1334,1339,1344,1349,1354,1359],{"text":1335,"config":1336},"GitLab Services",{"href":1337,"dataGaName":1338,"dataGaLocation":1110},"/services/","services",{"text":1340,"config":1341},"Contribute",{"href":1342,"dataGaName":1343,"dataGaLocation":1110},"https://contributors.gitlab.com","contribute",{"text":1345,"config":1346},"Community",{"href":1347,"dataGaName":1348,"dataGaLocation":1110},"/community/","community",{"text":1350,"config":1351},"Forum",{"href":1352,"dataGaName":1353,"dataGaLocation":1110},"https://forum.gitlab.com/","forum",{"text":1355,"config":1356},"Events",{"href":1357,"dataGaName":1358,"dataGaLocation":1110},"/events/","events",{"text":1360,"config":1361},"Partners",{"href":1362,"dataGaName":1363,"dataGaLocation":1110},"/partners/","partners",{"config":1365,"title":1368,"text":1369,"link":1370},{"background":1366,"textColor":1367},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":1371,"config":1372},"Read the latest",{"href":1373,"dataGaName":1374,"dataGaLocation":1110},"/whats-new/","whats new",{"text":1376,"config":1377,"menu":1379},"Company",{"dataNavLevelOne":1378},"company",{"type":1161,"columns":1380},[1381],{"items":1382},[1383,1388,1394,1396,1401,1406,1411,1416,1421,1426],{"text":1384,"config":1385},"About",{"href":1386,"dataGaName":1387,"dataGaLocation":1110},"/company/","about",{"text":1389,"config":1390,"footerGa":1393},"Jobs",{"href":1391,"dataGaName":1392,"dataGaLocation":1110},"/jobs/","jobs",{"dataGaName":1392},{"text":1355,"config":1395},{"href":1357,"dataGaName":1358,"dataGaLocation":1110},{"text":1397,"config":1398},"Leadership",{"href":1399,"dataGaName":1400,"dataGaLocation":1110},"/company/team/e-group/","leadership",{"text":1402,"config":1403},"Handbook",{"href":1404,"dataGaName":1405,"dataGaLocation":1110},"https://handbook.gitlab.com/","handbook",{"text":1407,"config":1408},"Investor relations",{"href":1409,"dataGaName":1410,"dataGaLocation":1110},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1412,"config":1413},"Trust Center",{"href":1414,"dataGaName":1415,"dataGaLocation":1110},"/security/","trust center",{"text":1417,"config":1418},"AI Transparency Center",{"href":1419,"dataGaName":1420,"dataGaLocation":1110},"/ai-transparency-center/","ai transparency center",{"text":1422,"config":1423},"Newsletter",{"href":1424,"dataGaName":1425,"dataGaLocation":1110},"/company/contact/#contact-forms","newsletter",{"text":1427,"config":1428},"Press",{"href":1429,"dataGaName":1430,"dataGaLocation":1110},"/press/","press",{"text":1432,"config":1433,"menu":1434},"Contact us",{"dataNavLevelOne":1378},{"type":1161,"columns":1435},[1436],{"items":1437},[1438,1443,1448],{"text":1439,"config":1440},"Talk to sales",{"href":1441,"dataGaName":1442,"dataGaLocation":1110},"/sales/","talk to sales",{"text":1444,"config":1445},"Support portal",{"href":1446,"dataGaName":1447,"dataGaLocation":1110},"https://support.gitlab.com/hc/en-us","support portal",{"text":1449,"config":1450},"Customer portal",{"href":1451,"dataGaName":1452,"dataGaLocation":1110},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1454,"login":1455,"suggestions":1462},"Close",{"text":1456,"link":1457},"To search repositories and projects, login to",{"text":1458,"config":1459},"gitlab.com",{"href":1124,"dataGaName":1460,"dataGaLocation":1461},"search login","search",{"text":1463,"default":1464},"Suggestions",[1465,1467,1471,1473,1477,1481],{"text":1141,"config":1466},{"href":1146,"dataGaName":1141,"dataGaLocation":1461},{"text":1468,"config":1469},"Code Suggestions (AI)",{"href":1470,"dataGaName":1468,"dataGaLocation":1461},"/solutions/code-suggestions/",{"text":1177,"config":1472},{"href":1179,"dataGaName":1177,"dataGaLocation":1461},{"text":1474,"config":1475},"GitLab on AWS",{"href":1476,"dataGaName":1474,"dataGaLocation":1461},"/partners/technology-partners/aws/",{"text":1478,"config":1479},"GitLab on Google Cloud",{"href":1480,"dataGaName":1478,"dataGaLocation":1461},"/partners/technology-partners/google-cloud-platform/",{"text":1482,"config":1483},"Why GitLab?",{"href":1154,"dataGaName":1482,"dataGaLocation":1461},{"freeTrial":1485,"mobileIcon":1490,"desktopIcon":1495,"secondaryButton":1498},{"text":1486,"config":1487},"Start free trial",{"href":1488,"dataGaName":1115,"dataGaLocation":1489},"https://gitlab.com/-/trials/new/","nav",{"altText":1491,"config":1492},"Gitlab Icon",{"src":1493,"dataGaName":1494,"dataGaLocation":1489},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1491,"config":1496},{"src":1497,"dataGaName":1494,"dataGaLocation":1489},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1499,"config":1500},"Get Started",{"href":1501,"dataGaName":1502,"dataGaLocation":1489},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":1504,"mobileIcon":1508,"desktopIcon":1510},{"text":1505,"config":1506},"Learn more about GitLab Duo",{"href":1146,"dataGaName":1507,"dataGaLocation":1489},"gitlab duo",{"altText":1491,"config":1509},{"src":1493,"dataGaName":1494,"dataGaLocation":1489},{"altText":1491,"config":1511},{"src":1497,"dataGaName":1494,"dataGaLocation":1489},{"button":1513,"mobileIcon":1518,"desktopIcon":1520},{"text":1514,"config":1515},"/switch",{"href":1516,"dataGaName":1517,"dataGaLocation":1489},"#contact","switch",{"altText":1491,"config":1519},{"src":1493,"dataGaName":1494,"dataGaLocation":1489},{"altText":1491,"config":1521},{"src":1522,"dataGaName":1494,"dataGaLocation":1489},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1524,"mobileIcon":1529,"desktopIcon":1531},{"text":1525,"config":1526},"Back to pricing",{"href":1259,"dataGaName":1527,"dataGaLocation":1489,"icon":1528},"back to pricing","GoBack",{"altText":1491,"config":1530},{"src":1493,"dataGaName":1494,"dataGaLocation":1489},{"altText":1491,"config":1532},{"src":1497,"dataGaName":1494,"dataGaLocation":1489},{"title":1534,"titleMobile":1535,"button":1536,"config":1541},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":1152,"config":1537},{"href":1538,"dataGaName":1539,"dataGaLocation":1540},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":1542,"disabled":1090},"release",{"data":1544},{"text":1545,"source":1546,"edit":1552,"contribute":1557,"config":1562,"items":1567,"minimal":1777},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":1547,"config":1548},"View page source",{"href":1549,"dataGaName":1550,"dataGaLocation":1551},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1553,"config":1554},"Edit this page",{"href":1555,"dataGaName":1556,"dataGaLocation":1551},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1558,"config":1559},"Please contribute",{"href":1560,"dataGaName":1561,"dataGaLocation":1551},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1563,"facebook":1564,"youtube":1565,"linkedin":1566},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1568,1615,1669,1713,1745],{"title":1257,"links":1569,"subMenu":1584},[1570,1574,1579],{"text":1571,"config":1572},"View plans",{"href":1259,"dataGaName":1573,"dataGaLocation":1551},"view plans",{"text":1575,"config":1576},"Why Premium?",{"href":1577,"dataGaName":1578,"dataGaLocation":1551},"/pricing/premium/","why premium",{"text":1580,"config":1581},"Why Ultimate?",{"href":1582,"dataGaName":1583,"dataGaLocation":1551},"/pricing/ultimate/","why ultimate",[1585],{"title":1586,"links":1587},"Contact Us",[1588,1591,1593,1595,1600,1605,1610],{"text":1589,"config":1590},"Contact sales",{"href":1441,"dataGaName":1120,"dataGaLocation":1551},{"text":1444,"config":1592},{"href":1446,"dataGaName":1447,"dataGaLocation":1551},{"text":1449,"config":1594},{"href":1451,"dataGaName":1452,"dataGaLocation":1551},{"text":1596,"config":1597},"Status",{"href":1598,"dataGaName":1599,"dataGaLocation":1551},"https://status.gitlab.com/","status",{"text":1601,"config":1602},"Terms of use",{"href":1603,"dataGaName":1604,"dataGaLocation":1551},"/terms/","terms of use",{"text":1606,"config":1607},"Privacy statement",{"href":1608,"dataGaName":1609,"dataGaLocation":1551},"/privacy/","privacy statement",{"text":1611,"config":1612},"Cookie preferences",{"dataGaName":1613,"dataGaLocation":1551,"id":1614,"isOneTrustButton":1093},"cookie preferences","ot-sdk-btn",{"title":1157,"links":1616,"subMenu":1625},[1617,1621],{"text":1618,"config":1619},"DevSecOps platform",{"href":1139,"dataGaName":1620,"dataGaLocation":1551},"devsecops platform",{"text":1622,"config":1623},"AI-Assisted Development",{"href":1146,"dataGaName":1624,"dataGaLocation":1551},"ai-assisted development",[1626],{"title":1627,"links":1628},"Topics",[1629,1634,1639,1644,1649,1654,1659,1664],{"text":1630,"config":1631},"CICD",{"href":1632,"dataGaName":1633,"dataGaLocation":1551},"/topics/ci-cd/","cicd",{"text":1635,"config":1636},"GitOps",{"href":1637,"dataGaName":1638,"dataGaLocation":1551},"/topics/gitops/","gitops",{"text":1640,"config":1641},"DevOps",{"href":1642,"dataGaName":1643,"dataGaLocation":1551},"/topics/devops/","devops",{"text":1645,"config":1646},"Version Control",{"href":1647,"dataGaName":1648,"dataGaLocation":1551},"/topics/version-control/","version control",{"text":1650,"config":1651},"DevSecOps",{"href":1652,"dataGaName":1653,"dataGaLocation":1551},"/topics/devsecops/","devsecops",{"text":1655,"config":1656},"Cloud Native",{"href":1657,"dataGaName":1658,"dataGaLocation":1551},"/topics/cloud-native/","cloud native",{"text":1660,"config":1661},"AI for Coding",{"href":1662,"dataGaName":1663,"dataGaLocation":1551},"/topics/devops/ai-for-coding/","ai for coding",{"text":1665,"config":1666},"Agentic AI",{"href":1667,"dataGaName":1668,"dataGaLocation":1551},"/topics/agentic-ai/","agentic ai",{"title":1670,"links":1671},"Solutions",[1672,1674,1676,1681,1685,1688,1692,1695,1697,1700,1703,1708],{"text":1201,"config":1673},{"href":1196,"dataGaName":1201,"dataGaLocation":1551},{"text":1190,"config":1675},{"href":1173,"dataGaName":1174,"dataGaLocation":1551},{"text":1677,"config":1678},"Agile development",{"href":1679,"dataGaName":1680,"dataGaLocation":1551},"/solutions/agile-delivery/","agile delivery",{"text":1682,"config":1683},"SCM",{"href":1186,"dataGaName":1684,"dataGaLocation":1551},"source code management",{"text":1630,"config":1686},{"href":1179,"dataGaName":1687,"dataGaLocation":1551},"continuous integration & delivery",{"text":1689,"config":1690},"Value stream management",{"href":1229,"dataGaName":1691,"dataGaLocation":1551},"value stream management",{"text":1635,"config":1693},{"href":1694,"dataGaName":1638,"dataGaLocation":1551},"/solutions/gitops/",{"text":1239,"config":1696},{"href":1242,"dataGaName":1243,"dataGaLocation":1551},{"text":1698,"config":1699},"Small business",{"href":1248,"dataGaName":1249,"dataGaLocation":1551},{"text":1701,"config":1702},"Public sector",{"href":1254,"dataGaName":1255,"dataGaLocation":1551},{"text":1704,"config":1705},"Education",{"href":1706,"dataGaName":1707,"dataGaLocation":1551},"/solutions/education/","education",{"text":1709,"config":1710},"Financial services",{"href":1711,"dataGaName":1712,"dataGaLocation":1551},"/solutions/finance/","financial services",{"title":1262,"links":1714},[1715,1717,1719,1721,1724,1726,1729,1731,1733,1735,1737,1739,1741,1743],{"text":1275,"config":1716},{"href":1277,"dataGaName":1278,"dataGaLocation":1551},{"text":1280,"config":1718},{"href":1282,"dataGaName":1283,"dataGaLocation":1551},{"text":1285,"config":1720},{"href":1287,"dataGaName":1288,"dataGaLocation":1551},{"text":1290,"config":1722},{"href":1292,"dataGaName":1723,"dataGaLocation":1551},"docs",{"text":1313,"config":1725},{"href":1315,"dataGaName":1316,"dataGaLocation":1551},{"text":1727,"config":1728},"What's new",{"href":1373,"dataGaName":1374,"dataGaLocation":1551},{"text":1308,"config":1730},{"href":1310,"dataGaName":1311,"dataGaLocation":1551},{"text":1327,"config":1732},{"href":1329,"dataGaName":1330,"dataGaLocation":1551},{"text":1335,"config":1734},{"href":1337,"dataGaName":1338,"dataGaLocation":1551},{"text":1340,"config":1736},{"href":1342,"dataGaName":1343,"dataGaLocation":1551},{"text":1345,"config":1738},{"href":1347,"dataGaName":1348,"dataGaLocation":1551},{"text":1350,"config":1740},{"href":1352,"dataGaName":1353,"dataGaLocation":1551},{"text":1355,"config":1742},{"href":1357,"dataGaName":1358,"dataGaLocation":1551},{"text":1360,"config":1744},{"href":1362,"dataGaName":1363,"dataGaLocation":1551},{"title":1376,"links":1746},[1747,1749,1751,1753,1755,1757,1761,1766,1768,1770,1772],{"text":1384,"config":1748},{"href":1386,"dataGaName":1378,"dataGaLocation":1551},{"text":1389,"config":1750},{"href":1391,"dataGaName":1392,"dataGaLocation":1551},{"text":1397,"config":1752},{"href":1399,"dataGaName":1400,"dataGaLocation":1551},{"text":1402,"config":1754},{"href":1404,"dataGaName":1405,"dataGaLocation":1551},{"text":1407,"config":1756},{"href":1409,"dataGaName":1410,"dataGaLocation":1551},{"text":1758,"config":1759},"Sustainability",{"href":1760,"dataGaName":1758,"dataGaLocation":1551},"/sustainability/",{"text":1762,"config":1763},"Diversity, inclusion and belonging (DIB)",{"href":1764,"dataGaName":1765,"dataGaLocation":1551},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1412,"config":1767},{"href":1414,"dataGaName":1415,"dataGaLocation":1551},{"text":1422,"config":1769},{"href":1424,"dataGaName":1425,"dataGaLocation":1551},{"text":1427,"config":1771},{"href":1429,"dataGaName":1430,"dataGaLocation":1551},{"text":1773,"config":1774},"Modern Slavery Transparency Statement",{"href":1775,"dataGaName":1776,"dataGaLocation":1551},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1778},[1779,1782,1785],{"text":1780,"config":1781},"Terms",{"href":1603,"dataGaName":1604,"dataGaLocation":1551},{"text":1783,"config":1784},"Cookies",{"dataGaName":1613,"dataGaLocation":1551,"id":1614,"isOneTrustButton":1093},{"text":1786,"config":1787},"Privacy",{"href":1608,"dataGaName":1609,"dataGaLocation":1551},[1789],{"id":1790,"title":7,"body":1089,"config":1791,"content":1794,"description":1089,"extension":1797,"meta":1798,"navigation":1093,"path":1799,"seo":1800,"stem":1801,"__hash__":1802},"blogAuthors/en-us/blog/authors/albert-rabassa.yml",{"template":1792,"gitlabHandle":1793},"BlogAuthor","rabassaa",{"name":7,"config":1795},{"headshot":1796},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643847/hlmrvmk2ez0l0fzbukov.png","yml",{},"/en-us/blog/authors/albert-rabassa",{},"en-us/blog/authors/albert-rabassa","8FNWFkYjzKEzKuhirD__XK-KZ03Foli1uNatB24tLM0",[1804,1812,1820],{"title":1805,"description":1806,"heroImage":1807,"category":1085,"date":1808,"authors":1809,"slug":1811,"externalUrl":1089},"How I built a demo generator with GitLab Duo Agent Platform","Demos haven't always looked like this. Looking back over my career, here's how they have evolved. Follow the tutorial to build your own demo and agent.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-08-13",[1810],"Itzik Gan Baruch","agentic-click-through-demo",{"title":1813,"description":1814,"heroImage":1815,"category":1085,"date":1816,"authors":1817,"slug":1819,"externalUrl":1089},"How to govern agentic AI, MCPs, and AI code assistants","AI agents can write, push, and deploy without human review at each step. Learn a practical framework for controlling access, permissions, and audit trails.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785337625/ifzlc2hyzaxhzmjgyymh.png","2026-07-31",[1818],"Julie Griffin","govern-agentic-ai-mcps-code-assistants",{"title":1821,"description":1822,"heroImage":1823,"category":1085,"date":1824,"authors":1825,"slug":1827,"externalUrl":1089},"Claude Opus 5 on GitLab: Reasoning built for the hard tasks","Anthropic’s Claude Opus 5 is now available on GitLab Duo Agent Platform, delivering deeper reasoning without sacrificing speed.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-07-27",[1826],"Brittany Lutz","claude-opus-5-on-gitlab-duo-agent-platform",{"promotions":1829},[1830,1843,1854,1866],{"id":1831,"categories":1832,"header":1833,"text":1834,"button":1835,"image":1840},"ai-modernization",[1085],"Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1836,"config":1837},"Get your AI maturity score",{"href":1838,"dataGaName":1839,"dataGaLocation":1316},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1841},{"src":1842},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1844,"categories":1845,"header":1846,"text":1834,"button":1847,"image":1851},"devops-modernization",[1101,1653],"Are you just managing tools or shipping innovation?",{"text":1848,"config":1849},"Get your DevOps maturity score",{"href":1850,"dataGaName":1839,"dataGaLocation":1316},"/assessments/devops-modernization-assessment/",{"config":1852},{"src":1853},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1855,"categories":1856,"header":1858,"text":1834,"button":1859,"image":1863},"security-modernization",[1857],"security","Are you trading speed for security?",{"text":1860,"config":1861},"Get your security maturity score",{"href":1862,"dataGaName":1839,"dataGaLocation":1316},"/assessments/security-modernization-assessment/",{"config":1864},{"src":1865},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1867,"paths":1868,"header":1871,"text":1872,"button":1873,"image":1878},"github-azure-migration",[1869,1870],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":1874,"config":1875},"See how GitLab compares to GitHub",{"href":1876,"dataGaName":1877,"dataGaLocation":1316},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1879},{"src":1853},{"header":1881,"blurb":1882,"button":1883,"secondaryButton":1888},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1884,"config":1885},"Get your free trial",{"href":1886,"dataGaName":1115,"dataGaLocation":1887},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":1589,"config":1889},{"href":1441,"dataGaName":1120,"dataGaLocation":1887},1786803766718]