Skip to main content
Glama
SPINES MCP Server

SPINES MCP Server

Official
by GetSpines

SPINES MCP Server

Access SPINES book collections, reading lists, and bookshelf data from AI assistants via the Model Context Protocol.

Features

  • Recognize books from photos of a bookshelf; several photos of one shelf become one collection

  • Search books by title, author, or ISBN

  • Browse and filter book collections

  • Manage reading lists (add and remove books)

  • Explore personas, categories, and books commonly shelved together

  • AI prompts for shelf analysis and book recommendations

Related MCP server: hardcover-mcp

Quick Start

Prerequisites

Installation

npm install -g @spines/mcp-server

Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "spines": {
      "command": "npx",
      "args": ["-y", "@spines/mcp-server"],
      "env": {
        "SPINES_API_KEY": "gtspn_live_your_key_here"
      }
    }
  }
}

VS Code / Cursor

Add to your MCP settings:

{
  "spines": {
    "command": "npx",
    "args": ["-y", "@spines/mcp-server"],
    "env": {
      "SPINES_API_KEY": "gtspn_live_your_key_here"
    }
  }
}

Environment Variables

Variable

Required

Default

Description

SPINES_API_KEY

Yes

-

Your API key

SPINES_API_URL

No

https://getspines.com/api/v1

API base URL

SPINES_DEBUG

No

false

Verbose logging to stderr

SPINES_LLM_PROVIDER

No

-

Bring your own LLM key for recognize_bookshelf; only gemini is accepted. Set together with SPINES_LLM_API_KEY

SPINES_LLM_API_KEY

No

-

Your provider API key. With both set, recognition uses your key and no SPINES credits

Tools

Read Tools

Tool

Description

search_books

Search for books by title, author, or ISBN

get_book_details

Get full details for a specific book

get_collection

Get a book collection with all its books

list_collections

List your collections with optional filters

list_categories

List all approved book categories

get_persona

Get details about a persona

get_book_pairings

Find books commonly shelved together with a book (Shelfology)

check_credits

Check your daily recognition credit balance

Write Tools

Tool

Description

add_to_reading_list

Add a book to a reading list

remove_from_reading_list

Remove a book from a reading list

recognize_bookshelf

Recognize books from one or more bookshelf photos and save them as a collection (uses credits)

Tool Details

search_books

query: string    - Search query (title, author, or ISBN)
limit?: number   - Max results (1-50, default 10)

get_book_details

book_id: string  - The book's unique ID

get_collection

collection_id: string  - The collection's unique ID

list_collections

limit?: number        - Max results (1-50, default 20)
cursor?: string       - Pagination cursor
persona_id?: string   - Filter by persona
category_id?: string  - Filter by category

list_categories

(no arguments)

get_persona

persona_id: string  - The persona's unique ID

get_book_pairings

book_id: string  - The book to find pairings for
limit?: number   - Max results (1-50, default 10)

check_credits

(no arguments)

add_to_reading_list

book_id: string      - The book to add
list_name?: string   - List name (default: "want_to_read")

remove_from_reading_list

entry_id: string     - The reading list entry ID to remove

recognize_bookshelf

image_url?: string     - URL of a single photo
image_base64?: string  - Base64-encoded single photo
images?: array         - Several photos of one bookshelf, saved as ONE collection;
                         each entry is { image_url } or { image_base64 }
cover_index?: number   - Zero-based index into images of the cover photo (default 0)
title?: string         - Title for the new collection

Send either image_url / image_base64 or images, not both. Example:

{
  "images": [
    { "image_url": "https://example.com/shelf-left.jpg" },
    { "image_url": "https://example.com/shelf-right.jpg" }
  ],
  "cover_index": 1,
  "title": "Living room"
}
  • Photo limit: 4 per request with a regular key. A book that appears on two photos is kept once.

  • Credits: each photo uses one credit; the request needs at least one to start. With SPINES_LLM_PROVIDER / SPINES_LLM_API_KEY set, no credits are used.

  • Prefer URLs. Base64 photos over 4 MB in total do not fit in one request.

  • Duplicates: a photo already in SPINES fails the whole request (RECOGNIZE_IMAGE_DUPLICATE, with the index of that photo).

  • Timing: the tool waits while the server reads every photo, then polls until book matching finishes (up to 2 minutes). It returns the finished collection, or the job's current status (with its job_id) if matching is still running or its status could not be read. If the first step times out (5 minutes), the collection may still be created: check list_collections before trying again, since a retry uses credits again.

Resources

URI

Description

spines://collection/{id}

A book collection with metadata

spines://book/{id}

Full book details

spines://persona/{id}

Persona profile and collections

spines://reading-lists

User's reading lists

Prompts

Prompt

Description

analyze_shelf

Analyze a collection for themes and reading patterns

recommend_books

Get recommendations based on your library

compare_collections

Compare two collections for similarities

Troubleshooting

Problem

Solution

"SPINES_API_KEY is required"

Set the env var in your MCP client config

401 errors

Check your API key is valid and not expired

403 errors

Your key may lack required scopes

429 errors

Rate limited — wait and retry

TIMEOUT from recognize_bookshelf

The server may still be working; check list_collections before resending

Tools not appearing

Restart your MCP client

Development

git clone https://github.com/GetSpines/mcp-server
cd mcp-server
npm install
npm run build
npm test

License

MIT

Available Tools

11 tools
add_to_reading_listC
Idempotent

Add a book to a reading list

Inputs: book_id (required), list_name.

check_creditsA
Read-onlyIdempotent

Check your daily recognition credit balance

Inputs: no named parameters.

get_book_detailsC
Read-onlyIdempotent

Get full details for a specific book

Inputs: book_id (required).

get_book_pairingsA
Read-onlyIdempotent

Find books commonly co-shelved with a specific book (Shelfology)

Inputs: book_id (required), limit.

get_collectionA
Read-onlyIdempotent

Get a book collection with all its books

Inputs: collection_id (required).

get_personaC
Read-onlyIdempotent

Get details about a persona (bookshelf owner)

Inputs: persona_id (required).

list_categoriesB
Read-onlyIdempotent

List all approved book categories

Inputs: no named parameters.

list_collectionsC
Read-onlyIdempotent

List the user's collections with optional filters

Inputs: limit, cursor, persona_id, category_id.

recognize_bookshelfA

Recognize books from one or more photos of a bookshelf; several photos become one collection (uses daily credits or BYOK)

Inputs: title, images, image_url, cover_index, +1 more.

remove_from_reading_listC
DestructiveIdempotent

Remove a book from a reading list

Inputs: entry_id (required).

search_booksB
Read-onlyIdempotent

Search for books by title, author, or ISBN

Inputs: query (required), limit.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool targets a distinct resource or action: searching books, retrieving details, recognizing photos, managing collections, reading lists, personas, categories, and credits. No two tools have overlapping purposes that could cause misselection.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern: get_book_pairings, recognize_bookshelf, search_books, get_book_details, get_collection, list_collections, list_categories, get_persona, add_to_reading_list, remove_from_reading_list, check_credits.

    Tool Count5/5

    11 tools is well within the ideal range of 3–15 and each tool earns its place for the book discovery and collection management domain. No tool feels redundant or missing from a count perspective.

    Completeness3/5

    Notable gaps exist: there is no way to view a reading list (only add/remove), no update or delete operations for collections, and no list of personas. These missing lifecycle operations could hinder agents from verifying state or managing resources fully.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to help users manage their reading experience by searching books, tracking reading progress, managing bookmarks, and generating personalized recommendations and summaries.
      -
    • A
      license
      A
      quality
      B
      maintenance
      Connects AI assistants to the Hardcover book library, enabling natural language book searches, reading status updates, list management, and library exploration.
      28
      377 PyPI
      10
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Bridges your Calibre e-book library with AI assistants via the Model Context Protocol, enabling natural-language library management, semantic search, RAG, and agentic workflows.
      51
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides AI assistants with direct access to your ebook library, enabling listing books, reading chapters, and searching across books via the Model Context Protocol.
      MIT