@stubbedev/atlassian-mcp 0.5.17 → 0.5.18
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 +34 -24
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -548,28 +548,33 @@ For Bitbucket, a source that already appears in the description or comment text
|
|
|
548
548
|
by the attachment markup — that works for URLs too, so writing ``
|
|
549
549
|
and passing the same URL in `attachments` keeps your caption and swaps in the uploaded file.
|
|
550
550
|
|
|
551
|
-
**
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
>
|
|
551
|
+
**Confined hosts.** A host may run this server sandboxed, in which case a path it was not granted
|
|
552
|
+
comes back as a permission error while URL and `data:` sources keep working — neither needs the
|
|
553
|
+
filesystem. The startup log names the config file it read, or the error it got trying, which is the
|
|
554
|
+
quickest way to tell whether the filesystem is restricted on your setup. The same applies to
|
|
555
|
+
chaining with another MCP server: a screenshot another server wrote to *its* temp directory is only
|
|
556
|
+
reachable here if this process is allowed to read that path.
|
|
557
|
+
|
|
558
|
+
> Files a user attaches to the chat itself cannot be uploaded from these arguments: MCP has no
|
|
559
|
+
> mechanism for passing conversation attachments to a server, and the model cannot re-emit image
|
|
559
560
|
> bytes it was shown. Use [`attach_files`](#the-upload-panel-mcp-apps) — the user re-picks or pastes
|
|
560
561
|
> the file into a panel that uploads it directly — or give this server a URL or a readable path.
|
|
561
562
|
|
|
562
563
|
### The upload panel (MCP Apps)
|
|
563
564
|
|
|
564
|
-
`attach_files` opens a file picker **inside the chat**. It exists
|
|
565
|
-
|
|
565
|
+
`attach_files` opens a file picker **inside the chat**. It exists for the file that has no
|
|
566
|
+
path to pass:
|
|
566
567
|
|
|
567
|
-
- a
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
568
|
+
- a screenshot the user pasted or dragged into the conversation is not on disk anywhere
|
|
569
|
+
this server could look, and MCP has no client-to-server file transfer to carry it — the
|
|
570
|
+
model cannot re-emit bytes it was shown.
|
|
571
|
+
[SEP-2631](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/2631)
|
|
572
|
+
would add one; it is still a draft;
|
|
573
|
+
- and a local path only works if the server is both on the same machine *and* permitted to
|
|
574
|
+
read it, which a host that confines the server may not allow.
|
|
575
|
+
|
|
576
|
+
Where a readable path or a URL does exist, the `attachments` arguments remain the better
|
|
577
|
+
route — no user interaction at all.
|
|
573
578
|
|
|
574
579
|
[MCP Apps](https://github.com/modelcontextprotocol/ext-apps) routes around both. The tool
|
|
575
580
|
declares a `ui://` resource, the host renders it as an iframe, and that iframe is an
|
|
@@ -588,14 +593,19 @@ never fills in `files` and never sees the file contents. Files are capped at 12
|
|
|
588
593
|
since the bytes ride the JSON-RPC channel as base64 — anything larger should go up by URL.
|
|
589
594
|
|
|
590
595
|
Support is negotiated: hosts advertise MCP Apps through the `io.modelcontextprotocol/ui`
|
|
591
|
-
extension at `initialize`. Where it is absent — **Claude Code today** —
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
596
|
+
extension at `initialize`. Where it is absent — **Claude Code today** — the whole surface is
|
|
597
|
+
hidden rather than merely degraded: `attach_files` is filtered out of `tools/list`, the
|
|
598
|
+
widget is filtered out of `resources/list`, and reading it is refused (a client that fetched
|
|
599
|
+
it anyway would take a few hundred KB of inlined SDK into its context for a page it cannot
|
|
600
|
+
draw). Such a host sees exactly the tools it saw before, and is told to ask for a path or
|
|
601
|
+
URL instead.
|
|
602
|
+
|
|
603
|
+
The panel is one self-contained HTML document (`ui/upload.html`, ~19 KB), because the host
|
|
604
|
+
serves it under `default-src 'none'`: no CDN, no second resource, no build step. It carries
|
|
605
|
+
its own ~2 KB MCP Apps bridge rather than the official browser SDK — a view only needs one
|
|
606
|
+
`ui/initialize` round trip, an `initialized` notification, `tool-input` notifications in and
|
|
607
|
+
`tools/call` requests out, and the SDK brings ~400 KB of zod to validate messages this page
|
|
608
|
+
already treats as untrusted. Bundling it with esbuild makes it larger, not smaller.
|
|
599
609
|
|
|
600
610
|
### Attachment decoding pipeline
|
|
601
611
|
|