A side-by-side look at the MCP Server Atlassian Confluence and Hirly MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose MCP Server Atlassian Confluence for workplace & productivity work as a local process; choose Hirly for workplace & productivity. You can also run both side by side in one mcpServers block.
ATLASSIAN_SITE_NAME, ATLASSIAN_USER_EMAIL, ATLASSIAN_API_TOKEN.conf_get, conf_post, conf_put.get_matches, get_job, save_resume.Rows where the two servers differ are marked.
| Spec | H Hirly | |
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 63/100 · Good | 48/100 · Fair |
| Install command | Confirmed | Not confirmed yet |
| Transport | Local subprocess (stdio) | — |
| Auth | API key required | OAuth 2.0 |
| Pricing | BYOK (pay the provider) | Freemium |
| Required env vars | ATLASSIAN_SITE_NAMEATLASSIAN_USER_EMAILATLASSIAN_API_TOKEN | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 62 | 0 |
| Directory activity | 3 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 5 | 9 |
| Full listing | View MCP Server Atlassian Confluence | View Hirly |
conf_getRead any Confluence data. Returns TOON format by default (30-60% fewer tokens than JSON).
**IMPORTANT - Cost Optimization:**
- ALWAYS use `jq` param to filter response fields. Unfiltered responses are very expensive!
- Use `limit` query param to restrict result count (e.g., `limit: "5"`)
- If unsure about available fields, first fetch ONE item with `limit: "1"` and NO jq filter to explore the schema, then use jq in subsequent calls
**Schema Discovery Pattern:**
1. First call: `path: "/wiki/api/v2/spaces", queryParams: {"limit": "1"}` (no jq) - explore available fields
2. Then use: `jq: "results[*].{id: id, key: key, name: name}"` - extract only what you need
**Output format:** TOON (default, token-efficient) or JSON (`outputFormat: "json"`)
**Common paths:**
- `/wiki/api/v2/spaces` - list spaces
- `/wiki/api/v2/pages` - list pages (use `space-id` query param)
- `/wiki/api/v2/pages/{id}` - get page details
- `/wiki/api/v2/pages/{id}/body` - get page body (`body-format`: storage, atlas_doc_format, view)
- `/wiki/rest/api/search` - search content (`cql` query param)
**JQ examples:** `results[*].id`, `results[0]`, `results[*].{id: id, title: title}`
API reference: https://developer.atlassian.com/cloud/confluence/rest/v2/conf_postCreate Confluence resources. Returns TOON format by default (token-efficient).
**IMPORTANT - Cost Optimization:**
- Use `jq` param to extract only needed fields from response (e.g., `jq: "{id: id, title: title}"`)
- Unfiltered responses include all metadata and are expensive!
**Output format:** TOON (default) or JSON (`outputFormat: "json"`)
**Common operations:**
1. **Create page:** `/wiki/api/v2/pages`
body: `{"spaceId": "123456", "status": "current", "title": "Page Title", "parentId": "789", "body": {"representation": "storage", "value": "<p>Content</p>"}}`
2. **Create blog post:** `/wiki/api/v2/blogposts`
body: `{"spaceId": "123456", "status": "current", "title": "Blog Title", "body": {"representation": "storage", "value": "<p>Content</p>"}}`
3. **Add label:** `/wiki/api/v2/pages/{id}/labels` - body: `{"name": "label-name"}`
4. **Add comment:** `/wiki/api/v2/pages/{id}/footer-comments`
API reference: https://developer.atlassian.com/cloud/confluence/rest/v2/conf_putReplace Confluence resources (full update). Returns TOON format by default.
**IMPORTANT - Cost Optimization:**
- Use `jq` param to extract only needed fields from response
- Example: `jq: "{id: id, version: version.number}"`
**Output format:** TOON (default) or JSON (`outputFormat: "json"`)
**Common operations:**
1. **Update page:** `/wiki/api/v2/pages/{id}`
body: `{"id": "123", "status": "current", "title": "Updated Title", "spaceId": "456", "body": {"representation": "storage", "value": "<p>Content</p>"}, "version": {"number": 2}}`
Note: version.number must be incremented
2. **Update blog post:** `/wiki/api/v2/blogposts/{id}`
Note: PUT replaces entire resource. Version number must be incremented.
API reference: https://developer.atlassian.com/cloud/confluence/rest/v2/conf_patchPartially update Confluence resources. Returns TOON format by default.
**IMPORTANT - Cost Optimization:** Use `jq` param to filter response fields.
**Output format:** TOON (default) or JSON (`outputFormat: "json"`)
**Common operations:**
1. **Update space:** `/wiki/api/v2/spaces/{id}`
body: `{"name": "New Name", "description": {"plain": {"value": "Desc", "representation": "plain"}}}`
2. **Update comment:** `/wiki/api/v2/footer-comments/{id}`
Note: Confluence v2 API primarily uses PUT for updates.
API reference: https://developer.atlassian.com/cloud/confluence/rest/v2/conf_deleteDelete Confluence resources. Returns TOON format by default.
**Output format:** TOON (default) or JSON (`outputFormat: "json"`)
**Common operations:**
- `/wiki/api/v2/pages/{id}` - Delete page
- `/wiki/api/v2/blogposts/{id}` - Delete blog post
- `/wiki/api/v2/pages/{id}/labels/{label-id}` - Remove label
- `/wiki/api/v2/footer-comments/{id}` - Delete comment
- `/wiki/api/v2/attachments/{id}` - Delete attachment
Note: Most DELETE endpoints return 204 No Content on success.
API reference: https://developer.atlassian.com/cloud/confluence/rest/v2/get_matchesLists the next jobs hirly matched to your resume that you have not acted on yet, best first.get_jobGives your assistant one job's full posting, how your resume meets its requirements, and the hiring contact when hirly can find one.save_resumeSaves a resume your assistant tailored as a new version in your hirly account. Your main resume changes only if you ask.record_applicationMarks a job as applied in hirly — after you confirm you sent it — with the resume version you used.get_profileShows your plan, whether your profile is set up, and a short summary of your main resume.get_pending_questionsLists the applications that are paused because the employer's form asked something only you can answer, with the questions.answer_questionsSends the answers you give in the chat, so hirly can finish the application. Only if you allowed applying.submit_applicationStarts hirly applying to one job for you, after you confirm that job in the chat. Only if you allowed applying.get_application_statusSays where an application stands: queued, applying, waiting for your answers, applied, or stopped and why.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"aashari-mcp-server-atlassian-confluence": {
"command": "npx",
"args": [
"-y",
"@aashari/mcp-server-atlassian-confluence"
],
"env": {
"ATLASSIAN_SITE_NAME": "YOUR_ATLASSIAN_SITE_NAME_HERE",
"ATLASSIAN_USER_EMAIL": "YOUR_ATLASSIAN_USER_EMAIL_HERE",
"ATLASSIAN_API_TOKEN": "YOUR_ATLASSIAN_API_TOKEN_HERE"
}
}
}
}
No confirmed install command for Hirly yet — follow the setup steps linked from its listing page rather than a guessed package name.