skim-pdf-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_open_documentsA | List the PDFs open in Skim, frontmost first: name, path, page count, current page. |
| get_reading_contextA | Everything about what the reader is looking at, in one call. Returns the front document (name, path), its current page, the live text selection (explicitly empty when nothing is selected), pending red underlines with their quoted text, page, color and comment, the page's text layer, and a PNG of the page with the selection (blue, only when it is on the rendered page) and the pending underlines on that page (red) outlined. The image is the ground truth for math; the text layer may garble formulas. Read-only. |
| get_pending_underlinesA | List pending (red) underlines of a document in reading order, with quoted text. |
| mark_processedA | Recolor pending (red) underlines gray by id. MODIFIES the reader's Skim document. Only run after the reader has approved. Highlights and underlines of other colors are skipped, never changed. Nothing is deleted. |
| clear_processedA | PERMANENTLY DELETE processed (gray) underlines by id. MODIFIES the Skim document. Only run after the reader has explicitly approved clearing these ids. Deletes exactly the ids passed, and only if they are gray underlines: pending (red) underlines, highlights and other markup are skipped. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
The mutation tools (mark_processed, clear_processed) and their read counterparts are clearly distinct. However, get_reading_context already bundles the front document, its pending underlines, and page info, which overlaps with get_pending_underlines and get_open_documents, so an agent may be unsure when to call the narrow getters versus the aggregate.
All names use snake_case with a verb-first, noun-object pattern (get_/mark_/clear_ + resource). The verb variation is semantically meaningful (reads vs. state mutations) rather than inconsistent.
Five tools is well-scoped for a Skim reading-support server: two read getters, one aggregate context call, and two annotation-state mutations. Every tool earns its place with no filler.
The pending-red → gray → deleted lifecycle is fully covered, plus document listing and rich reading context. The main gap is the absence of an inverse to mark_processed (no way to revert gray back to red) or any annotation-creation ability, though the core workflow is complete.