Skip to content

fix(mcp-server): drop undefined cron, pass tier run notes, 1800s timeout, current examples - #1190

Merged
aaronjmars merged 1 commit into
mainfrom
fix/mcp-server-drift
Oct 7, 2026
Merged

aaronjmars merged 1 commit into
mainfrom
fix/mcp-server-drift

Conversation

@aaronjmars

Copy link
Copy Markdown
Collaborator

Four small drifts between the local MCP server (apps/mcp-server) and the scheduled run path.

What changed

  1. No more "(cron: undefined)" in tool descriptions. catalog/skills.json stopped carrying schedules (see bin/generate-skills-json), so every tool description ended in "(cron: undefined)". The server now reads each skill's schedule: from its line in aeon.yml, using the same single-line lookup it already uses for the per-skill harness: (now one shared helper). Descriptions show "(cron: )", "(on-demand)" for workflow_dispatch, "(reactive)" for reactive, and no suffix if a skill has no aeon.yml entry. Skill.schedule is now optional.
  2. Tier run notes reach the harness. The workflow passes --append-system-prompt "$(scripts/skill_mode.sh run-notes <mode>)" to run-harness; the MCP path did not. It now calls the same run-notes command for the resolved mode and passes it the same way (only when non-empty, like the workflow).
  3. Timeout matches the workflow. The server used 600s; the workflow passes --timeout 1800 to run-harness. Both the run-harness flag and the Node kill timer now use one 1800s constant. The README line that claimed the old value matched Actions is corrected.
  4. Real example tools. bin/add-mcp suggested aeon-hn-digest and aeon-deep-research, which no longer exist. They are now aeon-digest and aeon-article (both in catalog/skills.json). Also fixed the stale index.ts header example and the wrong script path in docs/examples/mcp/test_connection.py.

How it was verified

  • npm run build and npm run typecheck in apps/mcp-server pass.
  • Spoke MCP over stdio (initialize + tools/list): 85 tools, equal to the 85 catalog entries, none containing "undefined". Suffixes: 49 cron, 35 on-demand, 1 reactive.
  • No-cost run test with a fake claude on PATH that dumps its argv: called aeon-heartbeat (write) and aeon-competitor-monitor (read-only) through tools/call. Both returned the fake result, and the --append-system-prompt value the fake received was byte-identical to scripts/skill_mode.sh run-notes <mode> for each tier.
  • shellcheck bin/add-mcp is clean and scripts/lint-shell.sh passes; the add-mcp banner still lines up.

…out, current examples

- Tool descriptions read each skill's schedule from aeon.yml (the catalog no
  longer carries one), so they show "cron: <expr>", "on-demand" or "reactive"
  instead of "cron: undefined". Skill.schedule is now optional.
- run-harness now gets --append-system-prompt with scripts/skill_mode.sh
  run-notes <mode>, as the scheduled workflow passes.
- Per-run timeout is 1800s, matching the workflow's run-harness --timeout.
- bin/add-mcp and docs use skills that exist (aeon-digest, aeon-article).
@aaronjmars
aaronjmars merged commit e20445b into main Oct 7, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant