astro-mcp
High-precision astrology tools for LLM agents, including natal charts, transits, progressions, synastry, and more, backed by Swiss Ephemeris.
README
astro-mcp
Astrological MCP Server — high-precision astrology tools for LLM agents.
Implements 14 tools backed by Swiss Ephemeris (pyswisseph) and integrates with any Model Context Protocol client (Claude Desktop, etc.).
Tools
| # | Name | Description |
|---|---|---|
| 1 | calculate_natal_chart |
Full natal chart: planets, angles, houses, aspects |
| 2 | calculate_transits |
Transit aspects to natal chart |
| 3 | calculate_secondary_progressions |
Day-for-a-year progressions + Solar Arc |
| 4 | calculate_solar_return |
Annual solar return chart |
| 5 | calculate_rectification_hints |
Score candidate birth times against life events |
| 6 | calculate_lunar_return |
Monthly lunar return chart(s) |
| 7 | calculate_synastry |
Cross-chart aspects + house overlays |
| 8 | calculate_composite_chart |
Midpoint or Davison composite chart |
| 9 | calculate_profections |
Annual profection — year lord and activated houses |
| 10 | get_planetary_hours |
24 planetary hours for any day/location |
| 11 | calculate_arabic_parts |
7 Arabic Parts (Fortune, Spirit, Marriage, etc.) |
| 12 | get_ephemeris |
Planet position table over a date range |
| 13 | find_aspect_exact_dates |
Find exact dates of a specific aspect |
| 14 | calculate_antiscia |
Antiscia and contra-antiscia points |
Installation
# 1. Clone
git clone https://github.com/your-org/astro-mcp
cd astro-mcp
# 2. Create virtual environment
python3.11 -m venv .venv
source .venv/bin/activate
# 3. Install package + dev dependencies
pip install -e ".[dev]"
# 4. Download Swiss Ephemeris data files
bash scripts/download_ephe.sh
# 5. Set environment variable
export EPHE_PATH="$(pwd)/ephe"
# 6. Run tests
pytest tests/
Claude Desktop configuration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"astro": {
"command": "/path/to/astro-mcp/.venv/bin/python",
"args": ["-m", "astro_mcp"],
"env": {
"EPHE_PATH": "/path/to/astro-mcp/ephe",
"GEOCODING_PROVIDER": "nominatim",
"GEOCODING_USER_AGENT": "astro-mcp/1.0",
"LOG_LEVEL": "WARNING"
}
}
}
}
Environment Variables
| Variable | Default | Description |
|---|---|---|
EPHE_PATH |
./ephe |
Path to Swiss Ephemeris .se1 data files |
GEOCODING_PROVIDER |
nominatim |
nominatim or opencage |
OPENCAGE_API_KEY |
— | Required if GEOCODING_PROVIDER=opencage |
GEOCODING_USER_AGENT |
astro-mcp/1.0 |
Nominatim user-agent |
GEOCODE_CACHE_SIZE |
512 |
LRU cache size for geocoding results |
DEFAULT_HOUSE_SYSTEM |
P |
P=Placidus, W=Whole Sign, K=Koch |
DEFAULT_ORB_FACTOR |
1.0 |
Global orb multiplier (0.5–1.5) |
LOG_LEVEL |
WARNING |
Python logging level |
Architecture
src/astro_mcp/
├── server.py # MCP server — tool registration and dispatch
├── config.py # Settings from environment variables
├── core/
│ ├── models.py # Data models and astrological constants
│ ├── ephemeris_provider.py # Swiss Ephemeris wrapper (pyswisseph)
│ ├── geocoding.py # City → lat/lon/tz (geopy + timezonefinder)
│ └── formatters.py # LLM-optimized serialization
└── tools/
├── natal.py # Tool 1
├── transits.py # Tool 2
├── progressions.py # Tool 3
├── returns.py # Tools 4 + 6
├── rectification.py # Tool 5
├── synastry.py # Tools 7 + 8
├── profections.py # Tool 9
├── planetary_hours.py # Tool 10
├── arabic_parts.py # Tool 11
├── ephemeris.py # Tools 12 + 13
└── antiscia.py # Tool 14
Output Format
All tools return compact JSON without whitespace to minimise LLM context tokens (~75% smaller than verbose JSON). Planet codes are abbreviated (Su, Mo, Me, etc.), aspects use 3-letter codes (Cnj, Tri, Squ), and the retrograde flag ("R":true) is omitted when direct to save additional tokens.
Planet Codes
Supported codes across tools:
SuSunMoMoonMeMercuryVeVenusMaMarsJuJupiterSaSaturnUrUranusNeNeptunePlPlutoChChironLiBlack Moon Lilith (Mean Apogee)NNNorth Node (True Node)SNSouth Node
API Notes
get_ephemerisaccepts either a singleplanetor a list of planets.get_ephemeris.stepsupports1h,2h,3h,6h,12h,1d,7d,30d.get_ephemerisnow returns atimezonefield and formatsdtinoutput_tz.find_aspect_exact_dates.modesupports:transit-to-transitfor two moving bodiestransit-to-natalfor transit to a natal planet/angleauto(default) infers mode from presence ofbirth_*
Testing
pytest tests/ -v --cov=src/astro_mcp --cov-report=term-missing
Reference charts (tests/reference_data/) are verified against Astro.com and Solar Fire.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.