Skip to main content
Glama

ai-sdlc-harness-mcp

A small MCP (Model Context Protocol) server built while wiring an AI-assisted SDLC harness for a Stockbook app project. It currently ships one tool: create_confluence_page.

Why this exists

While integrating Claude with our Atlassian Cloud site, the hosted Rovo MCP server's createConfluencePage tool returned a persistent 404 on every attempt, across:

  • both a space key and a resolved numeric spaceId

  • parentId present and absent

  • status: current and status: draft

  • multiple different spaces

  • two independently (re-)connected Rovo MCP instances

Meanwhile every read operation on the same authenticated Rovo session succeeded (getConfluenceSpaces, getConfluencePage, searchConfluenceUsingCql, etc.), and the OAuth session carried the write:page:confluence scope. To rule out a permissions problem, we manually created a page through the real Confluence web UI with the same account -- it worked immediately. That isolates the failure to the hosted createConfluencePage route itself, not to credentials or scopes.

This package is a minimal, working replacement: it talks to the Confluence Cloud REST API v2 directly over HTTPS Basic auth (Atlassian account email + API token), the same way Atlassian's own documented API examples do.

Setup

npm install
npm run build

Copy .env.example to .env and fill in:

ATLASSIAN_EMAIL=you@example.com
ATLASSIAN_API_TOKEN=...   # https://id.atlassian.com/manage-profile/security/api-tokens
CONFLUENCE_SITE=https://your-site.atlassian.net

Running as an MCP server

Point an MCP client (e.g. Claude Code's mcp config) at:

{
  "mcpServers": {
    "ai-sdlc-harness": {
      "command": "node",
      "args": ["/absolute/path/to/ai-sdlc-harness-mcp/dist/index.js"],
      "env": {
        "ATLASSIAN_EMAIL": "you@example.com",
        "ATLASSIAN_API_TOKEN": "...",
        "CONFLUENCE_SITE": "https://your-site.atlassian.net"
      }
    }
  }
}

Tool: create_confluence_page

Field

Type

Required

Notes

spaceId

string

yes

Numeric space ID, or a space key (e.g. DAS) — resolved for you

title

string

yes

Page title

bodyHtml

string

yes

Confluence storage-format HTML, not Markdown, not editor paste

parentId

string

no

Numeric ID of the parent page

status

string

no

current (default, published) or draft

bodyHtml must be Confluence storage format (plain HTML-like tags: <p>, <h2>, <ul>, <strong>, etc.) — the same format the REST API itself expects. It is not aware of the visual editor's proprietary macros beyond what you supply verbatim.

Known limitation

This server calls the Atlassian Cloud REST API directly over HTTPS, so it requires outbound network access to your *.atlassian.net site. If your network enforces an egress allowlist that blocks that host (as ours did during development), this tool will fail the same way plain curl would — that's an organization network-policy question, not a bug in this code.

License

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/DungNV512/ai-sdlc-harness-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server