https://github.com/pdugan20/bibliocommons-mcp
MCP server for placing holds, searching, and managing your account at public libraries that use BiblioCommons.
https://github.com/pdugan20/bibliocommons-mcp
bibliocommons library mcp mcp-server python seattle-public-library
Last synced: 15 days ago
JSON representation
MCP server for placing holds, searching, and managing your account at public libraries that use BiblioCommons.
- Host: GitHub
- URL: https://github.com/pdugan20/bibliocommons-mcp
- Owner: pdugan20
- License: mit
- Created: 2026-05-27T18:42:47.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-09T22:14:56.000Z (29 days ago)
- Last Synced: 2026-06-10T00:09:17.443Z (29 days ago)
- Topics: bibliocommons, library, mcp, mcp-server, python, seattle-public-library
- Language: Python
- Homepage: https://pypi.org/project/bibliocommons-mcp/
- Size: 1.04 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
- Roadmap: docs/roadmap.md
Awesome Lists containing this project
README
# bibliocommons-mcp
[](https://pypi.org/project/bibliocommons-mcp/)
[](https://github.com/pdugan20/bibliocommons-mcp/actions/workflows/ci.yml)
[](https://www.python.org/)
[](https://opensource.org/licenses/MIT)
MCP server for placing holds, searching, and managing your account at [BiblioCommons](https://bibliocommons.com/)-powered public libraries.
## Install
```bash
pipx install bibliocommons-mcp
```
Requires Python 3.11+.
## Quick Start
```bash
bibliocommons-mcp init
claude mcp add bibliocommons bibliocommons-mcp --scope user
```
`init` walks the prompts, validates live against the gateway, and writes the config file for you. Manual setup: [`docs/configuration.md`](docs/configuration.md). For Claude Desktop, Cursor, or other MCP clients: [`docs/mcp-clients.md`](docs/mcp-clients.md).
## Try asking
> Place a hold on something at my branch.
>
> Show my current holds with queue positions.
>
> What's due back this week?
>
> Cancel a hold.
## Tools
All mutation tools accept a list of IDs/refs — pass `[id]` for the common single-item case.
| Tool | Description |
| -------------------- | ---------------------------------------------------------- |
| `search` | Search the catalog, optionally filtered by format |
| `availability` | Show per-branch status for a bib |
| `place_hold` | Place physical holds at your pickup branch |
| `borrow_digital` | Borrow one or more available digital items |
| `place_digital_hold` | Join the Libby waitlist for unavailable digital items |
| `list_holds` | Show current holds and queue positions |
| `ready_for_pickup` | Show only the holds waiting at your branch |
| `cancel_hold` | Cancel holds (native bulk; one DELETE per call) |
| `list_loans` | Show checkouts with due dates |
| `renew_loan` | Renew physical checkouts (native bulk; one PATCH per call) |
| `check_in_loan` | Return digital checkouts early |
| `list_branches` | List all branches at your library |
| `library_health` | Check login and report hold quotas |
## Library compatibility
The same gateway serves every BiblioCommons-powered library — see [`docs/known-libraries.md`](docs/known-libraries.md) for what's been verified. If yours isn't listed, [file a compatibility report](https://github.com/pdugan20/bibliocommons-mcp/issues/new?template=library_compatibility.yml) once you try it.
## Requirements
- Python 3.11+
- A BiblioCommons library account in good standing (card + PIN)
- The library must run on BiblioCommons (visit `{name}.bibliocommons.com` and confirm)
## Further reading
- [`docs/architecture.md`](docs/architecture.md) — gateway client design and API quirks
- [`docs/format-codes.md`](docs/format-codes.md) — format facet codes
- [`docs/troubleshooting.md`](docs/troubleshooting.md) — common errors and fixes
- [`docs/roadmap.md`](docs/roadmap.md) — what's planned next
- [`docs/releasing.md`](docs/releasing.md) — automated release flow