Agent Standup

Agent Standup

An MCP server enabling AI coding agents to interact with a task tracker that enforces rules server-side, replacing markdown files and hooks with a database, CLI, and web UI.

Category
访问服务器

README

Agent Standup

A task tracker for AI coding agents. Replaces folders-of-markdown plus a 1,000-line PowerShell script with a real app: a database, a rules engine every change goes through, an MCP so agents can talk to it, a CLI for the parts MCP can't do, and a web front end.

The shift: today the rules live in hooks that ask agents to behave. Here they live in the backend and are enforced — the server refuses the change.

Docs

Everything is in docs/plans/:

Doc What it is
PLAN.md The readable plan — how it works, in plain terms
SCHEMA.md Tables, config, MCP tools, HTTP endpoints
DECISIONS.md Every decision with its reasoning
MILESTONES.md The work, broken into pull requests, in order

Stack

Next.js (front end and API in one bundle) · Prisma · Postgres. The image is built in CI, pushed to GHCR, and pulled wherever it runs — never built on the deploy host, no bind mounts.

Local development

Requires Node 24 and Docker (for local Postgres).

cp .env.example .env          # fill in DATABASE_URL etc.
npm install
npm run db:up                 # starts local Postgres on a non-default port
npx prisma migrate deploy     # apply the committed migrations
npx prisma generate
npm run dev                   # http://localhost:3000

Useful scripts:

Command What it does
npm run dev Next.js dev server
npm run build / npm start Production build / run it
npm run typecheck tsc --noEmit
npm run lint / npm run format ESLint / Prettier (:check variants exist for CI)
npm test Vitest
npm run db:migrate Create/apply a dev migration (prisma migrate dev)
npm run db:deploy Apply committed migrations without prompting (prisma migrate deploy)
npm run db:check-drift Fail if schema.prisma and prisma/migrations disagree — needs SHADOW_DATABASE_URL pointed at an empty, disposable Postgres
npm run db:studio Prisma Studio

The initial baseline migration (the whole schema in one shot — see SCHEMA.md) lives in prisma/migrations/. CI applies it to a throwaway Postgres on every run and fails if schema.prisma and the migration history have drifted apart.

Deployment

The image is built by .github/workflows/release.yml on a version tag or manual dispatch, and pushed to ghcr.io/<owner>/agent-standup tagged latest and the version. The package is public, so pulling it needs no registry credential. Wherever it runs, pull and run it with docker-compose.prod.yml:

GHCR_IMAGE=ghcr.io/<owner>/agent-standup:latest
DATABASE_URL=postgres://user:password@host:5432/agent_standup
docker compose --env-file .env.production -f docker-compose.prod.yml pull
docker compose --env-file .env.production -f docker-compose.prod.yml up -d

docker-compose.prod.yml has no build: block and no bind mounts by design — it only ever pulls. It ships a health check on GET /api/health (liveness only — deliberately doesn't touch the database, so a slow DB doesn't make the process report unhealthy).

Postgres

This app needs its own Postgres reachable via DATABASE_URL. Prefer a dedicated Postgres instance over adding a database to one that already serves another app — it keeps credentials, backups, and version upgrades independent, and the cost of one more small container is low. Only share an existing instance if there's a specific reason to (e.g. a hosting limit on how many database services are allowed).

If Postgres runs as its own container next to this one, order startup with depends_on: condition: service_healthy — the entrypoint runs prisma migrate deploy at boot, which opens a real database connection even when there are zero pending migrations (expect and ignore No migration found in prisma/migrations until the baseline migration ships — see MILESTONES.md). Give Postgres's own health check a generous start_period: a cold first boot (initdb plus the official image's own internal restart) can take noticeably longer than a short window allows, which can make depends_on give up right before Postgres would have come up healthy on its own.

Deploying alongside other services

Some hosts run several unrelated apps under one shared Docker Compose project rather than one compose file per app — a shared .env holding per-service location/config variables, one compose file defining every service, sub-folders per service holding data only. If that's the target, fold this app's service block (and a Postgres block per the section above) into the shared file instead of running docker-compose.prod.yml standalone — the service definitions are the same either way, only which file they live in changes. In that setup:

  • Back up the shared compose file first, before editing it.
  • Never run a bare up, down, or restart with no service names in a directory that already has other services running from that file — always name the services you mean to affect explicitly, e.g. docker compose up -d agent-standup agent-standup-db. An unscoped command recreates (or stops) everything the file defines, not just what you're deploying.
  • Pick a host port that isn't already in use — check what the shared compose file and the host's listening ports already claim before adding APP_PORT.
  • Keep real secrets (the generated DATABASE_URL password, etc.) only in that host's own .env — never copied into this repo.

Status

The boilerplate is in place: app skeleton, CI, Dockerfile, and compose files. The database schema has its initial migration, but nothing queries it yet — the API surface described in SCHEMA.md isn't built. See MILESTONES.md for the build order.

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选