Skip to main content
Glama

LCSH MCP Server

by kltng
MIT License
  • Apple
  • Linux
references.md8.37 kB
# cataloger mcp server A Model Context Protocol (MCP) server that provides access to the Library of Congress Subject Headings (LCSH) through a simple API interface. ## Overview This MCP server allows AI assistants to search the Library of Congress Subject Headings (LCSH) using the public suggest2 API. It provides a clean interface for querying LCSH data and handling the various response formats from the API. ## Features - **MCP Tool Integration**: Exposes a `search_lcsh` tool that can be used by AI assistants - **MCP Tool Integration**: Exposes `search_lcsh` (default left-anchored), `search_lcsh_keyword` (keyword-based), and `search_name_authority` tools that can be used by AI assistants - **Resource Endpoints**: Provides resource endpoints at `lcsh://search/{query}` and `lcnaf://search/{query}` - **Robust Error Handling**: Gracefully handles API errors, connection issues, and unexpected response formats - **Multiple Response Formats**: Supports both dictionary (hits) and list response formats from the LCSH API - **Dual Operation Modes**: - **stdio mode**: For direct integration with AI assistants like Claude Desktop - **HTTP/SSE mode**: For network-based connections on a specified port ## Requirements - Python 3.12 or higher - Dependencies: - `mcp[cli]>=1.6.0`: Model Context Protocol Python SDK - `requests>=2.32.3`: HTTP library for API requests ## Installation ```bash # Clone the repository git clone <repository-url> cd lcsh-mcp # Set up a virtual environment python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies using uv uv pip install -e . ``` ## Usage ### Running in stdio Mode (Default) This mode is ideal for direct integration with AI assistants like Claude Desktop: ```bash python server.py ``` ### Running in HTTP/SSE Mode This mode allows network-based connections on the specified port: ```bash python server.py 6274 ``` The server will start on port 6274 (or any port you specify) and be accessible at `http://localhost:6274`. ## API Reference ### Tool: `search_lcsh` Searches the Library of Congress Subject Headings using the public suggest2 API. **Parameters:** - `query` (string): The search term to look for in LCSH **Returns:** A dictionary with the following structure: ```json { "results": [ { "label": "Subject Heading Label", "uri": "http://id.loc.gov/authorities/subjects/..." }, ... ] } ``` Or in case of an error: ```json { "error": "Error message", "type": "ErrorType", "traceback": "..." } ``` ### Resource: `lcsh://search/{query}` A resource endpoint that returns the same data as the `search_lcsh` tool. ### Tool: `search_lcsh_keyword` Searches the Library of Congress Subject Headings (LCSH) using the public suggest2 API with a keyword search type. This allows for more flexible matching compared to the default left-anchored search of `search_lcsh`. **Parameters:** - `query` (string): The search term to look for in LCSH. **API Behavior:** - Uses `searchtype: "keyword"` in the API request. - Requests up to `count: 50` results from the API. **Returns:** A dictionary with the following structure (same as `search_lcsh`): ```json { "results": [ { "label": "Subject Heading Label", "uri": "http://id.loc.gov/authorities/subjects/..." }, ... ] } ``` Or in case of an error (same as `search_lcsh`): ```json { "error": "Error message", "type": "ErrorType", "traceback": "..." } ``` ### Tool: `search_name_authority` Searches the Library of Congress Name Authorities (LCNAF) for Personal Names using the public suggest2 API. **Parameters:** - `query` (string): The search term to look for in LCNAF (Personal Names) **Returns:** A dictionary with the following structure (same as `search_lcsh`): ```json { "results": [ { "label": "Name Authority Label", "uri": "http://id.loc.gov/authorities/names/..." }, ... ] } ``` Or in case of an error (same as `search_lcsh`): ```json { "error": "Error message", "type": "ErrorType", "traceback": "..." } ``` ### Resource: `lcnaf://search/{query}` A resource endpoint that returns the same data as the `search_name_authority` tool. ## Testing The server includes a comprehensive test suite that can be run with pytest: ```bash python -m pytest test_server.py -v ``` Tests cover basic functionality, empty queries, no results, and API errors. ## Integration with Claude Desktop To use this MCP server with Claude Desktop: 1. Start the server in stdio mode: `python server.py` 2. In Claude Desktop, go to Settings > MCP Servers 3. Add a new MCP server with the following configuration: - Name: cataloger mcp Search - Command: `python /path/to/cataloger mcp/server.py` 4. Enable the server and start using the cataloger mcp search capabilities in your conversations ## License [Specify your license here] ## Contributing [Add contribution guidelines if applicable] ## Testing with MCP Inspector The MCP Inspector is a visual testing tool specifically designed for MCP servers. Here's how to use it with your cataloger mcp server: ### Step 1: Install MCP Inspector First, you need to install the MCP Inspector. You can use npm to install it globally: ```bash npm install -g @modelcontextprotocol/inspector ``` Or you can use it directly with npx without installing: ```bash npx @modelcontextprotocol/inspector ``` ### Step 2: Start Your cataloger mcp server You need to have your cataloger mcp server running in HTTP/SSE mode for testing with the Inspector: ```bash python server.py 6274 ``` This will start your server on port 6274 (or you can choose another port). ### Step 3: Connect MCP Inspector to Your Server Now you can connect the MCP Inspector to your running server. There are two ways to do this: #### Option 1: Using the CLI ```bash npx @modelcontextprotocol/inspector --cli http://localhost:6274 ``` This will connect to your server in CLI mode and allow you to interact with it through the command line. #### Option 2: Using the Web Interface ```bash npx @modelcontextprotocol/inspector ``` This will start the MCP Inspector web interface. By default, it runs on port 3000, so you can access it at http://localhost:3000 in your browser. Once the interface loads: 1. Click on "Add Server" 2. Enter a name for your server (e.g., "cataloger mcp server") 3. Enter the URL: `http://localhost:6274` 4. Click "Save" ### Step 4: Test Your Server's Tools and Resources Once connected, you can: #### List Available Tools CLI: ```bash npx @modelcontextprotocol/inspector --cli http://localhost:6274 --method tools/list ``` Web Interface: - Click on your server in the sidebar - Go to the "Tools" tab to see all available tools #### Test the `search_lcsh` Tool CLI: ```bash npx @modelcontextprotocol/inspector --cli http://localhost:6274 --method tools/call --tool-name search_lcsh --tool-arg query=history ``` Web Interface: - Click on the "search_lcsh" tool #### Test the `search_lcsh_keyword` Tool CLI: ```bash npx @modelcontextprotocol/inspector --cli http://localhost:6274 --method tools/call --tool-name search_lcsh_keyword --tool-arg query="artificial intelligence policy" ``` Web Interface: - Click on the "search_lcsh_keyword" tool - Enter "artificial intelligence policy" (or any search term) in the query field - Click "Execute" - View the results in the response panel #### Test the `search_name_authority` Tool CLI: ```bash npx @modelcontextprotocol/inspector --cli http://localhost:6274 --method tools/call --tool-name search_name_authority --tool-arg query="Smith, John" ``` Web Interface: - Click on the "search_name_authority" tool - Enter "history" (or any search term) in the query field - Click "Execute" - View the results in the response panel #### Test the Resource Endpoint CLI: ```bash npx @modelcontextprotocol/inspector --cli http://localhost:6274 --method resources/list ``` Web Interface: - Go to the "Resources" tab - You should see the `lcsh://search/{query}` resource - You can test it by entering a query parameter ### Step 5: Debugging and Monitoring The MCP Inspector provides detailed information about: - Request and response payloads - Execution times - Any errors that occur This makes it an excellent tool for debugging your MCP server and ensuring it's working correctly.

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/kltng/lcsh-mcp-server'

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