Skip to content

ps-copilot-sandbox/copilot-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Book Database MCP Server

Note

This is a small MCP (Model Context Protocol) demo server used during the GitHub Copilot Agents and MCP training sessions. It used by a demo explained in the copilot-agent-and-mcp repository.

Functional

Book Database MCP Server exposes a simple set of tools that let an MCP-capable agent or client query a curated book database. Key features:

  • Retrieve a book's basic information (ISBN, title, author) by title.
  • Retrieve detailed book information (summary, date, author) by ISBN.
  • Batch queries: request multiple books by a list of titles or ISBNs.
  • Uses small JSON files as the backing dataset (easy to read and modify for demos).

Technical

  • Runtime: Node.js (TypeScript source in src/).
  • Protocol: Model Context Protocol (MCP) using @modelcontextprotocol/sdk.
  • Transport: Standard I/O transport (StdioServerTransport) — this server communicates over stdio.
  • Validation: Input schemas are validated with zod for each tool.
  • Data: src/data/books.json (basic list) and src/data/books-details.json (summaries and dates).
  • Tools implemented in src/index.ts:
    • get-book-by-isbn — takes isbn: string (10 chars)
    • get-book-by-title — takes title: string
    • get-books-by-titles — takes titles: string[]
    • get-books-by-isbn-list — takes isbnList: string[] (10-char items)

Setup

Prerequisites: Node.js (18+ recommended) and npm.

  1. Clone the repository and enter the demo folder:
git clone <repo-url>
cd <repo-root>
  1. Install dependencies:
npm install
  1. Build the TypeScript sources:
npm run build

The build produces build/index.js and the build folder is listed in package.json files.

Run

Start the MCP server (it runs on stdio and writes a startup log to stderr):

node build/index.js

When running successfully you should see an informational message on stderr similar to:

Book database MCP Server running on stdio

You don't need to start the server manually during the demo as it will be started by the MCP server configuration in the webapp demo repository.

Usage examples

The server exposes the tool names listed above. Example calls (conceptual):

  • Get details by ISBN:

    • Tool: get-book-by-isbn
    • Input: { "isbn": "0451524935" } # returns details for "1984"
  • Get basic info by title:

    • Tool: get-book-by-title
    • Input: { "title": "The Hobbit" }
  • Batch lookup by titles:

    • Tool: get-books-by-titles
    • Input: { "titles": ["1984", "Brave New World"] }

Data

The datasets are small JSON files in src/data/ so you can easily tweak entries during a workshop:

  • src/data/books.json — array of simple book objects (ISBN, title, author)
  • src/data/books-details.json — object with a books array containing summaries and dates

Notes

  • This project is intentionally small and focused on demonstrating how to serve tools over MCP.
  • If you want to interactively test tools locally, write a tiny Node client that uses StdioClientTransport from @modelcontextprotocol/sdk and spawn this server as a child process so their stdio streams are connected.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published