Skip to content
Conduit

mcp server

inha-library-availability-mcp

MCP server for point-in-time Inha University Library physical and electronic availability checks

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "inha-library-availability-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "inha-library-availability-mcp"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 26, 2026

Inha Library Availability MCP Server

CI npm License: MIT

A local stdio Model Context Protocol server that checks point-in-time availability in Inha University Library's public systems.

It combines:

  • physical catalog records and live circulation states from Inha's public Pyxis catalog;
  • article and e-book listings from Inha's public EBSCO EDS guest integration.

It does not log in, reserve or borrow materials, bypass network restrictions, or download protected content.

Documentation

Requirements and setup

  • Node.js 20 or newer
  • npm
npm install
npm run build
npm test

Install the published package globally with:

npm install --global inha-library-availability-mcp

For a no-install setup, configure an MCP client to launch:

npx -y inha-library-availability-mcp@1.0.1

Run the stdio server with either:

npm run dev
node dist/index.js

Do not type requests into the server manually: an MCP host launches it and communicates over stdin/stdout. Diagnostics go only to stderr.

Tool

The server exposes one tool: check_inha_library_availability.

{
  "materials": [
    {
      "title": "A known title",
      "authors": ["First Author"],
      "year": 2024,
      "type": "article",
      "doi": "10.1000/example"
    },
    {
      "title": "A known book",
      "isbn": "978-1-234-56789-0"
    }
  ],
  "maxCandidates": 5
}

materials may be one object or an array of 1–20 objects. title is required. Optional fields are authors, year, type, isbn, issn, and doi. maxCandidates is 1–10 and defaults to 5.

Every result includes a status, confidence, confirmed match when one exists, physical holdings, electronic findings, alternatives, source warnings, a timestamp, and an Inha verification URL. The status values are:

  • available_now: a READY/대출가능 physical copy or explicit electronic full-text link was found;
  • held_but_unavailable: a matching physical record has no currently available copy;
  • listed_access_uncertain: an electronic citation/subscription listing exists but access was not confirmed;
  • not_found: all queried sources responded and no plausible match was found;
  • ambiguous: plausible candidates need user verification;
  • unknown: one or more required upstream checks failed and absence cannot be concluded.

Electronic links may still require an Inha login or campus network. Results are point-in-time observations.

Host configuration

See the installation guide for npm, npx, source builds, Windows examples, environment variables, updates, and uninstallation.

Build first, then replace /absolute/path/to/Book Search MCP below with this repository's absolute path.

Codex

Add a stdio MCP server to your Codex configuration using the command and arguments below (the surrounding configuration format may vary by Codex version):

[mcp_servers.inha_library]
command = "node"
args = ["/absolute/path/to/Book Search MCP/dist/index.js"]

Claude Desktop

Add this entry under mcpServers in Claude Desktop's configuration:

{
  "mcpServers": {
    "inha-library": {
      "command": "node",
      "args": ["/absolute/path/to/Book Search MCP/dist/index.js"]
    }
  }
}

Cursor

Add the same stdio definition to Cursor's MCP configuration:

{
  "mcpServers": {
    "inha-library": {
      "command": "node",
      "args": ["/absolute/path/to/Book Search MCP/dist/index.js"]
    }
  }
}

To exercise the server directly with MCP Inspector:

npm run inspect

Configuration

Defaults track Inha's public guest-facing integration. Override them if the institution changes its endpoints/profile:

VariableDefault / purpose
INHA_CATALOG_BASE_URLhttps://lib.inha.ac.kr/pyxis-api
INHA_CATALOG_COLLECTION_ID1
INHA_SEARCH_URLhttps://lib.inha.ac.kr/search
INHA_EDS_WIDGET_URLEBSCO encrypted-key guest widget URL
INHA_EDS_KEYPublic encrypted key embedded in Inha's website
INHA_EDS_PROFILEInha's public EDS profile
INHA_EDS_SESSION_KEYEDS widget session capability string
INHA_SOURCE_TIMEOUT_MS8000
INHA_CACHE_TTL_MS300000 (five minutes)
INHA_BATCH_CONCURRENCY4

Each source request has an eight-second default timeout and one retry for transient failures. Query results are cached in memory for five minutes; restarting the process clears the cache.

Development and tests

npm run typecheck
npm run build
npm test

Normal tests use committed sanitized fixtures and never depend on Inha or EBSCO uptime. Optional live smoke tests are explicitly gated:

npm run test:live

The MCP TypeScript v2 package is currently beta; dependency versions are pinned in package.json and package-lock.json so upstream API changes do not silently alter this server.

Releases

GitHub Actions runs typechecking, tests, builds, and package verification on Node.js 20, 22, and 24 for every pull request and push to main.

Publishing a GitHub release whose tag matches v<package.json version> triggers .github/workflows/publish.yml. The workflow uses npm Trusted Publishing (OIDC) to publish the public package with provenance and does not require a long-lived npm token. Configure the package's trusted publisher with:

  • npm package: inha-library-availability-mcp
  • GitHub owner: seawhanlee
  • GitHub repository: inha-library-availability-mcp
  • workflow filename: publish.yml
  • environment: npm
  • allowed action: npm publish

The release job intentionally refuses tags that do not exactly match the package version.

↑↓ navigate openesc close