io.github.w8s/w8s-astro-mcp
PYPI · W8S-ASTRO-MCP · SCANNED SEP 20
Natal charts, transits, history, ingress forecasting, aspects, composite & Davison charts — SQLite.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 2 of 51 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (AGPL-3.0-or-later).Pass
- Actively maintained (last published 0 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability74
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4431 tokens (~147/item across 30 items; 30 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_profile" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 31 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.w8s/w8s-astro-mcp server?
io.github.w8s/w8s-astro-mcp runs locally as a PyPI package, launched with uvx w8s-astro-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · w8s-astro-mcp
claude mcp add w8s-w8s-astro-mcp -- uvx w8s-astro-mcp
{
"mcpServers": {
"w8s-w8s-astro-mcp": {
"command": "uvx",
"args": [
"w8s-astro-mcp"
]
}
}
} {
"servers": {
"w8s-w8s-astro-mcp": {
"command": "uvx",
"args": [
"w8s-astro-mcp"
]
}
}
} codex mcp add w8s-w8s-astro-mcp -- uvx w8s-astro-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"w8s-w8s-astro-mcp": {
"type": "local",
"command": [
"uvx",
"w8s-astro-mcp"
],
"enabled": true
}
}
} openclaw mcp add w8s-w8s-astro-mcp --command uvx --arg w8s-astro-mcp
mcp_servers:
w8s-w8s-astro-mcp:
command: "uvx"
args: ["w8s-astro-mcp"] {
"McpServers": {
"w8s-w8s-astro-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"w8s-astro-mcp"
]
}
}
} assistant mcp add w8s-w8s-astro-mcp -t stdio -c uvx -a w8s-astro-mcp
{
"mcpServers": {
"w8s-w8s-astro-mcp": {
"command": "uvx",
"args": [
"w8s-astro-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- Schema quality: 133 → 147 ▼ functional
- Stability: unverified → 0.03 ▲ functional
- Package version: 0.12.1 → 0.14.0 functional
- 19 Sept 26 +45
- Injection markers: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool safety: Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 0 functional
- First check of Tool coverage: 100 functional
- Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
- Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 0.12.0 → 0.12.1 functional
- 17 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 12 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 11 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 22 Aug 26 40
- Source repository: unverified → pass ▲ security
- 21 Aug 26 0
- Provenance: pass → unverified ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/w8s-astro-mcp@0.14.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 51 packages
| Packages resolved | 51 |
|---|---|
| Stale | 2 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_connection_member ~61
Add a profile to an existing connection. Note: adding a member invalidates any cached charts for this connection.
| Name | Type | Req | Description |
|---|---|---|---|
| connection_id | integer | yes | Connection ID (from list_connections) |
| profile_id | integer | yes | Profile ID to add (from list_profiles) |
No output schema declared.
No examples provided.
add_location ~130
Add a saved location (home, office, travel destination, etc.) for a profile. Every location must belong to a specific profile.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | yes | Location label (e.g., 'Office', 'Vacation Home') |
| latitude | number | yes | Latitude in decimal degrees |
| longitude | number | yes | Longitude in decimal degrees |
| profile_id | integer | yes | Profile ID this location belongs to (required) |
| set_as_home | boolean | – | Optional: Set as current home location for this profile |
| timezone | string | yes | Timezone (e.g., 'America/Los_Angeles') |
No output schema declared.
No examples provided.
cast_event_chart ~263
Cast an astrological chart for any date, time, and location. No profile required — useful for historical events, mundane astrology, and electional work. If 'label' is provided, the chart is saved to the database and can be referenced later via compare_charts using 'event:<label>'. If 'label' is omitted, the chart is calculated and returned but not saved.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Date in YYYY-MM-DD format |
| description | string | – | Optional notes about this event |
| label | string | – | Optional unique name to save this chart for later reference. If omitted, chart is calculated but not saved. Must be unique among all saved event charts. |
| latitude | number | yes | Latitude in decimal degrees |
| location_name | string | yes | Human-readable location name (e.g., 'Chicago, IL') |
| longitude | number | yes | Longitude in decimal degrees |
| profile_id | integer | – | Optional profile ID to associate this event with a person |
| time | string | yes | Time in HH:MM format, local time at the given location (converted to UT using the timezone) |
| timezone | string | yes | IANA timezone name (e.g., 'America/Chicago'); used to convert the local time to UT |
No output schema declared.
No examples provided.
check_ephemeris ~62
Check the current ephemeris mode and precision level. Reports whether the built-in Moshier ephemeris (~1 arcminute) or Swiss Ephemeris data files (~0.001 arcsecond) are active, and shows the pysweph version.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
compare_charts ~496
Calculate aspects between two charts. Use for synastry (comparing two natal charts), transits (comparing natal chart with current positions), or event chart analysis. Finds conjunctions, oppositions, trines, squares, sextiles, and minor aspects. Each aspect names the chart each body belongs to (natal, transit, event) and, when a chart carries planet speeds (transit charts), whether the aspect is applying or separating with an estimated time of exactness. Times are UT. Transit-chart angles use the owner's current home location.
| Name | Type | Req | Description |
|---|---|---|---|
| chart1_date | string | yes | Date for first chart (YYYY-MM-DD), use 'natal' for a natal chart, or 'event:<label>' for a saved event chart |
| chart1_profile_id | integer | – | Profile ID for chart1 when chart1_date is 'natal' (from list_profiles). Defaults to owner profile. |
| chart1_time | string | – | Time for first chart in HH:MM format, interpreted as UT (optional, defaults to 12:00) |
| chart2_date | string | yes | Date for second chart (YYYY-MM-DD), use 'natal' for a natal chart, 'today' for current, or 'event:<label>' for a saved event chart |
| chart2_profile_id | integer | – | Profile ID for chart2 when chart2_date is 'natal' (from list_profiles). Defaults to owner profile. |
| chart2_time | string | – | Time for second chart in HH:MM format, interpreted as UT (optional, defaults to 12:00) |
| format | string | – | Output format. 'text' (default) is human-readable. 'json' returns structured data with numeric orb, applying, days_to_exact and exact_utc fields. |
| include_angles | string | – | Which charts contribute their angles (Ascendant, MC, etc.). 'natal' uses only the natal chart's angles - the usual choice for transits, since the transit sky's own angles change every few minutes and… |
| orb_multiplier | number | – | Multiplier for aspect orbs (optional, default 1.0) |
| planets_only | boolean | – | Legacy switch, kept for compatibility: true (default) compares planets only; false also compares the angles of both charts. Prefer include_angles, which overrides this. |
No output schema declared.
No examples provided.
create_connection ~127
Create a new connection between two or more profiles for synastry or composite/Davison chart analysis. Requires at least 2 profile IDs. Use list_profiles to find profile IDs first.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | yes | Name for this connection (e.g., 'Alice & Bob', 'Family Trio') |
| profile_ids | array | yes | List of profile IDs to include (minimum 2) |
| start_date | string | – | Optional date the relationship began (YYYY-MM-DD) |
| type | string | – | Optional connection type (e.g., 'romantic', 'family', 'business') |
No output schema declared.
No examples provided.
create_profile ~270
Create a new astrological profile (for friends, family, synastry analysis, etc.). After creating, ask user if this should be their current profile. IMPORTANT: Ask for information conversationally: 1. Ask: 'What's their name?' 2. Ask: 'What's their birthday?' (get YYYY-MM-DD) 3. Ask: 'Do you know what time they were born? (If not, we can use 12:00)' 4. Ask: 'Where were they born?' (get city, state/country) Then look up coordinates and confirm before saving.
| Name | Type | Req | Description |
|---|---|---|---|
| birth_date | string | yes | Birth date in YYYY-MM-DD format |
| birth_latitude | number | yes | Latitude in decimal degrees |
| birth_location_name | string | yes | Location name (e.g., 'New York, NY') |
| birth_longitude | number | yes | Longitude in decimal degrees |
| birth_time | string | yes | Birth time in HH:MM format (24-hour), local time at the birth location (converted to UT using birth_timezone) |
| birth_timezone | string | yes | IANA timezone of the birth location (e.g., 'America/New_York'); used to convert the local birth time to UT |
| name | string | yes | Person's name (e.g., 'Sarah Johnson') |
No output schema declared.
No examples provided.
delete_connection ~58
Delete a connection and all its cached charts. WARNING: Permanent and cannot be undone. Does not affect the member profiles themselves.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | yes | Must be true to confirm deletion |
| connection_id | integer | yes | Connection ID to delete |
No output schema declared.
No examples provided.
delete_event_chart ~52
Delete a saved event chart by label. WARNING: Permanent and cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | yes | Must be true to confirm deletion |
| label | string | yes | Label of the event chart to delete |
No output schema declared.
No examples provided.
delete_profile ~81
Delete a profile from the database. WARNING: This is permanent and cannot be undone. Deletes the profile and all associated natal chart data. If this is the owner profile, owner_profile_id will be set to NULL.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | yes | Must be true to confirm deletion |
| profile_id | integer | yes | Profile ID to delete (get from list_profiles) |
No output schema declared.
No examples provided.
dismiss_data_notice ~81
Stop the 'Data notice' about stored natal charts that need recalculating, until a different chart becomes affected. Call this ONLY when the user asks not to be reminded; it does not fix anything. Use undo=true to bring the notice back.
| Name | Type | Req | Description |
|---|---|---|---|
| undo | boolean | – | If true, bring the notice back instead of dismissing it (default false) |
No output schema declared.
No examples provided.
download_ephemeris_files ~125
Download Swiss Ephemeris data files for higher-precision calculations. Upgrades from built-in Moshier ephemeris (~1 arcminute) to full Swiss Ephemeris files (~0.001 arcsecond). Downloads ~2 MB from the official Swiss Ephemeris GitHub repository to ~/.w8s-astro-mcp/ephe/. Use check_ephemeris first to see current precision mode.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to proceed. Omit or set false to preview file details (names, sizes, source, destination) first. |
No output schema declared.
No examples provided.
find_electional_windows ~387
Scan a time window and return candidate moments that satisfy electional astrology criteria. Useful for finding auspicious times to start a project, sign a contract, hold an event, etc. Scans at a configurable interval (default 60 minutes) and scores each moment against the requested criteria. Returns candidates ranked by score (most criteria met first), then by tightness. Maximum window: 90 days. Maximum interval: 360 minutes (6 hours). Minimum interval: 15 minutes. Available criteria: - moon_not_void: Moon is not void of course - no_retrograde_inner: Mercury and Venus are direct - no_retrograde_outer: Mars through Pluto are direct - no_retrograde_all: All planets are direct - moon_waxing: Moon is waxing (New to Full) - moon_waning: Moon is waning (Full to New) - benefic_angular: Venus or Jupiter in houses 1, 4, 7, or 10 - asc_not_late: Ascendant is not in the last 3° of its sign
| Name | Type | Req | Description |
|---|---|---|---|
| criteria | array | yes | Criteria to evaluate at each interval |
| end_date | string | yes | End of scan window (YYYY-MM-DD, max 90 days from start) |
| interval_minutes | integer | – | Minutes between scan steps (15–360, default 60) |
| latitude | number | yes | Latitude for the charts |
| location_name | string | yes | Human-readable location name |
| longitude | number | yes | Longitude for the charts |
| max_results | integer | – | Maximum number of candidates to return (default 10) |
| start_date | string | yes | Start of scan window (YYYY-MM-DD) |
| timezone | string | yes | IANA timezone: start_date and end_date are local dates in this timezone, and results are shown in local time |
No output schema declared.
No examples provided.
find_house_placements ~229
Determine which house each planet occupies in a chart. Can use a natal chart (via profile_id or owner default) or a connection chart (composite/Davison via connection_id + chart_type) as the house reference frame. Shows both which planets are in each house and which house each planet is in.
| Name | Type | Req | Description |
|---|---|---|---|
| chart_type | string | – | Which connection chart to use as the house reference frame. Required when connection_id is supplied. |
| connection_id | integer | – | Connection ID whose composite/Davison houses to use as the reference frame (from list_connections). Requires chart_type. Mutually exclusive with profile_id. |
| date | string | yes | Date for the planets to place (YYYY-MM-DD), 'natal' for birth chart planets, or 'today' for current sky |
| profile_id | integer | – | Profile ID whose natal houses to use as the reference frame (from list_profiles). Defaults to owner profile. Mutually exclusive with connection_id. |
| time | string | – | Time in HH:MM format, interpreted as UT (optional, defaults to 12:00) |
No output schema declared.
No examples provided.
find_last_transit ~173
Find the most recent logged transit where a planet met specific conditions. Examples: 'when was Mercury last retrograde?', 'when was the Moon last in Scorpio?', 'when was Mars last in my 7th house?'. Requires at least one of: sign, retrograde, or house.
| Name | Type | Req | Description |
|---|---|---|---|
| house | integer | – | Natal house number to match, 1-12 (optional) |
| planet | string | yes | Planet name, e.g. 'Mercury', 'Mars' |
| profile_id | integer | – | Profile ID to query (from list_profiles). Defaults to owner profile. |
| retrograde | boolean | – | If true, find last retrograde; if false, find last direct (optional) |
| sign | string | – | Zodiac sign to match, e.g. 'Capricorn' (optional) |
No output schema declared.
No examples provided.
get_connection_chart ~161
Calculate (or retrieve cached) a composite or Davison chart for a connection. COMPOSITE: Each planet position is the circular mean of all members' natal positions. No swetest call needed — pure math on cached natal data. DAVISON: A real chart cast for the midpoint datetime and location of all members' births. Requires a swetest call. Birth times are converted to UTC before averaging, so timezone data in each profile's birth location is used. Results are cached in the database. Use invalidate=true to force recalculation.
| Name | Type | Req | Description |
|---|---|---|---|
| chart_type | string | yes | Type of chart to calculate |
| connection_id | integer | yes | Connection ID (from list_connections) |
| invalidate | boolean | – | Force recalculation even if cached (default: false) |
No output schema declared.
No examples provided.
get_ingresses ~256
Scan the ephemeris for upcoming or recent planetary sign ingresses and stations (retrograde/direct). Examples: 'what transits are coming up this month?', 'when does Mercury go retrograde?', 'show me major transits next April', 'what were the outer planet movements during the Renaissance?'. Use offset to shift the window from today. Use extended=true for historical or far-future windows (outer planets only).
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Number of days to scan. Normal mode: default 30, max 365. Extended mode: default 30, max 3650. |
| extended | boolean | – | If true, removes offset cap and raises scan cap to 3650 days, but only returns outer planets (Jupiter through Pluto). Inner planets are excluded in extended mode — they produce thousands of events ov… |
| future | boolean | – | True = scan forward from today+offset (default), False = backward |
| offset | integer | – | Days from today to start the scan window (default 0). Normal mode: max 36500 (~100 years). Extended mode: uncapped. |
No output schema declared.
No examples provided.
get_natal_chart ~57
Get the natal chart (birth chart) planetary positions for a profile. Defaults to the owner profile if no profile_id is supplied.
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | integer | – | Profile ID to query (from list_profiles). Defaults to owner profile. |
No output schema declared.
No examples provided.
get_transit_history ~198
Query historical transit lookups stored in the database for a profile. Defaults to the owner profile. Supports filtering by date range, planet, and sign. Examples: 'show me last month\'s transits', 'when was Mercury in Capricorn?', 'what sign was Jupiter in last year?'
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Return lookups on or after this date (YYYY-MM-DD, optional) |
| before | string | – | Return lookups on or before this date (YYYY-MM-DD, optional) |
| limit | integer | – | Max number of results to return (default 20, max 100) |
| planet | string | – | Filter by planet name, e.g. 'Mercury' (optional) |
| profile_id | integer | – | Profile ID to query (from list_profiles). Defaults to owner profile. |
| sign | string | – | Filter by zodiac sign, e.g. 'Capricorn' — requires planet (optional) |
No output schema declared.
No examples provided.
get_transits ~172
Get planetary transits for a specific date and location. Location can be a saved label ('home', 'work', 'birth'), or any city/place name ('Seattle', 'Bangkok, Thailand', 'Paris') — unknown names are geocoded automatically. Defaults to current home location if omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Date in YYYY-MM-DD format (optional, defaults to today) |
| location | string | – | Saved label ('home', 'work', 'birth') or any city name ('Bangkok, Thailand', 'Seattle, WA'). Defaults to 'current'. |
| profile_id | integer | – | Profile ID to query (from list_profiles). Defaults to owner profile. |
| time | string | – | Time in HH:MM format, interpreted as UT (optional, defaults to 12:00) |
No output schema declared.
No examples provided.
list_connections ~28
List all connections with their member names and IDs. Use this to find connection IDs before requesting charts.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_event_charts ~61
List all saved event charts. Shows label, date/time, location, and optional description. Saved charts can be used in compare_charts via 'event:<label>'.
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | integer | – | Optional: filter to events associated with a specific profile |
No output schema declared.
No examples provided.
list_profiles ~45
List all astrological profiles in the database. Shows profile names, birth dates, and which is currently active. Use this to see all available profiles before creating, updating, or switching.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
remove_connection_member ~62
Remove a profile from a connection. Connection must retain at least 2 members. Note: removing a member invalidates any cached charts.
| Name | Type | Req | Description |
|---|---|---|---|
| connection_id | integer | yes | Connection ID (from list_connections) |
| profile_id | integer | yes | Profile ID to remove |
No output schema declared.
No examples provided.
remove_location ~44
Remove a saved location. WARNING: Cannot remove locations that are set as birth locations for profiles.
| Name | Type | Req | Description |
|---|---|---|---|
| location_id | integer | yes | Location ID to remove (get from view_config) |
No output schema declared.
No examples provided.
setup_astro_config ~233
Configure birth data and location for transit calculations. IMPORTANT: Ask the user for information conversationally in steps: 1. Ask: 'What's your birthday?' (get YYYY-MM-DD) 2. Ask: 'Do you know what time you were born? (If not, we can use 12:00)' (get HH:MM) 3. Ask: 'Where were you born?' (get city, state/country) Then look up coordinates and confirm with user before saving.
| Name | Type | Req | Description |
|---|---|---|---|
| birth_date | string | yes | Birth date in YYYY-MM-DD format |
| birth_latitude | number | yes | Latitude in decimal degrees |
| birth_location_name | string | yes | Location name (e.g., 'Richardson, TX') |
| birth_longitude | number | yes | Longitude in decimal degrees |
| birth_time | string | yes | Birth time in HH:MM format (24-hour), local time at the birth location (converted to UT using the timezone) |
| birth_timezone | string | yes | IANA timezone of the birth location (e.g., 'America/Chicago'); used to convert the local birth time to UT |
No output schema declared.
No examples provided.
setup_owner ~92
Set who you are — the human operating this server. This is a one-time setup step, not a session operation. The owner profile is the stable identity used as the default for get_natal_chart, get_transits, and all other tools when no profile_id is supplied. Use list_profiles to find your profile_id.
| Name | Type | Req | Description |
|---|---|---|---|
| profile_id | integer | yes | Profile ID to set as owner (get from list_profiles) |
No output schema declared.
No examples provided.
update_profile ~94
Update a profile field (name, birth date, birth time, etc.). Use with caution - changing birth data invalidates cached natal chart. Valid fields: name, birth_date, birth_time
| Name | Type | Req | Description |
|---|---|---|---|
| field | string | yes | Field to update (name, birth_date, birth_time) |
| profile_id | integer | yes | Profile ID to update (get from list_profiles) |
| value | string | yes | New value for the field |
No output schema declared.
No examples provided.
view_config ~20
View current astrological configuration (birth data and saved locations)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
visualize_natal_chart ~117
Generate a circular natal chart visualization and save to file. Creates a traditional astrological chart wheel with zodiac signs, houses, planets, and angles.
| Name | Type | Req | Description |
|---|---|---|---|
| output_path | string | – | Path where to save the chart image (e.g., '~/Downloads/natal_chart.png'). Defaults to 'natal_chart.png' in current directory. |
| profile_id | integer | – | Profile ID to visualize (from list_profiles). Defaults to owner profile. |
| title | string | – | Custom title for the chart (optional, defaults to 'Natal Chart') |
No output schema declared.
No examples provided.
What is the io.github.w8s/w8s-astro-mcp server?
io.github.w8s/w8s-astro-mcp is listed in the public MCP registry as io.github.w8s/w8s-astro-mcp. Natal charts, transits, history, ingress forecasting, aspects, composite & Davison charts, SQLite. This page covers its PyPI package (w8s-astro-mcp).
Is the io.github.w8s/w8s-astro-mcp server safe to use?
io.github.w8s/w8s-astro-mcp scores 55 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.w8s/w8s-astro-mcp server expose?
io.github.w8s/w8s-astro-mcp exposes 30 tools: dismiss_data_notice, check_ephemeris, download_ephemeris_files, setup_astro_config, view_config, and 25 more. Their descriptions and schemas cost roughly 4,235 tokens of context every time the server is loaded.
Is the io.github.w8s/w8s-astro-mcp server still maintained?
io.github.w8s/w8s-astro-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.w8s/w8s-astro-mcp server under?
io.github.w8s/w8s-astro-mcp declares the AGPL-3.0-or-later licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.