Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 38 additions & 5 deletions mcp_svc/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,42 @@

mcp = MCPServer(
name='orthocal',
instructions=(
'Look up Eastern Orthodox liturgical calendar data: feasts, fasting '
'rules, scripture readings, and lives of the saints for a given day, '
'or search for a saint by name.'
),
instructions='''\
Look up Eastern Orthodox liturgical calendar data: feasts, fasting rules,
scripture readings, and lives of the saints for a given day, or search for a
saint by name.

Choosing tradition and calendar:
- tradition=slavic follows OCA/ROCOR practice; tradition=greek follows Greek
Orthodox (GOARCH) and Antiochian practice. Ask, or infer from the user's
jurisdiction, when it matters -- feasts, readings, and fasting differ.
- calendar=gregorian is the New (Revised Julian) calendar; calendar=julian is
the Old calendar used by ROCOR, most Slavic churches, Jerusalem, and Mount
Athos. Greek-tradition users are almost always on the New calendar.

Dates:
- get_day always takes the civil (Gregorian) date the user is living on. With
calendar=julian, the year/month/day in the result are the church-calendar
(Julian) date, which is 13 days earlier -- e.g. civil January 7 returns
December 25, the Nativity. Report the civil date to the user.
- search_saints returns the fixed church-calendar month/day of each
commemoration. On the New calendar that is also the civil date. On the Old
calendar, add 13 days to get the civil date (1900-2099) before calling
get_day. Moveable feasts tied to Pascha are not found by search_saints.

Workflow: to tell someone about a saint, call search_saints, then get_day on
the resulting civil date for the full life (in stories) and the readings.

Reading results:
- summary_title is the best one-line name for the day.
- For fasting, combine fast_level_desc with fast_exception_desc, or use
fast_abstentions for a plain list of foods to avoid. These reflect the
strict typikon; suggest the user follow their parish or spiritual father's
guidance on local practice.
- abbreviated_reading_indices picks out the main readings (usually the
liturgy's Epistle and Gospel); use them for a short answer and the full
readings list when asked for everything.
- Each reading's passage is a list of verses; stories are HTML, so strip
markup when quoting them.
''',
)
4 changes: 2 additions & 2 deletions mcp_svc/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ async def get_day(
selects Slavic (OCA/ROCOR) or Greek (Antiochian/GOARCH) practice.
translation selects the Bible translation for English readings --
lxx2012-web (the default, a modern-English pairing of the Brenton
Septuagint and the World English Bible) or kjv (King James Version);
it has no effect on non-English content.
Septuagint and the World English Bible), kjv (King James Version), or
douay-rheims (Douay-Rheims); it has no effect on non-English content.
"""

try:
Expand Down
Loading