> ## Documentation Index
> Fetch the complete documentation index at: https://kowshik-93.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecting MCP servers

> Azure DevOps and Jira, for both Claude Code and Copilot — different file, different key.

Requirements are read through the **connected MCP server** for your provider — never raw REST.
`init` already seeded both config files with placeholders (unless you passed `--no-mcp`); this
page is about filling them in.

<Warning>
  Claude Code and Copilot use **different files and different top-level keys** for MCP config.
  `.mcp.json` is not read by Copilot; `.vscode/mcp.json` is not read by Claude Code. Both need to
  exist and stay in sync if you use both hosts.
</Warning>

| Host                     | File                    | Top-level key |
| ------------------------ | ----------------------- | ------------- |
| Claude Code              | `.mcp.json` (repo root) | `mcpServers`  |
| GitHub Copilot (VS Code) | `.vscode/mcp.json`      | `servers`     |

## Azure DevOps

```json theme={null}
{
  "mcpServers": {
    "azure-devops": {
      "command": "npx",
      "args": ["-y", "@azure-devops/mcp", "<your-ado-org>"]
    }
  }
}
```

Replace `<your-ado-org>` with your organization name (the part before `.visualstudio.com` or after
`dev.azure.com/`). Authentication is via `az login` (Azure CLI) — make sure you've logged in before
your first `/shipflow` run.

## Jira / Atlassian

```json theme={null}
{
  "mcpServers": {
    "atlassian": {
      "type": "sse",
      "url": "https://mcp.atlassian.com/v1/sse"
    }
  }
}
```

This is Atlassian's remote MCP — it handles OAuth in-browser on first use, no local install needed.

## Copilot: same servers, different wrapper

`.vscode/mcp.json` uses the exact same server definitions, just under `servers` instead of
`mcpServers`:

```json theme={null}
{
  "servers": {
    "azure-devops": {
      "command": "npx",
      "args": ["-y", "@azure-devops/mcp", "<your-ado-org>"]
    },
    "atlassian": {
      "type": "sse",
      "url": "https://mcp.atlassian.com/v1/sse"
    }
  }
}
```

## Only enable what you need

Set only the server(s) that match your `shipflow.config.md` → `requirements.provider`. Enabling
both is fine if your team uses both providers across different repos, but each `/shipflow` run only
calls the one matching that repo's configured provider.

## Verifying the connection

If the required MCP server isn't connected, `feature-context` will say so plainly rather than
falling back to raw REST or fabricating the work item's contents — that's by design, not a bug to
work around. If a run stops with an MCP-not-connected message, check your host's MCP status (in
Claude Code, `/mcp`; in Copilot, the MCP servers panel) before re-running.
