Wake County Public Library
Search the Wake County Public Library catalog for books, media, and other materials using keywords, titles, or authors.
Search library catalogs: Query for books, DVDs, audiobooks, and other materials using keywords, titles, or author names
Flexible search scope: Choose between searching only Wake County libraries or all NC Cardinal libraries across North Carolina
Detailed results: Get comprehensive information including title, author, format, publication year, availability status, direct catalog links, and cover images
Configurable results: Control the number of results returned (default: 10)
MCP integration: Works with Claude Desktop and other MCP-compatible applications, providing structured JSON output for easy integration
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Wake County Public Libraryfind available copies of The Hobbit in audiobook format"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: Aspen Catalog MCP
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 uvInstallation
# Clone the repository
git clone <repository-url>
cd mcp-wcpl
# Install dependencies
uv syncUsage
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_wcplAvailable 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.pyThe 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 CodeHow It Works
The server will:
Construct search URLs for the Wake County library catalog
Fetch search results using httpx with appropriate HTTP headers
Parse the HTML response using BeautifulSoup4
Extract relevant book information from the results
Return structured JSON data via the MCP protocol
License
MIT
Links
Available Tools
1 toolsearch_libraryB
Search the Wake County Public Library catalog for books, media, and other materials. Returns information about items including title, author, format, availability, and links to the catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 10) | |
| query | Yes | The search term to look for (book title, author, keyword, etc.) | |
| searchSource | No | Search source: 'local' for Wake County catalog only, or 'all' for all NC Cardinal libraries | local |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only mentions it returns information but does not describe safety (e.g., read-only), authentication needs, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Front-loaded with the action and resource, then return details. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool, the description covers purpose and return fields adequately. However, it lacks usage guidance and behavioral details that would make it fully complete. Given no output schema, the return description adds useful context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all three parameters. The description adds no extra parameter meaning beyond the schema; it only adds output details. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches the Wake County Public Library catalog for books and media, specifying what is returned (title, author, etc.). It uses a specific verb ('Search') and resource ('Wake County Public Library catalog'), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use or avoid this tool. With no sibling tools, alternatives are not discussed, and no prerequisites or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
search_library
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion between tools.
The single tool follows a clear verb_noun pattern (search_library), so consistency is perfect.
One tool is on the low end but acceptable for a focused search server; however, the server name implies a broader library scope.
Only a search tool is provided, lacking essential operations like fetching item details, browsing, or account management, which are typical for a library server.
Maintenance
Related MCP Connectors
Search books and authors across Open Library, the Internet Archive open catalog.
Search books, authors and series, get recommendations, and manage your own reading shelves.
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
- LeafleOAuthnet.nanosheep
Personalised book recommendations, filtered to what's on your public library's shelf right now.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables searching the National Library Board Singapore catalogue by title, author, ISBN, or subject, and checking real-time availability of books across library branches.Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI clients to search Aspen Discovery library catalogs and check real-time book availability by keyword, author, or ISBN. This server allows users to verify local library inventory and filter book recommendations accordingly.24 npmMIT
- FlicenseAqualityDmaintenanceEnables searching the GBS Flexon Library catalog (Koha) and checking book availability.21-
- FlicenseNot gradedqualityCmaintenanceEnables searching WorldCat's library catalog for bibliographic records, editions, citations, and exports in various formats via natural language.-