Swiss Ephemeris MCP Server
README.md
# Swiss Ephemeris MCP Server
A Model Context Protocol (MCP) server that provides astronomical calculations using the Swiss Ephemeris library. Calculate planetary positions, houses, chart points, and asteroids for any date and location.
## Features
- **Planetary Positions**: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto
- **Lunar Nodes**: True and Mean Node calculations
- **Asteroids**: Chiron, Ceres, Pallas, Juno, Vesta, Lilith
- **Houses**: 12-house system using Placidus
- **Chart Points**: Ascendant, Midheaven, IC, Descendant
- **Additional Points**: South Node, Part of Fortune
## Installation
#### Prerequisites for Local Development
For local use with Claude Desktop, you need to install the Swiss Ephemeris `swetest` command:
```bash
# Install swetest (required for Claude Desktop usage)
git clone https://github.com/aloistr/swisseph.git /tmp/swisseph && \
cd /tmp/swisseph && \
make && \
cp swetest /usr/local/bin/ && \
rm -rf /tmp/swisseph
```
### Claude Desktop
Add to your Claude Desktop configuration:
```json
{
"mcpServers": {
"swissEphemeris": {
"command": "npx",
"args": ["github:dm0lz/swiss-ephemeris-mcp-server"]
}
}
}
```
### Manual Installation
```bash
git clone https://github.com/dm0lz/swiss-ephemeris-mcp-server.git
cd swiss-ephemeris-mcp-server
npm install
npm start
```
## Usage
The server provides four main tools:
### `calculate_planetary_positions`
Calculate astronomical data for a specific date, time, and location.
**Parameters:**
- `datetime` (string): ISO8601 format, e.g., "1985-04-12T23:20:50Z"
- `latitude` (number): Latitude in decimal degrees (-90 to 90)
- `longitude` (number): Longitude in decimal degrees (-180 to 180)
**Returns:**
- `planets`: Positions of all planets and celestial bodies
- `houses`: 12 astrological houses
- `chart_points`: Ascendant, Midheaven, IC, Descendant
- `additional_points`: South Node, Part of Fortune
### `calculate_transits`
Calculate birth chart positions and current transits for comparison.
**Parameters:**
- `birth_datetime` (string): Birth datetime in ISO8601 format
- `latitude` (number): Birth latitude in decimal degrees
- `longitude` (number): Birth longitude in decimal degrees
**Returns:**
- `natal_chart`: Complete birth chart data
- `current_transits`: Current planetary positions
- `calculation_time`: Timestamp of transit calculation
### `calculate_solar_revolution`
Calculate solar return chart for a specific year (when Sun returns to natal position).
**Parameters:**
- `birth_datetime` (string): Birth datetime in ISO8601 format
- `birth_latitude` (number): Birth latitude in decimal degrees
- `birth_longitude` (number): Birth longitude in decimal degrees
- `return_year` (number): Year for solar return calculation (e.g., 2024)
- `return_latitude` (number, optional): Solar return location latitude
- `return_longitude` (number, optional): Solar return location longitude
**Returns:**
- `natal_chart`: Original birth chart data
- `solar_return_chart`: Solar return chart for the specified year
- `natal_sun_longitude`: Original Sun position in degrees
- `return_sun_longitude`: Solar return Sun position in degrees
- `calculation_time`: Timestamp of calculation
### `calculate_synastry`
Calculate synastry chart between two people for relationship compatibility analysis.
**Parameters:**
- `person1_datetime` (string): Person 1 birth datetime in ISO8601 format
- `person1_latitude` (number): Person 1 birth latitude in decimal degrees
- `person1_longitude` (number): Person 1 birth longitude in decimal degrees
- `person2_datetime` (string): Person 2 birth datetime in ISO8601 format
- `person2_latitude` (number): Person 2 birth latitude in decimal degrees
- `person2_longitude` (number): Person 2 birth longitude in decimal degrees
**Returns:**
- `person1_chart`: Complete birth chart for person 1
- `person2_chart`: Complete birth chart for person 2
- `synastry_aspects`: Array of planetary aspects between the charts
- `calculation_time`: Timestamp of calculation
## Docker
```bash
# Build and run
docker build -t swiss-ephemeris-mcp .
docker run -p 8000:8000 -e MCP_HTTP_MODE=true swiss-ephemeris-mcp
# Health check
curl http://localhost:8000/health
```
## Transport Modes
- **Stdio**: Default mode for Claude Desktop integration
- **HTTP**: Use `MCP_HTTP_MODE=true` for web integration via ngrok
## Links
- **MCP URL**: https://www.theme-astral.me/mcp
- **Repository**: https://github.com/dm0lz/swiss-ephemeris-mcp-server
- **Swiss Ephemeris**: https://www.astro.com/swisseph/
## License
MIT TDQS
A3.7/5.0
Scored across 4 tools
Disambiguation4/5
Each tool targets a distinct astrological calculation (general positions, solar return, synastry, transits), but calculate_planetary_positions and calculate_transits both involve planetary positions, potentially causing confusion. Descriptions help differentiate.
Naming Consistency5/5
All tools use a consistent 'calculate_' verb followed by a snake_case noun phrase, forming a clear and predictable pattern.
Tool Count5/5
With 4 tools, the set is well-scoped for an ephemeris server, covering essential calculations without being overly sparse or bloated.
Completeness4/5
The tools cover key astrological functions (positions, transits, synastry, solar return), but missing some operations like progressions or aspect-only calculations, though these may be included in outputs.
Maintenance
ActivityInactive
ResponsivenessNo issues