Metadata-Version: 2.5
Name: libraryapi-mcp
Version: 0.1.1
Summary: MCP server for libraryapi.dev — US public library data for AI agents
Project-URL: Homepage, https://libraryapi.dev
Project-URL: Repository, https://github.com/library-api/libraryapi-mcp
Author-email: LibraryAPI <hello@districtapi.dev>
License: MIT
Keywords: api,imls,libraries,library,mcp,public-library
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27.0
Requires-Dist: mcp<2.0.0,>=1.0.0
Description-Content-Type: text/markdown

# libraryapi-mcp

MCP server for [libraryapi.dev](https://libraryapi.dev) — US public library data for AI agents.

Expose library lookups as tools to any MCP-compatible AI assistant (Claude, Cursor, Copilot, etc.). Built on the federal IMLS Public Libraries Survey — public domain, commercially usable.

## Installation

```bash
pip install libraryapi-mcp
```

Or run directly with `uvx` (no install needed):

```bash
uvx libraryapi-mcp
```

## Configuration

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "libraryapi": {
      "command": "uvx",
      "args": ["libraryapi-mcp"],
      "env": {
        "LIBRARYAPI_KEY": "your_api_key_here"
      }
    }
  }
}
```

### Cursor / other MCP clients

```json
{
  "mcpServers": {
    "libraryapi": {
      "command": "uvx",
      "args": ["libraryapi-mcp"],
      "env": {
        "LIBRARYAPI_KEY": "your_api_key_here"
      }
    }
  }
}
```

Get a free API key at [libraryapi.dev](https://libraryapi.dev) — 500 requests/month, no credit card.

## Available Tools

| Tool | Description |
|------|-------------|
| `find_libraries_near_address` | Find the nearest branches to a US street address |
| `find_libraries_near_coordinates` | Same, but from a lat/lng (skips geocoding) |
| `get_outlet` | Full record for one branch outlet by ID |
| `search_libraries` | Search library *systems* by name, state, or city |
| `get_library` | Full system profile by FSCS ID |
| `get_state_summary` | Statewide library totals |

**Systems vs. outlets:** a *system* is the administrative entity (e.g. "Chicago Public Library"); an *outlet* is an individual branch. Proximity searches return outlets.

## Examples

Once configured, you can ask your AI assistant:

> "What are the three closest public libraries to 350 Fifth Ave, New York?"

> "How many public library branches are there in Vermont, and what's the total collection size?"

> "I'm building a civic app — give me every library branch within 5 miles of downtown Chicago as JSON."

## Data note

The IMLS survey covers locations, collections, staffing, visits, programs, and finances. It reports **hours-open totals** (annual, and per week) but **not daily opening times** — so this API can tell you a branch is open ~45 hours/week, not that it opens at 9am.

## Links

- **Website:** [libraryapi.dev](https://libraryapi.dev)
- **PyPI:** [pypi.org/project/libraryapi-mcp](https://pypi.org/project/libraryapi-mcp)
- **REST API docs:** [libraryapi.dev/docs](https://libraryapi.dev/docs)

## License

MIT
