A Model Context Protocol (MCP) server written in TypeScript that provides access to the Roman Catholic Liturgical Calendar API.
Note: Looking for the Python version? See liturgical-calendar-mcp (Python)
This is a TypeScript rewrite of the Python version with these advantages:
- Native MCP SDK: First-class TypeScript support from the official MCP SDK
- Smaller container: Node.js Alpine image is ~50MB vs Python ~100MB+
- Native async/await: Clean promise-based HTTP requests
- Type safety: Full TypeScript types for better IDE support and error catching
- Simple dependencies: Only needs
@modelcontextprotocol/sdk(built-infetch)
get_general_calendar- General Roman Calendar for any year (1970-9999)get_national_calendar- National calendars (IT, US, NL, VA, CA, etc.)get_diocesan_calendar- Diocesan calendars with local celebrationslist_available_calendars- Discover all available calendarsget_liturgical_events- All possible liturgical events
This server follows a clean modular architecture with separation of concerns:
For detailed architecture documentation, see ARCHITECTURE.md.
- Node.js 18+ (20+ recommended)
- Docker Desktop with MCP Toolkit (for Docker deployment)
- No authentication required
# Clone the repository
git clone https://github.com/CatholicOS/liturgical-calendar-mcp.git
cd liturgical-calendar-mcp
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run the server
npm start# Build the Docker image
docker build -f Dockerfile.ts -t liturgical-calendar-mcp-ts:latest .
# Run with Docker
docker run -i liturgical-calendar-mcp-ts:latestAdd to your claude_desktop_config.json:
{
"mcpServers": {
"liturgical-calendar": {
"command": "node",
"args": ["/absolute/path/to/liturgical-calendar-mcp/build/index.js"]
}
}
}Edit ~/.docker/mcp/catalogs/docker-mcp.yaml:
litcal-ts:
description: "Access Roman Catholic Liturgical Calendar data (TypeScript)"
title: "Liturgical Calendar (TS)"
type: server
dateAdded: "2025-10-22T00:00:00Z"
image: liturgical-calendar-mcp-ts:latest
tools:
- name: get_general_calendar
- name: get_national_calendar
- name: get_diocesan_calendar
- name: list_available_calendars
- name: get_liturgical_events
metadata:
category: integration
tags:
- catholic
- liturgy
- calendar
license: MIT# Watch mode for development
npm run watch
# Build for production
npm run build
# Run tests (if added)
npm test.
├── src/
│ └── index.ts # Main MCP server implementation
├── build/ # Compiled JavaScript (generated)
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── Dockerfile.ts # Docker build file
└── README-typescript.md # This file| Feature | Python | TypeScript |
|---|---|---|
| Runtime size | ~100MB | ~50MB |
| Dependencies | 2 (mcp, httpx) | 1 (@modelcontextprotocol/sdk) |
| HTTP client | httpx (external) | fetch (built-in) |
| Type safety | Optional (mypy) | Built-in |
| Async model | asyncio | Promises/async-await |
| MCP SDK | FastMCP wrapper | Official SDK |
{
year?: string, // 1970-9999 (default: current year)
locale?: string // en, es, it, fr, etc. (default: en)
}{
nation: string, // IT, US, NL, VA, CA (required)
year?: string, // 1970-9999 (default: current year)
locale?: string // en, es, it, fr, etc. (default: en)
}{
diocese: string, // ROME-IT, BOSTON-US (required)
year?: string, // 1970-9999 (default: current year)
locale?: string // en, es, it, fr, etc. (default: en)
}{
// No parameters required
}Returns all available national and diocesan calendars with their locales.
{
calendarType?: string, // "general", "national", or "diocesan" (default: general)
nation?: string, // Required if calendarType is "national"
diocese?: string // Required if calendarType is "diocesan"
}Retrieves all possible liturgical events for a calendar type.
MIT
- Liturgical Calendar API by Rev. John R. D'Orazio
- MCP Protocol by Anthropic
