# @kody/atlassian-mcp — agent notes Human setup and intent live in [`README.md`](./README.md). This file is for agents: imports, smoke checks, snippets, and edge cases. Never paste tokens. Do not disable live webhooks or jobs. ## Auth | Lane | Credential | Notes | | --- | --- | --- | | Preferred | MCP server `atlassian` | `kody.mcpServerAdd` → authorize `authUrl`. Helpers use `kody.mcp["atlassian"]`. | | Fallback | `@kody/jira` OAuth / API token | BYO 3LO or email + API token. See https://kody.codes/@kody/jira | Do not register an Atlassian OAuth app for the one-click MCP path. After fork, connect **the caller's** Atlassian site — do not treat live `@kody/atlassian-mcp` as yours. MCP *server* name stays `atlassian`; `-mcp` is only the Kody package id. ## Import paths | Export | Import | | --- | --- | | package overview / MCP setup | `kody:@kody/atlassian-mcp` | | smoke-test | `kody:@kody/atlassian-mcp/smoke-test` | | search-jira | `kody:@kody/atlassian-mcp/search-jira` | | search-confluence | `kody:@kody/atlassian-mcp/search-confluence` | Prefer static `kody:@kody/atlassian-mcp/...` imports from `execute`. Do not lead with `packages.invoke`. ## Smoke test (read-only) ```js import smokeTest from 'kody:@kody/atlassian-mcp/smoke-test' export default async function main() { return await smokeTest() // MCP connected => { ok: true, live: true, via: 'mcp', ... } // otherwise => { ok: true, live: false, setup: { mcp, oauthApiFallback } } } ``` ## Common snippets Search Jira: ```js import searchJira from 'kody:@kody/atlassian-mcp/search-jira' export default async function main() { return await searchJira({ jql: 'assignee = currentUser() ORDER BY updated DESC', maxResults: 10, }) } ``` Search Confluence: ```js import searchConfluence from 'kody:@kody/atlassian-mcp/search-confluence' export default async function main() { return await searchConfluence({ query: 'onboarding', limit: 10, }) } ``` Add MCP server (setup, not a package export): ```js import { kody } from 'kody:runtime' export default async function main() { return await kody.mcpServerAdd({ name: 'atlassian', url: 'https://mcp.atlassian.com/v1/mcp/authv2', }) // open returned authUrl, then retry smoke-test / search helpers } ``` ## Edge cases / fork notes - This package is MCP-only; OAuth/API-token work belongs in `@kody/jira`. - Search only returns issues/pages the authorizing user can already see. - Helpers try several MCP tool name variants; missing tools surface as setup errors, not silent empty lists. - Never paste Atlassian API tokens or OAuth client secrets into chat or logs.