@starascendin/lifeos-mcp 0.3.4 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.3.4";
2
- export declare const BUILD_TIME = "2026-01-29T19:29:59.103Z";
1
+ export declare const VERSION = "0.4.1";
2
+ export declare const BUILD_TIME = "2026-02-03T17:44:02.201Z";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Regenerated on every build.
2
- export const VERSION = "0.3.4";
3
- export const BUILD_TIME = "2026-01-29T19:29:59.103Z";
2
+ export const VERSION = "0.4.1";
3
+ export const BUILD_TIME = "2026-02-03T17:44:02.201Z";
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ import { Command } from "commander";
19
19
  import { VERSION, BUILD_TIME } from "./build-info.js";
20
20
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
21
21
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
22
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
22
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
23
23
  // Parse CLI arguments
24
24
  const program = new Command();
25
25
  program
@@ -1576,6 +1576,274 @@ const TOOLS = [
1576
1576
  },
1577
1577
  },
1578
1578
  ];
1579
+ // Prompt definitions — workflow-level skills that chain multiple tools
1580
+ const PROMPTS = [
1581
+ {
1582
+ name: "daily-standup",
1583
+ description: "Get daily standup briefing: agenda, tasks due today, sprint progress.",
1584
+ arguments: [
1585
+ {
1586
+ name: "date",
1587
+ description: "Specific date in ISO format (optional, defaults to today)",
1588
+ required: false,
1589
+ },
1590
+ ],
1591
+ },
1592
+ {
1593
+ name: "weekly-review",
1594
+ description: "Run weekly review: completed work, in-progress items, sprint health, blockers.",
1595
+ arguments: [
1596
+ {
1597
+ name: "date",
1598
+ description: "Week start date in ISO format (optional, defaults to this week)",
1599
+ required: false,
1600
+ },
1601
+ ],
1602
+ },
1603
+ {
1604
+ name: "sprint-plan",
1605
+ description: "Plan the current sprint: review backlog, assign tasks to cycle, check capacity.",
1606
+ arguments: [
1607
+ {
1608
+ name: "notes",
1609
+ description: "Additional context or specific tasks to include (optional)",
1610
+ required: false,
1611
+ },
1612
+ ],
1613
+ },
1614
+ {
1615
+ name: "contact-lookup",
1616
+ description: "Full contact dossier: profile, AI insights, meetings, messages, voice memos.",
1617
+ arguments: [
1618
+ {
1619
+ name: "name",
1620
+ description: "Person's name to look up (required)",
1621
+ required: true,
1622
+ },
1623
+ ],
1624
+ },
1625
+ {
1626
+ name: "client-brief",
1627
+ description: "Full client briefing: projects, phases, completion stats, recent communications.",
1628
+ arguments: [
1629
+ {
1630
+ name: "client",
1631
+ description: "Client name or ID (required)",
1632
+ required: true,
1633
+ },
1634
+ ],
1635
+ },
1636
+ {
1637
+ name: "project-status",
1638
+ description: "Project status report: phases, task breakdown, blockers, urgent items.",
1639
+ arguments: [
1640
+ {
1641
+ name: "project",
1642
+ description: "Project key like 'ACME' or project name (required)",
1643
+ required: true,
1644
+ },
1645
+ ],
1646
+ },
1647
+ {
1648
+ name: "capture",
1649
+ description: "Quick capture a thought, task, or note. Auto-routes to task or note based on content.",
1650
+ arguments: [
1651
+ {
1652
+ name: "input",
1653
+ description: "What to capture — a task, idea, or note (required)",
1654
+ required: true,
1655
+ },
1656
+ ],
1657
+ },
1658
+ {
1659
+ name: "meeting-prep",
1660
+ description: "Prepare for a meeting: contact dossier, past meetings, recent messages, open items.",
1661
+ arguments: [
1662
+ {
1663
+ name: "name",
1664
+ description: "Person's name to prep for (required)",
1665
+ required: true,
1666
+ },
1667
+ ],
1668
+ },
1669
+ ];
1670
+ // Prompt message templates keyed by prompt name
1671
+ const PROMPT_MESSAGES = {
1672
+ "daily-standup": (args) => {
1673
+ const dateClause = args.date ? `Use date: ${args.date}` : "Use today's date.";
1674
+ return [{
1675
+ role: "user",
1676
+ content: {
1677
+ type: "text",
1678
+ text: `Get my daily standup briefing. Use the LifeOS MCP tools to gather:
1679
+
1680
+ 1. Call get_daily_agenda for today's agenda (tasks due today, calendar events, top priorities)
1681
+ 2. Call get_todays_tasks for today's task list
1682
+ 3. Call get_current_cycle for current sprint progress and stats
1683
+
1684
+ ${dateClause}
1685
+
1686
+ Summarize in a concise standup format:
1687
+ - **Today's Focus**: Top 3 things to focus on
1688
+ - **Tasks Due**: List tasks due today with priority
1689
+ - **Sprint Progress**: Cycle completion % and key stats
1690
+ - **Calendar**: Any meetings or events today
1691
+
1692
+ Keep it short and actionable.`,
1693
+ },
1694
+ }];
1695
+ },
1696
+ "weekly-review": (args) => {
1697
+ const dateClause = args.date ? `Use week start date: ${args.date}` : "Use this week.";
1698
+ return [{
1699
+ role: "user",
1700
+ content: {
1701
+ type: "text",
1702
+ text: `Run my weekly review. Use the LifeOS MCP tools to gather:
1703
+
1704
+ 1. Call get_weekly_agenda for this week's agenda and AI summary
1705
+ 2. Call get_current_cycle for sprint progress
1706
+ 3. Call get_tasks with status "done" to see what was completed
1707
+ 4. Call get_tasks with status "in_progress" to see what's still in flight
1708
+ 5. Call get_tasks with status "todo" to see upcoming work
1709
+
1710
+ ${dateClause}
1711
+
1712
+ Present a weekly review:
1713
+ - **Completed**: What got done this week
1714
+ - **In Progress**: What's still being worked on
1715
+ - **Sprint Health**: Cycle progress, burndown status
1716
+ - **Blockers**: Anything overdue or stuck
1717
+ - **Next Week**: Key items to tackle`,
1718
+ },
1719
+ }];
1720
+ },
1721
+ "sprint-plan": (args) => {
1722
+ const notesClause = args.notes ? `Additional context: ${args.notes}` : "";
1723
+ return [{
1724
+ role: "user",
1725
+ content: {
1726
+ type: "text",
1727
+ text: `Help me plan my sprint. Use the LifeOS MCP tools:
1728
+
1729
+ 1. Call get_current_cycle to see the active sprint and its current state
1730
+ 2. Call get_tasks with status "backlog" to see unplanned work
1731
+ 3. Call get_tasks with status "todo" to see already planned work
1732
+ 4. Call get_projects with status "in_progress" to see active projects
1733
+
1734
+ ${notesClause}
1735
+
1736
+ Then help me plan:
1737
+ - Show current sprint capacity (what's already assigned vs. remaining)
1738
+ - List backlog items by priority, grouped by project
1739
+ - Suggest which backlog items to pull into the sprint based on priority
1740
+ - If I provide specific tasks, create issues and assign them to the current cycle
1741
+
1742
+ Ask me to confirm before creating or assigning any issues.`,
1743
+ },
1744
+ }];
1745
+ },
1746
+ "contact-lookup": (args) => [{
1747
+ role: "user",
1748
+ content: {
1749
+ type: "text",
1750
+ text: `Look up everything about a contact. Use the LifeOS MCP tools:
1751
+
1752
+ 1. Call get_contact_dossier with nameQuery "${args.name}" to get the full profile
1753
+ - This returns: person info, AI profile, Beeper threads, Granola meetings (with AI notes and calendar events), and voice memos
1754
+
1755
+ Present the dossier in a structured format:
1756
+ - **Profile**: Name, relationship type, contact info, notes
1757
+ - **AI Insights**: Communication style, personality, relationship tips (if available)
1758
+ - **Recent Interactions**: Last few voice memos, meetings, and messages — sorted by recency
1759
+ - **Meeting History**: Granola/Fathom meetings with key takeaways
1760
+ - **Chat Threads**: Beeper conversation threads linked to this person`,
1761
+ },
1762
+ }],
1763
+ "client-brief": (args) => [{
1764
+ role: "user",
1765
+ content: {
1766
+ type: "text",
1767
+ text: `Get a full client briefing for "${args.client}". Use the LifeOS MCP tools:
1768
+
1769
+ 1. Call get_clients to find the matching client
1770
+ 2. Call get_client with the client ID for full details
1771
+ 3. Call get_projects_for_client to see all their projects and completion stats
1772
+ 4. Call get_beeper_threads_for_client to see linked chat threads
1773
+
1774
+ For each active project, also call get_phases to see phase breakdown.
1775
+
1776
+ Present as a client brief:
1777
+ - **Client Overview**: Name, status, description
1778
+ - **Projects**: Each project with status, health, priority, and phase breakdown
1779
+ - **Completion Stats**: Issues done vs total across all projects
1780
+ - **Recent Comms**: Latest Beeper thread activity
1781
+ - **Action Items**: Any overdue or urgent tasks for this client`,
1782
+ },
1783
+ }],
1784
+ "project-status": (args) => [{
1785
+ role: "user",
1786
+ content: {
1787
+ type: "text",
1788
+ text: `Get project status for "${args.project}". Use the LifeOS MCP tools:
1789
+
1790
+ 1. Call get_project with the project key/ID
1791
+ 2. Call get_phases for the project to see phase breakdown
1792
+ 3. Call get_tasks filtered by the project ID to see all issues
1793
+
1794
+ Present a project status report:
1795
+ - **Overview**: Name, status, health, priority, client (if linked)
1796
+ - **Phases**: Each phase with status and issue counts
1797
+ - **Task Breakdown**: Count by status (backlog / todo / in_progress / in_review / done)
1798
+ - **Urgent/Overdue**: Any urgent or overdue tasks
1799
+ - **In Progress**: What's actively being worked on
1800
+ - **Blockers**: Anything that looks stuck`,
1801
+ },
1802
+ }],
1803
+ "capture": (args) => [{
1804
+ role: "user",
1805
+ content: {
1806
+ type: "text",
1807
+ text: `Quick capture: "${args.input}"
1808
+
1809
+ Analyze the input and determine what type of capture this is:
1810
+
1811
+ **If it's a task/action item** (contains action verbs, deadlines, assignments):
1812
+ - Use create_issue from LifeOS MCP tools
1813
+ - Infer priority from urgency cues (e.g., "urgent", "ASAP" = urgent; "soon" = high; default = medium)
1814
+ - If a project is mentioned, look it up with get_projects and assign it
1815
+ - If a due date is mentioned, parse and set it
1816
+
1817
+ **If it's a thought/note** (observations, ideas, reminders):
1818
+ - Use create_quick_note from LifeOS MCP tools
1819
+ - Extract tags from context (e.g., topic keywords)
1820
+
1821
+ **If ambiguous**, default to creating a quick note.
1822
+
1823
+ After creating, confirm what was captured with the ID/identifier.`,
1824
+ },
1825
+ }],
1826
+ "meeting-prep": (args) => [{
1827
+ role: "user",
1828
+ content: {
1829
+ type: "text",
1830
+ text: `Prepare for a meeting with "${args.name}". Use the LifeOS MCP tools:
1831
+
1832
+ 1. Call get_contact_dossier with nameQuery "${args.name}" for full context
1833
+ 2. Call get_granola_meetings_for_person for past meeting notes
1834
+ 3. If person is linked to a client, call get_projects_for_client for project status
1835
+ 4. Call get_beeper_threads_for_person and for the most recent thread, call get_beeper_thread_messages to see latest messages
1836
+
1837
+ Compile a meeting prep brief:
1838
+ - **About**: Who they are, relationship type, communication style (from AI profile)
1839
+ - **Last Interaction**: When you last met/talked and what was discussed
1840
+ - **Open Items**: Any action items or tasks related to them or their projects
1841
+ - **Recent Messages**: Key points from recent Beeper conversations
1842
+ - **Past Meetings**: Summary of last 3 meetings with key decisions/takeaways
1843
+ - **Suggested Talking Points**: Based on open items and recent context`,
1844
+ },
1845
+ }],
1846
+ };
1579
1847
  // Configuration: CLI flags take precedence over env vars
1580
1848
  // NOTE: HTTP routes are served from .convex.site, NOT .convex.cloud
1581
1849
  const CONVEX_URL = options.url || process.env.CONVEX_URL;
@@ -1637,12 +1905,31 @@ const server = new Server({
1637
1905
  }, {
1638
1906
  capabilities: {
1639
1907
  tools: {},
1908
+ prompts: {},
1640
1909
  },
1641
1910
  });
1642
1911
  // Handle list tools request
1643
1912
  server.setRequestHandler(ListToolsRequestSchema, async () => {
1644
1913
  return { tools: TOOLS };
1645
1914
  });
1915
+ // Handle list prompts request
1916
+ server.setRequestHandler(ListPromptsRequestSchema, async () => {
1917
+ return { prompts: PROMPTS };
1918
+ });
1919
+ // Handle get prompt request
1920
+ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
1921
+ const { name, arguments: args } = request.params;
1922
+ const messageBuilder = PROMPT_MESSAGES[name];
1923
+ if (!messageBuilder) {
1924
+ throw new Error(`Unknown prompt: ${name}`);
1925
+ }
1926
+ const prompt = PROMPTS.find((p) => p.name === name);
1927
+ const messages = messageBuilder(args || {});
1928
+ return {
1929
+ description: prompt?.description,
1930
+ messages,
1931
+ };
1932
+ });
1646
1933
  // Handle tool calls
1647
1934
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
1648
1935
  const { name, arguments: args } = request.params;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starascendin/lifeos-mcp",
3
- "version": "0.3.4",
3
+ "version": "0.4.1",
4
4
  "description": "MCP server for LifeOS Project Management - manage projects, tasks, notes, and contacts via AI assistants",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",