shotlog-mcp
Let your AI assistant take the screenshots for your report.
An MCP server for macOS. It captures a specific window, saves it with a sequential number and a caption (activity, command, result), and puts everything together into a Markdown report you can turn into a PDF.
It was built for a university OS lab where every step had to be backed by a screenshot, on a Mac and a Windows laptop at the same time. It works the same way for QA evidence, tutorials, runbooks and bug reports.
What it does
| Tool | Description |
|---|---|
list_windows |
Lists the visible windows (app, title, size). |
save_screenshot |
Captures one window, picked by app and/or title (front-most by default), and saves it as 001_name.png together with its caption. |
update_caption |
Fills in or fixes the caption afterwards. |
list_screenshots |
Shows the log in order. |
pull_remote_screenshots |
Fetches new screenshots from another machine (e.g. Windows' Pictures\Screenshots) over SCP and numbers them in the same sequence. |
export_report |
Writes report.md: every screenshot with its caption, in order. |
Then just ask: "Run ssh -V in the terminal, take a screenshot of it and caption it as step 3."
Install
Requires macOS, Python 3.11+ and uv.
Claude Code
claude mcp add shotlog -- uvx shotlog-mcp
Claude Desktop / other MCP clients
{
"mcpServers": {
"shotlog": { "command": "uvx", "args": ["shotlog-mcp"] }
}
}
The first capture needs the Screen Recording permission for the app that runs the server (Terminal, iTerm, VS Code, Claude…): System Settings → Privacy & Security → Screen Recording.
Configuration
| Variable | Default | |
|---|---|---|
SHOTLOG_DIR |
~/shotlog |
Where screenshots, manifest.json and report.md are saved. |
Use one folder per project: claude mcp add shotlog -e SHOTLOG_DIR=~/lab3/shots -- uvx shotlog-mcp
Remote screenshots (optional)
To use pull_remote_screenshots, the other machine needs an SSH server (on Windows: Settings → Optional features → OpenSSH Server) and key-based login from your Mac, so that no password is asked for.
Report to PDF
cd ~/shotlog && pandoc report.md -o report.pdf
Development
uv run --group dev pytest
License
MIT
Metadata
Release files for shotlog-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| shotlog_mcp-0.1.0.tar.gz | 195.8 kB | Without provenance | Details for shotlog_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| shotlog_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for shotlog_mcp-0.1.0-py3-none-any.whl |
Total release size: 203.4 kB
Release files / shotlog_mcp-0.1.0.tar.gz
| Download URL | shotlog_mcp-0.1.0.tar.gz |
|---|---|
| Size | 195.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c796f217bfd20c9735daf4e60eb8c4ed8dfd1a7e6f8c2eb0d545ff81e6a08c72
|
|
BLAKE2b-256 checksum How to use checksums |
490b48112a0eac2df0300db9d145a5411c3495e8ec4c88fcdf1caae7a40512f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / shotlog_mcp-0.1.0-py3-none-any.whl
| Download URL | shotlog_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b3d10aabb41a21b96f0280dfd73cb69d4e1dbd8d1705527bc411ef34d3a8fc8d
|
|
BLAKE2b-256 checksum How to use checksums |
cc3ce2a77a12ed5a05d8ef94d987a025cce5a3cbd95435be0cb2ecd94752a4b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for shotlog-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.