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.