Skip to main content
Glama

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 exposing prepare_delivery, compose_jira_update, and finalize_delivery.

  • gitlab: @zereight/mcp-gitlab for GitLab merge requests.

  • jira: sooperset/mcp-atlassian for 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

  • npx

  • uv with uvx

  • A 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 build

Configure .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=31

For 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

  1. Open this repository in VS Code.

  2. Run npm run build after local server code changes.

  3. Open the Command Palette and run MCP: List Servers.

  4. Start and trust aiDelivery, gitlab, and jira after reviewing their configurations.

  5. Select the AI Delivery custom agent in Copilot Chat.

  6. Run /deliver-task and provide the parent Jira issue key.

  7. Review the branch range, MR payload, Jira target, release note, and evidence path.

  8. 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, and jira/jira_transition_issue are 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, or failed and 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-run

The smoke command uses fixture provider results. It creates ignored artifacts under:

  • artifacts/delivery-evidence/<runId>.json

  • release-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:

  1. Run /deliver-task and verify no external writes occur before confirmation.

  2. Confirm the exact prepared run.

  3. Verify MR title, description, target branch, reviewers, and labels.

  4. Verify the Jira comment and optional transition.

  5. Compare the generated release note and final evidence with the real MR and Jira results.

Troubleshooting

  • Run MCP: List Servers, select a server, and choose Show Output for startup or provider errors.

  • Run MCP: Reset Cached Tools after changing local tool names or schemas.

  • Rebuild before restarting aiDelivery: npm run build.

  • Confirm GITLAB_API_URL ends with /api/v4 and DELIVERY_GITLAB_PROJECT_ID identifies the GitLab project or namespace path.

  • Confirm uvx mcp-atlassian and npx -y @zereight/mcp-gitlab start 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 tools
compose_jira_updateCompose Jira UpdateD

Render a Jira update after a real GitLab merge request exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYes
transitionNo
mergeRequestUrlYes

TDQS

D1.8/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYes
jiraUpdateYes
mergeRequestYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
branchNo
labelsNo
transitionNo
validationNo
parentIssueYes
reviewerIdsNo
targetBranchNo
gitlabProjectIdNo
releaseNoteScopeNoauto

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv0.1.0
    • First observedcompose_jira_update
    • First observedfinalize_delivery
    • First observedprepare_delivery

TDQS

B3/5.0
Disambiguation5/5

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.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (prepare, compose, finalize) with clear action-first naming. The style is uniform and predictable.

Tool Count4/5

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.

Completeness4/5

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

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    Provides 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.
    4
    1
    -
  • A
    license
    B
    quality
    D
    maintenance
    A 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.
    54
    MIT

Latest Blog Posts

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