AI Delivery MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AI Delivery MCPRun a dry-run delivery for the current feature branch"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Delivery MCP
AI Delivery MCP integrates GitHub Copilot Chat in VS Code with separate community GitLab and Jira MCP servers. Copilot orchestrates delivery; the local server only prepares repository context, review content, release notes, and evidence.
Architecture
The workspace configuration in .vscode/mcp.json starts three independent stdio servers:
aiDelivery: local TypeScript server exposingprepare_delivery,compose_jira_update, andfinalize_delivery.gitlab:@zereight/mcp-gitlabfor GitLab merge requests.jira:sooperset/mcp-atlassianfor Jira reads, comments, and transitions.
aiDelivery does not contain GitLab/Jira REST, CLI, provider adapter, or nested MCP client code.
Related MCP server: Jira - GitHub MCP Server
Prerequisites
Node.js and npm
npxuvwithuvxA current VS Code release with GitHub Copilot Chat and MCP access enabled by organization policy
GitLab token permission to create merge requests
Jira permission to read and update the target issues
VS Code supports workspace MCP servers through .vscode/mcp.json, including stdio servers and envFile configuration. See the VS Code MCP documentation.
Setup
npm install
cp .env.example .env
npm run buildConfigure .env:
GITLAB_API_URL=https://gitlab.example.com/api/v4
GITLAB_PERSONAL_ACCESS_TOKEN=replace-with-token
JIRA_URL=https://your-company.atlassian.net
JIRA_USERNAME=dev@example.com
JIRA_API_TOKEN=replace-with-token
DELIVERY_GITLAB_PROJECT_ID=group/project
DELIVERY_DEFAULT_TARGET_BRANCH=main
DELIVERY_DEFAULT_REVIEWER_IDS=1001,1002
DELIVERY_DEFAULT_LABELS=ai-delivery
JIRA_DEFAULT_DONE_TRANSITION=31For Jira Server/Data Center, use the provider's documented JIRA_PERSONAL_TOKEN authentication instead of Jira Cloud username/API-token credentials.
.env is ignored by git. All three workspace servers load it through envFile; aiDelivery does not parse, persist, return, or log provider credentials.
Use In Copilot Chat
Open this repository in VS Code.
Run
npm run buildafter local server code changes.Open the Command Palette and run
MCP: List Servers.Start and trust
aiDelivery,gitlab, andjiraafter reviewing their configurations.Select the
AI Deliverycustom agent in Copilot Chat.Run
/deliver-taskand provide the parent Jira issue key.Review the branch range, MR payload, Jira target, release note, and evidence path.
To execute external writes, reply exactly
CONFIRM DELIVERY <runId>using the displayed run ID.
The agent will then create one GitLab MR, compose and apply the Jira update, optionally transition Jira, and finalize local evidence. VS Code may still ask you to approve individual tool calls.
Workspace custom agents live in .github/agents, and prompt files live in .github/prompts. See the VS Code documentation for custom agents and prompt files.
Safety Model
Jira reads and local preview generation are allowed before confirmation.
gitlab/create_merge_request,jira/jira_update_issue, andjira/jira_transition_issueare external write tools.No external write is authorized until
CONFIRM DELIVERY <runId>matches the current prepared run.If MR creation fails, Jira writes and transitions are skipped.
Finalization records
success,partial_success, orfailedand recursively redacts token-shaped values.External result schemas reject secret-bearing keys before evidence persistence.
Local Verification
Run the complete local gate without GitLab or Jira credentials:
npm test
npm run typecheck
npm run build
npm run smoke:dry-runThe smoke command uses fixture provider results. It creates ignored artifacts under:
artifacts/delivery-evidence/<runId>.jsonrelease-notes/DRY-123.md
No GitLab or Jira network calls occur during this smoke test.
Real Integration Verification
Use a test GitLab project, branch, and Jira issue first:
Run
/deliver-taskand verify no external writes occur before confirmation.Confirm the exact prepared run.
Verify MR title, description, target branch, reviewers, and labels.
Verify the Jira comment and optional transition.
Compare the generated release note and final evidence with the real MR and Jira results.
Troubleshooting
Run
MCP: List Servers, select a server, and chooseShow Outputfor startup or provider errors.Run
MCP: Reset Cached Toolsafter changing local tool names or schemas.Rebuild before restarting
aiDelivery:npm run build.Confirm
GITLAB_API_URLends with/api/v4andDELIVERY_GITLAB_PROJECT_IDidentifies the GitLab project or namespace path.Confirm
uvx mcp-atlassianandnpx -y @zereight/mcp-gitlabstart successfully from a terminal if provider startup fails.Organization policy can disable or restrict MCP servers in Copilot Chat; contact the administrator when servers are unavailable despite valid local configuration.
Available Tools
3 toolscompose_jira_updateCompose Jira UpdateD
Render a Jira update after a real GitLab merge request exists.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| transition | No | ||
| mergeRequestUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior, but it does not. It doesn't say whether the tool posts to Jira, requires authentication, has side effects, or merely generates text. The user is left completely in the dark about consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is under-specified rather than concise. It omits essential details about parameters, behavior, and output. The brevity does not serve the agent's need for actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, no annotations, no output schema, and sibling tools, yet the description provides almost no context. It fails to explain the output, side effects, parameter relationships, or how this fits into the delivery workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions no parameter names or meanings. The schema only provides types, so the description must compensate, but it adds nothing about runId, transition, or mergeRequestUrl.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('render') and resource ('a Jira update'), but the noun 'update' is ambiguous—it could mean a comment, a status transition, or something else. It does not explicitly distinguish this from sibling tools, though the names suggest different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The condition 'after a real GitLab merge request exists' implies a usage context, but there is no guidance on when to use this tool versus the sibling tools 'prepare_delivery' or 'finalize_delivery'. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_deliveryFinalize DeliveryC
Persist final GitLab and Jira results, release notes, and sanitized evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| jiraUpdate | Yes | ||
| mergeRequest | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'persist,' which implies a write operation, but gives no detail about side effects, idempotency, required permissions, or what 'sanitized evidence' means in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is easily scannable, though it is somewhat under-specified rather than elegantly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three required parameters, nested objects, no output schema, and no annotations, the description is not sufficient. It does not explain parameter meanings, return behavior, or side effects, leaving the agent with significant ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any of the three required parameters (runId, mergeRequest, jiraUpdate). It fails to compensate for the schema's lack of descriptions, especially since jiraUpdate is a self-referential structure that may be confusing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Persist' and names the resources: 'final GitLab and Jira results, release notes, and sanitized evidence.' This clearly states the tool's purpose and implies finalization, though it does not explicitly contrast with sibling tools like prepare_delivery or compose_jira_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus alternatives. The word 'final' suggests it should be used after preparation or composition, but there is no explicit usage context, prerequisites, or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_deliveryPrepare DeliveryA
Prepare a side-effect-free delivery preview from local git and supplied Jira context.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| branch | No | ||
| labels | No | ||
| transition | No | ||
| validation | No | ||
| parentIssue | Yes | ||
| reviewerIds | No | ||
| targetBranch | No | ||
| gitlabProjectId | No | ||
| releaseNoteScope | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key behavioral trait of being side-effect-free, which is crucial for safety. However, it does not detail the input/output behavior beyond 'preview', such as what the preview contains or any environmental requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the essential purpose and safety trait. Every word adds value, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's complexity (10 parameters, nested objects, no output schema), the description is extremely brief. It omits details about how parameters interact, what outputs to expect, and specific usage scenarios. This leaves significant gaps for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lack of parameter explanations. It vaguely references 'local git' and 'Jira context', but does not map to any of the 10 parameters. The agent is left to infer meanings from parameter names alone, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Prepare a side-effect-free delivery preview from local git and supplied Jira context.' It uses specific verbs and resources, and distinguishes itself from sibling tools by focusing on preparation and preview, not finalization or Jira updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates this tool is for previewing deliveries before finalization, and clarifies it is side-effect-free. It provides clear context but does not explicitly state when not to use it or name alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
compose_jira_update - First observed
finalize_delivery - First observed
prepare_delivery
TDQS
Each tool targets a distinct phase of the delivery workflow: prepare creates a preview without side effects, compose generates a Jira update after a merge, and finalize persists results. There is no overlap in their purposes or expected inputs.
All tool names follow a consistent verb_noun pattern (prepare, compose, finalize) with clear action-first naming. The style is uniform and predictable.
With three tools, the server is slightly lean but well-scoped to the core delivery lifecycle. Each tool is necessary and the count feels reasonable for the narrow, focused purpose.
The workflow covers prepare, compose, and finalize, which form a complete pipeline from preview to persistence. Minor gaps like status checks or cancellation are absent but not critical to the primary delivery flow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- ShipstarOAuthai.shipstar
Generate and publish changelogs, blog posts, release emails, and social posts from your commits.
Manage repositories, users, releases, and automate GitHub workflows
Track stories, organize sprints, and manage project workflows across your team
The AI orchestration agent for modern software teams.
Related MCP Servers
- FlicenseCqualityDmaintenanceProvides automated Git workflow tools for committing, creating pull requests, and merging with proper GitHub authentication handling. Supports complete Git workflows from commit to merge with dry run capabilities and conventional commit formatting.41-
- AlicenseNot gradedqualityDmaintenanceEnables end-to-end automation of developer workflows from Jira issue tracking to GitHub pull requests through natural language, allowing developers to search issues, create branches, commit changes, and manage PRs directly from their IDE.2MIT
- AlicenseBqualityDmaintenanceA comprehensive integration providing over 46 tools for managing GitLab projects, issues, merge requests, and CI/CD workflows through natural language. It supports repository operations like local cloning and batch actions across groups via stdio, SSE, or HTTP transports.54MIT
- AlicenseNot gradedqualityDmaintenanceAutomates routine DevOps tasks like Jenkins builds and GitLab merge requests through the MCP protocol, simplifying daily operations.201MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/minhtzy/MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server