server-pdf: read_pdf_bytes hides the byte payload in structuredContent only — text content is a bare size summary, so CLI clients can't read the PDF
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 65/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- api
Direzione di ricerca
Inizia dal punto di ingresso dello strumento server-pdf read_pdf_bytes e traccia il modo in cui la sua risposta costruisce content[] e structuredContent. Riproduci la chiamata stdio con un piccolo intervallo di byte, quindi verifica che il testo del content[] restituito esponga il payload per i client che supportano solo testo, preservando al contempo i metadati dei byte e data esistenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
@modelcontextprotocol/server-pdf v2.0.0's read_pdf_bytes returns the requested bytes only inside structuredContent. The content[0].text block contains just a size summary like 256 bytes at 0/641720 with no data.
Clients that render only content[] text blocks (e.g. terminal/CLI MCP clients like opencode) never see the bytes — they are silently dropped. The description also warns "The model should NOT call this tool directly", yet it is the only server-side way to get raw PDF content when the interactive viewer path is unavailable.
Reproduction
- Run the server:
npx @modelcontextprotocol/server-pdf --stdio <allowed-dir> - Send an
initializehandshake, then:{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"read_pdf_bytes","arguments":{"url":"/path/to/file.pdf","offset":0,"byteCount":256}}} - Raw server response (verified by talking to the stdio transport directly):
The base64{ "content": [{"type": "text", "text": "256 bytes at 0/641720"}], "structuredContent": { "url": "/path/to/file.pdf", "bytes": "JVBERi0xLjQ...", "offset": 0, "byteCount": 256, "totalBytes": 641720, "hasMore": true } }bytesdecode to the real%PDF-1.4header, so the data is correct — it's just unreachable to text-only clients.
Expected behavior
The byte payload should be reachable through the standard content[] text block, e.g. include the JSON payload (or the base64 bytes) in the text content, not only in structuredContent. Any MCP client that renders content[] should be able to consume the data without requiring structured-content support.
Related issue: display_pdf + interact requires an interactive viewer
display_pdf returns a viewUUID and interact get_text waits for the viewer iframe to poll within 8 seconds ("Viewer never connected for viewUUID ... (no poll within 8s)"). In headless/CLI contexts no iframe mounts, so text extraction via this path always fails. There is no non-viewer server-side text-extraction tool, so headless clients have no working path to PDF text today.
Environment
- Package:
@modelcontextprotocol/server-pdf2.0.0 (installed via npx, run with--stdiounder Docker isolation) - Client: opencode CLI (terminal MCP client)
- The server runs fine: connection, init, and tool discovery all succeed; only content delivery is affected.
- Lingua principale
- TypeScript
- Stelle
- 2.9k
- Fork
- 394
- Merge medio
- 4h 35m
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/ext-apps
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
modelcontextprotocol/ext-apps#786 ·
I maintainer di solito rispondono entro 1 giorno
-
Reference host renders tool.name in the app header; base spec display precedence is title → annotations.title → nameForse già presa @Michael-WhiteCapData l’ha presa 17 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
modelcontextprotocol/ext-apps#767 ·
I maintainer di solito rispondono entro 1 giorno
-
Documentation for MCP Apps does not match 2026-07-28 specificationForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
modelcontextprotocol/ext-apps#742 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
modelcontextprotocol/ext-apps#711 ·
I maintainer di solito rispondono entro 1 giorno
-
Spec: Deprecate SamplingAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
modelcontextprotocol/ext-apps#706 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di modelcontextprotocol/ext-apps
Issue simili
-
Upgrade node-libzim to 4.7.0Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
openzim/mwoffliner#2933 ·
I maintainer di solito rispondono entro 1 giorno
-
Use the README category name for website links and submissionsForse già presa @dajiaohuang l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
birobirobiro/awesome-shadcn-ui#647 ·
I maintainer di solito rispondono entro 2 giorni
-
Add: Valea Prahovei TV RO SDApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
Urigo/accounter-fullstack#4604 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno