Skip to main content

Lunar Calendar MCP Server

GitHub Repository PyPI version License: MIT Python 3.12+ MCP Server

中文 | English

A Model Context Protocol (MCP) server for Chinese traditional calendar functions, built with Python 3.12 and lunar-python.

One-Command Launch with UVX

uvx bach-lunar-mcp

That's it! No installation, no virtual environment setup, no dependencies to manage. UVX will automatically download and run the server.

Configure in Your MCP Client

Cursor IDE

{
  "mcpServers": {
    "lunar-calendar": {
      "command": "uvx",
      "args": ["bach-lunar-mcp"]
    }
  }
}

Claude Desktop

{
  "mcpServers": {
    "lunar-calendar": {
      "command": "uvx",
      "args": ["bach-lunar-mcp"]
    }
  }
}

Cherry Studio

{
  "mcpServers": {
    "lunar-calendar": {
      "command": "uvx",
      "args": ["bach-lunar-mcp"]
    }
  }
}

📦 PyPI Package: https://pypi.org/project/bach-lunar-mcp/
📖 Quick Start Guide: QUICKSTART_UVX.md


Features

🎋 BaZi Calculation - Calculate eight characters for fortune telling
📅 Calendar Conversion - Convert between solar and lunar calendars
🌙 Huangli Query - Chinese almanac with daily recommendations
🔮 Daily Fortune - Daily fortune and recommendations
⭐ Solar Terms - Query 24 solar terms for any year
🧮 Wu Xing Analysis - Five elements analysis from birth info

Installation

Prerequisites

  • Python 3.12+
  • uv package manager

Setup

  1. Clone the repository:
git clone <repository-url>
cd lunar-mcp-server
  1. Install uv (if not already installed):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Install project with dependencies:
uv sync

This will automatically:

  • Create a virtual environment with Python 3.12
  • Install all dependencies from pyproject.toml
  • Generate uv.lock for reproducible builds

Usage

As MCP Server

Configure in your MCP client (e.g., Claude Desktop):

{
  "mcpServers": {
    "lunar-calendar": {
      "command": "uv",
      "args": ["run", "python", "-m", "src.server"],
      "cwd": "/path/to/lunar-mcp-server"
    }
  }
}

Direct Usage

You can also use the helper functions directly:

# Run with uv
uv run python -c "
from src.utils import LunarHelper
result = LunarHelper.solar_to_lunar(2024, 1, 1)
print(result['lunar_date_chinese'])  # 二〇二三年冬月二十
"

# Calculate BaZi
uv run python -c "
from src.utils import LunarHelper
result = LunarHelper.get_bazi(1990, 1, 1, 8, 30)
print(result['bazi_string'])  # 己巳 丙子 丙寅 壬辰
"

Available Tools

1. bazi_calculate

Calculate BaZi (Eight Characters) for fortune telling.

Parameters:

  • birth_date: Birth date in YYYY-MM-DD format
  • birth_time: Birth time in HH:MM format

Example:

{
  "birth_date": "1990-01-01",
  "birth_time": "08:30"
}

2. calendar_convert

Convert between solar and lunar calendars.

Parameters:

  • date: Date in YYYY-MM-DD format
  • convert_to: "lunar" or "solar"
  • is_leap: Is leap month (optional)

Example:

{
  "date": "2024-01-01",
  "convert_to": "lunar"
}

3. huangli_query

Query Chinese almanac information for a specific date.

Parameters:

  • date: Date in YYYY-MM-DD format

Example:

{
  "date": "2024-01-01"
}

4. fortune_daily

Get daily fortune and recommendations.

Parameters:

  • date: Date in YYYY-MM-DD format

Example:

{
  "date": "2024-01-01"
}

5. jieqi_query

Query 24 solar terms for a specific year.

Parameters:

  • year: Year to query

Example:

{
  "year": 2024
}

6. wuxing_analyze

Analyze Wu Xing (Five Elements) from birth information.

Parameters:

  • birth_date: Birth date in YYYY-MM-DD format
  • birth_time: Birth time in HH:MM format

Example:

{
  "birth_date": "1990-01-01",
  "birth_time": "08:30"
}

Development

Running Tests

# Quick functionality test
uv run python quick_test.py

# Run MCP server
uv run python run_server.py

# Test specific functionality
uv run python -c "from src.utils import LunarHelper; print('✅ Import works!')"

# Install dev dependencies (optional)
uv add --dev pytest black mypy

Code Formatting

# Format code
black src/
isort src/

# Type checking
mypy src/

Dependencies

  • mcp: Model Context Protocol implementation
  • lunar-python: Chinese lunar calendar library
  • pydantic: Data validation and settings management

Contributing

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • lunar-python - Excellent Chinese lunar calendar library
  • MCP - Model Context Protocol specification

Note: This is a traditional calendar tool for educational and entertainment purposes. Please use responsibly.

Metadata

Release files for bach-lunar-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bach-lunar-mcp 1.0.0
File Size Uploaded Provenance Actions
bach_lunar_mcp-1.0.0.tar.gz 11.3 kB Without provenance Details for bach_lunar_mcp-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for bach-lunar-mcp 1.0.0
File Interpreter ABI Platform Actions
bach_lunar_mcp-1.0.0-py3-none-any.whl Python 3 none any Details for bach_lunar_mcp-1.0.0-py3-none-any.whl

Total release size: 23.8 kB

Release files / bach_lunar_mcp-1.0.0.tar.gz

Download URL bach_lunar_mcp-1.0.0.tar.gz
Size 11.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e8ed7293f262749ce82b5c136cc7e767c2074ac870c8fc6ad035f8a645177b1c
BLAKE2b-256 checksum
How to use checksums
54507348757ecec9dba3ce636cd095fa8a87f8a89fd7208b9d09c733513bfe5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / bach_lunar_mcp-1.0.0-py3-none-any.whl

Download URL bach_lunar_mcp-1.0.0-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eaf401923c3c81d8cab860214ba31d5be0aa9768d019ae4a19ed43715df408e3
BLAKE2b-256 checksum
How to use checksums
f8e38af7928274b697d372999ca6c3b4e85e430157bdce56ce829a0ec087758c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Security for bach-lunar-mcp 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page