2 Commits befd1ea9da ... 26902f7102

Auteur SHA1 Bericht Datum
  Lukas Goldschmidt 26902f7102 refactor: split data/ into ephe/ and cache/ 1 maand geleden
  Lukas Goldschmidt 8708e8820c fix: replace Chiron workaround with complete ephemeris file set 1 maand geleden
56 gewijzigde bestanden met toevoegingen van 15 en 13 verwijderingen
  1. 0 1
      .dockerignore
  2. 2 3
      .gitignore
  3. 2 1
      Dockerfile
  4. 5 2
      README.md
  5. BIN
      data/ephe/seas_00.se1
  6. BIN
      data/ephe/seas_06.se1
  7. BIN
      data/ephe/seas_102.se1
  8. BIN
      data/ephe/seas_108.se1
  9. BIN
      data/ephe/seas_114.se1
  10. BIN
      data/ephe/seas_12.se1
  11. BIN
      data/ephe/seas_120.se1
  12. BIN
      data/ephe/seas_126.se1
  13. BIN
      data/ephe/seas_132.se1
  14. BIN
      data/ephe/seas_138.se1
  15. BIN
      data/ephe/seas_144.se1
  16. BIN
      data/ephe/seas_150.se1
  17. BIN
      data/ephe/seas_156.se1
  18. BIN
      data/ephe/seas_162.se1
  19. BIN
      data/ephe/seas_168.se1
  20. BIN
      data/ephe/seas_18.se1
  21. BIN
      data/ephe/seas_24.se1
  22. BIN
      data/ephe/seas_30.se1
  23. BIN
      data/ephe/seas_36.se1
  24. BIN
      data/ephe/seas_42.se1
  25. BIN
      data/ephe/seas_48.se1
  26. BIN
      data/ephe/seas_54.se1
  27. BIN
      data/ephe/seas_60.se1
  28. BIN
      data/ephe/seas_66.se1
  29. BIN
      data/ephe/seas_72.se1
  30. BIN
      data/ephe/seas_78.se1
  31. BIN
      data/ephe/seas_84.se1
  32. BIN
      data/ephe/seas_90.se1
  33. BIN
      data/ephe/seas_96.se1
  34. BIN
      data/ephe/semo_18.se1
  35. BIN
      data/ephe/semo_30.se1
  36. BIN
      data/ephe/semo_36.se1
  37. BIN
      data/ephe/semo_42.se1
  38. BIN
      data/ephe/semo_48.se1
  39. BIN
      data/ephe/semo_54.se1
  40. BIN
      data/ephe/semo_60.se1
  41. BIN
      data/ephe/semo_66.se1
  42. BIN
      data/ephe/semo_72.se1
  43. BIN
      data/ephe/semo_78.se1
  44. BIN
      data/ephe/sepl_18.se1
  45. BIN
      data/ephe/sepl_30.se1
  46. BIN
      data/ephe/sepl_36.se1
  47. BIN
      data/ephe/sepl_42.se1
  48. BIN
      data/ephe/sepl_48.se1
  49. BIN
      data/ephe/sepl_54.se1
  50. BIN
      data/ephe/sepl_60.se1
  51. BIN
      data/ephe/sepl_66.se1
  52. BIN
      data/ephe/sepl_72.se1
  53. BIN
      data/ephe/sepl_78.se1
  54. 3 3
      docker-compose.yml
  55. 1 1
      src/ephemeris_mcp/__init__.py
  56. 2 2
      src/ephemeris_mcp/config.py

+ 0 - 1
.dockerignore

@@ -5,7 +5,6 @@ __pycache__/
 .mypy_cache/
 .ruff_cache/
 logs/
-data/
 *.pyc
 *.pyo
 *.pyd

+ 2 - 3
.gitignore

@@ -5,9 +5,8 @@ __pycache__/
 .ruff_cache/
 *.pyc
 logs/
-data/*
-!data/seas_18.se1
-data/*.bsp
+data/cache/
+data/ephe/*.bsp
 uvicorn.log
 server.log
 server.pid

+ 2 - 1
Dockerfile

@@ -15,8 +15,9 @@ RUN pip install --no-cache-dir -r requirements.txt
 
 COPY main.py ./
 COPY src ./src
+COPY data/ephe ./data/ephe
 
-RUN mkdir -p /app/data /app/logs
+RUN mkdir -p /app/data/cache /app/logs
 
 EXPOSE 7015
 

+ 5 - 2
README.md

@@ -100,8 +100,11 @@ The server is exposed on the LAN at `192.168.0.249:7015` and mounts MCP at
 
 ## Data files
 
-- Chiron requires the Swiss Ephemeris main asteroid file `seas_18.se1` in `./data/`.
-- If that file is missing, `get_planetary_positions` will still return the other bodies, but Chiron will error until the file is present.
+- Chiron requires Swiss Ephemeris asteroid ephemeris files in `./data/`.
+- The time-segmented files `seas_00.se1` through `seas_168.se1` cover Chiron from ~675 CE to ~4650 CE.
+- The files `sepl_*.se1` and `semo_*.se1` are needed for far-future dates (beyond 3000 CE).
+- If any of these files are missing, `get_planetary_positions` will still return the other bodies, but Chiron will error until the files are present.
+- All files are from the Swiss Ephemeris distribution (based on JPL DE441), available at https://github.com/aloistr/swisseph/tree/master/ephe
 
 ## Docker
 

BIN
data/ephe/seas_00.se1


BIN
data/ephe/seas_06.se1


BIN
data/ephe/seas_102.se1


BIN
data/ephe/seas_108.se1


BIN
data/ephe/seas_114.se1


BIN
data/ephe/seas_12.se1


BIN
data/ephe/seas_120.se1


BIN
data/ephe/seas_126.se1


BIN
data/ephe/seas_132.se1


BIN
data/ephe/seas_138.se1


BIN
data/ephe/seas_144.se1


BIN
data/ephe/seas_150.se1


BIN
data/ephe/seas_156.se1


BIN
data/ephe/seas_162.se1


BIN
data/ephe/seas_168.se1


BIN
data/seas_18.se1 → data/ephe/seas_18.se1


BIN
data/ephe/seas_24.se1


BIN
data/ephe/seas_30.se1


BIN
data/ephe/seas_36.se1


BIN
data/ephe/seas_42.se1


BIN
data/ephe/seas_48.se1


BIN
data/ephe/seas_54.se1


BIN
data/ephe/seas_60.se1


BIN
data/ephe/seas_66.se1


BIN
data/ephe/seas_72.se1


BIN
data/ephe/seas_78.se1


BIN
data/ephe/seas_84.se1


BIN
data/ephe/seas_90.se1


BIN
data/ephe/seas_96.se1


BIN
data/ephe/semo_18.se1


BIN
data/ephe/semo_30.se1


BIN
data/ephe/semo_36.se1


BIN
data/ephe/semo_42.se1


BIN
data/ephe/semo_48.se1


BIN
data/ephe/semo_54.se1


BIN
data/ephe/semo_60.se1


BIN
data/ephe/semo_66.se1


BIN
data/ephe/semo_72.se1


BIN
data/ephe/semo_78.se1


BIN
data/ephe/sepl_18.se1


BIN
data/ephe/sepl_30.se1


BIN
data/ephe/sepl_36.se1


BIN
data/ephe/sepl_42.se1


BIN
data/ephe/sepl_48.se1


BIN
data/ephe/sepl_54.se1


BIN
data/ephe/sepl_60.se1


BIN
data/ephe/sepl_66.se1


BIN
data/ephe/sepl_72.se1


BIN
data/ephe/sepl_78.se1


+ 3 - 3
docker-compose.yml

@@ -11,11 +11,11 @@ services:
     environment:
       EPHEMERIS_HOST: 0.0.0.0
       EPHEMERIS_PORT: 7015
-      EPHEMERIS_DATA_DIR: /app/data
+      EPHEMERIS_DATA_DIR: /app/data/ephe
       EPHEMERIS_LOG_DIR: /app/logs
-      EPHEMERIS_DB_PATH: /app/data/ephemeris.sqlite3
+      EPHEMERIS_DB_PATH: /app/data/cache/ephemeris.sqlite3
     volumes:
-      - ./data:/app/data
+      - ./data/cache:/app/data/cache
       - ./logs:/app/logs
     healthcheck:
       test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:7015/health').read()"]

+ 1 - 1
src/ephemeris_mcp/__init__.py

@@ -6,4 +6,4 @@ lunar state, satellite passes) as structured JSON via MCP.
 No interpretation, no zodiac, no charting.
 """
 
-__version__ = "0.1.0"
+__version__ = "0.2.0"

+ 2 - 2
src/ephemeris_mcp/config.py

@@ -15,9 +15,9 @@ def _optional_float(name: str) -> float | None:
         return None
     return float(raw)
 
-DATA_DIR = Path(os.getenv("EPHEMERIS_DATA_DIR", BASE_DIR / "data"))
+DATA_DIR = Path(os.getenv("EPHEMERIS_DATA_DIR", BASE_DIR / "data" / "ephe"))
 LOG_DIR = Path(os.getenv("EPHEMERIS_LOG_DIR", BASE_DIR / "logs"))
-DB_PATH = Path(os.getenv("EPHEMERIS_DB_PATH", DATA_DIR / "ephemeris.sqlite3"))
+DB_PATH = Path(os.getenv("EPHEMERIS_DB_PATH", BASE_DIR / "data" / "cache" / "ephemeris.sqlite3"))
 
 DEFAULT_LAT = _optional_float("EPHEMERIS_DEFAULT_LAT")
 DEFAULT_LON = _optional_float("EPHEMERIS_DEFAULT_LON")