MCP server for self-hosted Confluence Data Center or Server instances.
inhouse_confluence_mcp
In-house Confluence (Data Center/Server) MCP server implementation. Default mode is read-only, and write tools are controlled by policy.
Tools
confluence_list_spacesconfluence_search_cqlconfluence_get_contentconfluence_get_labelsconfluence_get_childrenconfluence_get_attachmentsconfluence_get_commentsconfluence_scan_contentconfluence_get_likes(experimental, off by default)confluence_create_page(write, off by default)confluence_update_page(write, off by default)confluence_add_label(write, off by default)confluence_add_comment(write, off by default)
Quick Start
- Copy
.env.exampleto.env - Set required values:
CONFLUENCE_BASE_URLCONFLUENCE_AUTH_MODE(patorbasic)CONFLUENCE_PATorCONFLUENCE_USERNAME/CONFLUENCE_PASSWORD
- Install and run:
python -m pip install -e .
confluence-mcp
Or:
python -m confluence_mcp.main
OpenCode Registration
Use OpenCode local MCP config with a command array and environment object.
{
"mcp": {
"inhouse-confluence": {
"type": "local",
"command": [
"C:\\Users\\jae_chul.lee\\inhouse_confluence_mcp\\.venv\\Scripts\\python.exe",
"-m",
"confluence_mcp.main",
"--env-file",
"C:\\Users\\jae_chul.lee\\inhouse_confluence_mcp\\.env"
],
"environment": {
"PYTHONIOENCODING": "utf-8"
}
}
}
}
Notes:
- Do not rely on
Activate.ps1in MCP commands. - Prefer direct venv python path.
--env-filemakes startup independent fromcwd.- Optional override: set
CONFLUENCE_MCP_ENV_FILEinenvironment.
.env Loading Rules
On startup, the server looks for .env in this order:
--env-filepathCONFLUENCE_MCP_ENV_FILE- Current working directory (
.env,.env.local) - Python executable neighborhood (useful for
.venvlayout) - Project/module directory
If no file is found, startup logs searched paths.
Space Auto-Discovery
- If
ALLOWED_SPACESis empty andAUTO_DISCOVER_SPACES=true, the server auto-loads available space keys on startup. DENIED_SPACESis optional. Use it only when you need an explicit sensitive-space blocklist.- To generate a ready-to-copy env line manually:
confluence-mcp-sync-spaces
- Output file:
logs/spaces_discovered.json
Recommended Settings
- Keep
WRITE_ENABLED=falseinitially - Configure
ALLOWED_SPACESfirst - Add
DENIED_SPACESonly for sensitive spaces - Keep
EXPERIMENTAL_LIKES=falseunless needed
Logs
- Audit log path:
AUDIT_LOG_PATH(default:logs/audit.jsonl) - Fields: timestamp, tool, status, latencyMs, traceId, error
Tests
python -m unittest discover -s tests -v
Tool Probe on Startup
- By default, the server probes API permissions at startup and exposes only reachable tools.
- Toggle all probes with
TOOL_PROBE_ON_STARTUP=true|false. - Disable only space probe with
SPACE_PROBE_ON_STARTUP=false. - When
SPACE_PROBE_ON_STARTUP=false, user-declaredALLOWED_SPACESis trusted for policy checks. - If
/rest/api/spaceis blocked,confluence_list_spacesis hidden. - If
/rest/api/content/searchis blocked, read/write content tools are hidden.
Tools (13)
confluence_list_spacesLists available Confluence spaces.confluence_search_cqlSearches content using Confluence Query Language (CQL).confluence_get_contentRetrieves content from a specific page or blog post.confluence_get_labelsGets labels associated with a piece of content.confluence_get_childrenRetrieves child pages of a specific page.confluence_get_attachmentsLists attachments for a specific page.confluence_get_commentsRetrieves comments from a page.confluence_scan_contentScans content across the instance.confluence_get_likesRetrieves likes for a piece of content.confluence_create_pageCreates a new page in Confluence.confluence_update_pageUpdates an existing Confluence page.confluence_add_labelAdds a label to a piece of content.confluence_add_commentAdds a comment to a page.Environment Variables
CONFLUENCE_BASE_URLrequiredThe base URL of the Confluence instance.CONFLUENCE_AUTH_MODErequiredAuthentication mode, either 'pat' or 'basic'.CONFLUENCE_PATPersonal Access Token for authentication.CONFLUENCE_USERNAMEUsername for basic authentication.CONFLUENCE_PASSWORDPassword for basic authentication.Configuration
{"mcp":{"inhouse-confluence":{"type":"local","command":["python","-m","confluence_mcp.main"],"environment":{"CONFLUENCE_BASE_URL":"https://your-confluence-url","CONFLUENCE_AUTH_MODE":"pat","CONFLUENCE_PAT":"your-token"}}}}