Momentum

Momentum

A deterministic scoring engine for prioritizing workstreams across projects and clients, answering 'what should I work on right now?' with auditable rankings based on staleness, deadlines, revenue weight, and cascade risk.

Category
访问服务器

README

Momentum

An MCP server that answers "what should I work on right now?" across a portfolio of workstreams — clients, projects, initiatives — with a score you can audit, not a guess.

Point Claude (or any MCP client) at it and ask "what now?". It returns a ranked board where every position is explained: stale 11 days past a weekly cadence; deadline in 2 days; revenue-bearing. The ranking is computed in deterministic Python. No language model is in the scoring path.


Why this exists

Most "AI productivity" tooling asks a model to rank your priorities. That's the wrong job for a model. Ranking needs to be consistent (the same inputs produce the same order every time) and explainable (you can see exactly why something is #1). Language models are neither by construction — they're non-deterministic and their reasoning isn't inspectable.

So Momentum splits the labor the way it should be split:

  • Code decides the ranking. Four weighted factors, computed from your data, fully reproducible.
  • The model handles language and judgment. It decides when to call a tool, interprets your shorthand ("just wrapped the ACME spec"), and presents the result conversationally.

This is the same principle behind well-designed agent systems generally: keep the deterministic hot path in code, and reserve the model for the parts that genuinely need judgment. It's easier to trust, easier to debug, and it doesn't drift.


How the score works

Each active workstream is scored 0–100 from four factors, combined by weights you set in config:

Factor What it measures
staleness How far past its review cadence a workstream has drifted. A weekly workstream untouched for 11 days is stale; touched today resets it to zero.
deadline_pressure Proximity of the nearest goal or task deadline, ramping up as the date approaches and maxing out once overdue.
revenue_weight Configurable emphasis for revenue-bearing work, with an optional weekday/weekend split so billable client work outranks internal work during the work week.
cascade_risk Risk propagated from stale upstream dependencies. If workstream A feeds workstream B with a strong edge and A goes stale, B's risk rises — because B is about to be blocked.

A daily capacity check-in (energy 1–5, available focus hours) applies a state modifier on top. On low-energy days the engine biases toward workstreams you've flagged as low-effort-compatible, so a depleted afternoon surfaces the proposal-follow-up instead of the hardest build on the board.

Everything — the weights, the tier thresholds, the cadence definitions, the per-workstream revenue and low-capacity values — lives in a JSON config and is hot-reloadable. Re-tuning the ranking never requires touching code.


The tools

Tool Purpose
get_now The headline read: overdue tasks, due-today tasks, top 5 ranked workstreams with next actions and reasons.
compute_priorities Force a re-rank. Pass energy_override to preview how a capacity level would reshuffle the board.
quick_update Log progress on a workstream and set its next action. Re-ranks and reports the new position.
write_checkin Record daily capacity/energy; trips low-capacity mode when energy ≤ 2.
list_workstreams The portfolio, filterable by status.
workstream_status Full report on one workstream: state, log, goals, dependencies, tasks, priority history.
workstream_manage Create / pause / archive / re-cadence a workstream.
sync_tasks Upsert external tasks (from a task-tool MCP) into a workstream's cache.
mark_task_disposition Record a task outcome and return routing for Claude to push the change upstream.
reload_config Re-read config without restarting.

The cross-MCP brokering pattern

An MCP server can't call another MCP server directly. Momentum needs live task data from a task tool (TickTick, ClickUp) but stays dependency-free by making Claude the broker:

  1. sync_tasks takes rows Claude has already read from the task-tool MCP and caches them locally, so deadlines factor into the score.
  2. mark_task_disposition updates the local cache and returns a routing block naming the exact downstream MCP tool and params to call. Claude then executes that call.

The server never reaches across the boundary; it hands Claude a precise instruction and lets the model bridge the two servers. This keeps Momentum self-contained and portable across whatever task tool a given workstream uses.


Quick start

python -m venv .venv && source .venv/bin/activate
pip install fastmcp

# create and seed a demo database (a small consulting portfolio)
MOMENTUM_DB_PATH=./momentum.db python init_db.py

# create your config from the example
cp config.example.json config.json

# run the server
MOMENTUM_DB_PATH=./momentum.db MOMENTUM_CONFIG_PATH=./config.json python server.py

Then register it with your MCP client. Example Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "momentum": {
      "command": "/path/to/.venv/bin/python",
      "args": ["/path/to/momentum-mcp/server.py"],
      "env": {
        "MOMENTUM_DB_PATH": "/path/to/momentum.db",
        "MOMENTUM_CONFIG_PATH": "/path/to/config.json"
      }
    }
  }
}

Replace every /path/to/ with the real absolute path on your machine — the interpreter, server.py, the database, and your config. Use full paths starting with /Users/...; ~ is not reliably expanded here. A leftover placeholder is the most common cause of a "Failed to spawn process" error in the logs.

Restart your MCP client, then ask Claude: "What should I focus on right now?" → it calls get_now and walks you through the ranked board.

Tuning the ranking

config.json is where you customize weights, tier thresholds, revenue rules, and low-capacity fit — edit it to match your own workstreams. Every key is optional; anything you omit falls back to the engine defaults, so a minimal config file works fine. config.json is gitignored so your real tuning never lands in the repo. Use the reload_config tool to apply edits without restarting.


Design notes

  • Config over code. No user- or business-specific value is hardcoded. Weights, thresholds, cadences, and per-workstream rules are all external and hot-reloadable. The default config runs sensibly with no file at all.
  • Fail fast on config. Required paths come from environment variables set by the MCP client. A missing MOMENTUM_DB_PATH is a hard error at import rather than a silent fallback that breaks subtly on another machine.
  • Tools never raise. Every tool returns {"status": "ok" | "error", ...}. A bad input surfaces as a structured error the model can read and relay, not a stack trace that kills the session.
  • SQLite in WAL mode, foreign keys on. Durable, concurrent-read-friendly, zero-infrastructure.
  • Tool descriptions are written for the model. Each docstring states plainly when to call the tool and disambiguates likely confusions (e.g. "workstreams" are your tracked areas of effort, not DNS domains) — because a tool the model can't reliably select is a tool that doesn't work.

Provenance

Momentum is the open, generalized core of a private personal-operating-system MCP server the author built to run several businesses and a research project in parallel. The scoring engine, the cross-MCP brokering pattern, and the config-driven architecture are lifted directly from that system and reframed for a professional workstream portfolio. The same engine could be configured to rank any set of things, personal or professional, competing for finite attention and resources.

License

MIT.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选