@stubbedev/atlassian-mcp 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -254,6 +254,48 @@ instead of `npx`. On these paths `ffmpeg`/`ffprobe` must be available on `PATH`
|
|
|
254
254
|
(or set `ATLASSIAN_MCP_FFMPEG_PATH` / `ATLASSIAN_MCP_FFPROBE_PATH`); the npm
|
|
255
255
|
wrapper bundles them automatically.
|
|
256
256
|
|
|
257
|
+
### Running as an HTTP server (shared / behind a proxy)
|
|
258
|
+
|
|
259
|
+
By default the server speaks MCP over **stdio** (one process per client, launched
|
|
260
|
+
by your editor). It can instead run as a long-lived **Streamable HTTP** server that
|
|
261
|
+
many clients share — useful behind a reverse proxy:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
atlassian-mcp --http # binds 127.0.0.1:7337
|
|
265
|
+
atlassian-mcp --http 127.0.0.1:9000 # custom address
|
|
266
|
+
ATLASSIAN_MCP_HTTP=1 atlassian-mcp # same, via env
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
- Single endpoint `POST /mcp` (JSON-RPC) plus an optional `GET /mcp` SSE stream that
|
|
270
|
+
carries server→client requests (`roots/list`, elicitation). The server is **stateful**:
|
|
271
|
+
`initialize` mints a session and returns an `Mcp-Session-Id` header, which the client
|
|
272
|
+
**must** echo on every subsequent request and on the SSE stream. Requests with a
|
|
273
|
+
missing/unknown/expired session id get **HTTP 404** so the client re-initializes
|
|
274
|
+
(standard MCP-client behaviour). Each connected client/worktree is an isolated session.
|
|
275
|
+
- **Auth:** on a loopback bind no token is needed. Binding a non-loopback address
|
|
276
|
+
**requires** `ATLASSIAN_MCP_HTTP_TOKEN` (sent by clients as `Authorization: Bearer …`);
|
|
277
|
+
the server refuses to start otherwise. Terminate TLS at your proxy.
|
|
278
|
+
- **`GET /healthz`** is an unauthenticated liveness probe (returns `ok`) for proxies/load
|
|
279
|
+
balancers. Idle sessions are evicted after 1h.
|
|
280
|
+
|
|
281
|
+
**Repo context comes from the client, not the server's working directory.** Tools that
|
|
282
|
+
need a repo (the `git_*` tools, `get_dev_context`, `start_work`, `complete_work`, and
|
|
283
|
+
Bitbucket project/repo auto-detection) resolve it in this order: an explicit `repoPath`
|
|
284
|
+
argument → the client's **MCP workspace roots** (the server asks via `roots/list`, caches
|
|
285
|
+
per session, and refreshes on `notifications/roots/list_changed`) → the process cwd (stdio
|
|
286
|
+
only). So one shared HTTP server handles many worktrees: each client's own workspace drives
|
|
287
|
+
its calls. When a session exposes **several** roots (multiple worktrees), a tool with no
|
|
288
|
+
`repoPath` uses the first git-repo root; pass `repoPath` (an absolute path, or a worktree
|
|
289
|
+
name/basename that matches one of the roots) to target a specific worktree. For Bitbucket,
|
|
290
|
+
passing `projectKey`+`repoSlug` explicitly skips repo detection entirely. The repos must be
|
|
291
|
+
reachable on the server's host (the git tools run `git` locally).
|
|
292
|
+
|
|
293
|
+
Client config for an already-running HTTP server (Claude Code example):
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
claude mcp add --transport http atlassian http://127.0.0.1:7337/mcp
|
|
297
|
+
```
|
|
298
|
+
|
|
257
299
|
### Attachment decoding pipeline
|
|
258
300
|
|
|
259
301
|
The attachment tools (`jira_get_attachment`, `bitbucket_get_attachment`) decode binary attachments into model-readable content before returning them:
|
|
@@ -287,6 +329,8 @@ pure-Go implementation shell out to external binaries:
|
|
|
287
329
|
|
|
288
330
|
| Variable | Purpose | Default |
|
|
289
331
|
| --- | --- | --- |
|
|
332
|
+
| `ATLASSIAN_MCP_HTTP` | Run as a Streamable HTTP server instead of stdio. `1`/`true` → `127.0.0.1:7337`; or set an explicit `host:port`. Same as `--http`. | unset (stdio) |
|
|
333
|
+
| `ATLASSIAN_MCP_HTTP_TOKEN` | Bearer token for HTTP mode. Optional on loopback binds; **required** on non-loopback binds. | unset |
|
|
290
334
|
| `ATLASSIAN_MCP_FFMPEG_PATH` | Path to `ffmpeg` binary. | npm: bundled `ffmpeg-static`; otherwise `ffmpeg` on `PATH` |
|
|
291
335
|
| `ATLASSIAN_MCP_FFPROBE_PATH` | Path to `ffprobe` binary. | npm: bundled `ffprobe-static`; otherwise `ffprobe` on `PATH` |
|
|
292
336
|
| `ATLASSIAN_MCP_TMP_TTL_DAYS` | Auto-saved attachments older than this are pruned. | `7` |
|