Minimal MCP server focused on reading Confluence documents.
This server is intentionally small so you can pair it with other MCP servers (for example ADO MCP) and fetch Confluence content only when a comment or description contains a Confluence link.
confluence_read_document- Input:
urlorpage_id - Output: raw markdown string (not JSON) with YAML frontmatter + markdown body
- Format:
--- title: ... version: ... space_name: ... url: ... --- # markdown content...
- Input:
confluence_search_documents- Input: search
query, optionallimit - Output: lightweight page matches
- Input: search
confluence_read_documents_from_text- Input: free-form text (for example ADO comments/descriptions)
- Output: JSON object with
detected_urls,documents, anderrors - Note: each document in
documentsincludes markdown undercontent
confluence_get_child_pages- Input:
urlorpage_id, optionallimit, optionalcursor - Output: direct children (page/folder/whiteboard/etc) +
next_cursorfor pagination
- Input:
The server reads settings from a .config file in the project directory.
Environment variables still take precedence over .config values.
Start by copying .config.example to .config and filling your credentials.
cp .config.example .configSupported keys in .config:
Required:
CONFLUENCE_URL
Authentication (required):
CONFLUENCE_USERNAMEandCONFLUENCE_API_TOKEN
Optional:
CONFLUENCE_TIMEOUT(default:30)CONFLUENCE_SSL_VERIFY(default:true)MCP_CONFLUENCE_CONFIG_FILE(optional env var to point to a custom config file path)
cd confluence-fetch-mcp
make installmake runThis uses values from .config by default.
make test # run tests
make format # format with black
make typecheck # type-check with mypy{
"mcpServers": {
"confluence": {
"command": "confluence-fetch-mcp",
"env": {
"CONFLUENCE_URL": "https://your-domain.atlassian.net/wiki",
"CONFLUENCE_USERNAME": "you@example.com",
"CONFLUENCE_API_TOKEN": "..."
}
}
}
}When your ADO MCP returns comments or descriptions, call:
confluence_read_documents_from_textusing the raw comment/description text.- If no URLs are found, call
confluence_search_documentsusing extracted title text.