Skip to main content
Glama

Wake County Public Library

by jfposton

Wake County Public Library MCP Server

A Model Context Protocol (MCP) server that provides search capabilities for the Wake County Public Library catalog.

Built with Python using the official MCP Python SDK and uv for dependency management.

Features

  • Search the Wake County Public Library catalog

  • Search local Wake County catalog or all NC Cardinal libraries

  • Returns detailed information including:

    • Title

    • Author

    • Format (book, DVD, audiobook, etc.)

    • Publication year

    • Availability status

    • Direct links to catalog entries

    • Cover images

Prerequisites

  • Python 3.12 or higher

  • uv - Fast Python package manager

Installing uv

# macOS and Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # Or with pip pip install uv

Installation

# Clone the repository git clone <repository-url> cd mcp-wcpl # Install dependencies uv sync

Usage

With Claude Desktop

Add this to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%/Claude/claude_desktop_config.json

{ "mcpServers": { "wake-county-library": { "command": "uv", "args": [ "--directory", "/absolute/path/to/mcp-wcpl", "run", "python", "-m", "mcp_wcpl" ] } } }

Replace /absolute/path/to/mcp-wcpl with the actual path to this project directory.

Running Directly

You can also run the server directly for testing:

# Using uv (recommended) uv run python -m mcp_wcpl # Or activate the virtual environment first source .venv/bin/activate # Unix/macOS .venv\Scripts\activate # Windows python -m mcp_wcpl

Available Tools

search_library

Search the Wake County Public Library catalog.

Parameters:

  • query (string, required): The search term (book title, author, keyword, etc.)

  • searchSource (string, optional):

    • "local" (default) - Search only Wake County catalog

    • "all" - Search all NC Cardinal libraries

  • limit (number, optional): Maximum number of results to return (default: 10)

Example:

{ "query": "Foundation Isaac Asimov", "searchSource": "local", "limit": 5 }

Response:

Returns an array of search results with the following structure:

[ { "title": "Foundation", "author": "Asimov, Isaac", "format": "Book", "publicationYear": "2004", "availability": "Available", "url": "https://catalog.wake.gov/Union/Record/...", "coverImage": "https://..." } ]

Development

Testing

Run the test suite:

# Run all tests uv run pytest # Run with verbose output uv run pytest -v # Run with coverage report uv run pytest --cov=src/mcp_wcpl --cov-report=html # Run specific test file uv run pytest tests/test_server.py

The test suite will include:

  • Unit tests for HTML parsing logic

  • Integration tests for search functionality with mocked HTTP requests

  • Tests for MCP server tool interface

  • Error handling tests

Adding Dependencies

# Add a runtime dependency uv add <package-name> # Add a development dependency uv add --dev <package-name>

Project Structure

mcp-wcpl/ ├── src/ │ └── mcp_wcpl/ # Main package │ ├── __init__.py # Package initialization │ ├── __main__.py # Entry point │ └── server.py # MCP server implementation ├── tests/ # Test files │ ├── __init__.py │ └── test_server.py ├── .venv/ # Virtual environment (created by uv) ├── pyproject.toml # Project configuration ├── uv.lock # Dependency lock file ├── .gitignore ├── README.md └── CLAUDE.md # Instructions for Claude Code

How It Works

The server will:

  1. Construct search URLs for the Wake County library catalog

  2. Fetch search results using httpx with appropriate HTTP headers

  3. Parse the HTML response using BeautifulSoup4

  4. Extract relevant book information from the results

  5. Return structured JSON data via the MCP protocol

License

MIT

Links

Deploy Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jfposton/mcp-wcpl-'

If you have feedback or need assistance with the MCP directory API, please join our Discord server