
Standup from your activity
io.github.sathvic-kollu由 GitHub 帳號 sathvic-kollu 發布v0.1.0更新於 Nov 3, 2026
Generate your daily standup from real GitHub, Jira, Linear, and Slack activity.
概覽
在本機執行、唯讀的 MCP 伺服器,依 GitHub、Jira、Linear 與 Slack 的實際活動,按工作項目產生每日站立會議草稿。
- 可以做什麼
- 產生站立會議草稿(昨天/今天/阻礙),依工作項目彙整,預設取上一個工作日並自動涵蓋週末
- 依嚴重程度掃描阻礙項目,綜合「被阻擋/等待中」措辭、待審 PR、停滯的進行中票券與求助請求
- 把一週活動彙整為「已交付/進行中」,用於一對一會談與週報
- 依時間倒序檢視跨所有已連接工具的活動摘要
- 列出已接上的資料來源,或說明目前是否使用內建示範資料
- 適用情境
- 適合每天要寫站立會議或每週要寫狀態回報、且工作紀錄已存在於 GitHub、Jira、Linear 或 Slack 的人,用來取得可編輯的事實草稿,不必憑記憶重寫。也方便找出自己忘了提的阻礙。
- 執行需求
- 透過 stdio 在本機執行,通常以 npx 從 npm 套件啟動,需要 Node.js。各資料來源憑證為選用:GITHUB_TOKEN,JIRA_BASE_URL 加上 JIRA_EMAIL 與 JIRA_API_TOKEN,LINEAR_API_KEY,以及 SLACK_TOKEN(機器人權杖另需 SLACK_CHANNELS);STANDUP_NAME 為選用。未設定任何憑證時使用示範資料。需要能連線至這些工具 API 的網路。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Standup from your activity,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
standup-mcp
Generate your daily standup from what you actually did, across GitHub, Jira, Linear, and Slack.
[npm version] [license] [node] [MCP]
Every standup, you stop and reconstruct yesterday from memory: which commits, which PR, which ticket you moved, that Slack thread where you said you were stuck. The work is already recorded across your tools. Re-typing it is the chore everyone hates, so updates come out vague ("worked on the thing") and real blockers go unsaid.
standup-mcp reads that activity back and writes the draft for you. You ask your AI assistant "what should I say at standup today?" and it answers from your real GitHub, Jira, Linear, and Slack activity: grouped by work item, in concrete deltas, with blockers it noticed on its own.
It is a standard Model Context Protocol server, so it works in any MCP client (Claude, Cursor, Cline, and more) on any model. It is local and read-only: nothing about your activity leaves your machine except the calls to those tools' own APIs, and it needs no AI API key of its own. The host client supplies the model.
See it in 30 seconds (no accounts needed)
The server ships with a realistic demo dataset and runs against it automatically when no credentials are set, so you see the output before connecting anything:
That prints a full standup from a synthetic day across all four tools. Here is the headline tool:
Notice the GitHub commits, the GitHub PR, and the Jira move all collapsed under PROJ-412, and the blocker was lifted from a Slack message on its own. Nobody typed any of that.
(Running npx -y standup-mcp with no flag starts the MCP server on stdio, which is what an MCP client launches. Use --demo to see output in a plain terminal.)
What it does
Five tools. Every one defaults to the last working day, and Monday automatically reaches back across the weekend, so you rarely pass arguments.
What you can ask
You talk to it in plain language through your AI client:
- "What should I say at standup today?"
- "Give me Monday's standup covering the weekend."
- "What is blocking me right now?"
- "Summarize what I shipped this week for my 1:1."
- "What did I actually do yesterday?"
Principles it follows
- Only observed activity. It reports commits, PRs, ticket moves, and messages that exist. It never invents progress to fill a quiet day; a quiet day is reported as one.
- Grouped by work item, not by tool. Reviewers think in tickets, so the commit, the PR, the Jira move, and the Slack thread for PROJ-412 become one line, not four.
- Blockers from signals, not self-report. People forget to say they are stuck, so it infers it.
- A draft, not an auto-post. You get editable markdown to paste wherever your team already does standup (Slack, Geekbot, a doc, a ticket). It does not post on your behalf.
Example: blocker_scan
Example: weekly_summary
Privacy
This is the part most tools gloss over. standup-mcp is built so that using it does not feel like installing surveillance on yourself:
- Local. It runs on your machine, inside your AI client. There is no standup-mcp server or account.
- Read-only. Every token it asks for is used only to read your activity. It never writes, posts, or moves anything.
- No AI key, no third party. It makes no LLM calls of its own. Your activity is sent only to the APIs of the tools you connect, and to your existing AI client's model. It is not sent to me or anyone else.
- It is yours, not your manager's. It generates your own update for you to review and edit, not a feed of your activity for someone else.
Connect your tools
Set any subset. Whatever you configure, it uses; with nothing set, it stays in demo mode. Restart the server after changing these.
Verify your connections before wiring it into a client:
It prints, per source, the authenticated identity or a clear error.
Connect your AI client
standup-mcp speaks the Model Context Protocol, so any MCP-capable client can use it, whichever model is behind it: Claude Desktop, Claude Code, Cursor, Cline, Continue, Zed, Windsurf, and more. The server uses no AI API key of its own.
Claude Desktop
Add this to claude_desktop_config.json (Settings, Developer, Edit Config), then restart Claude Desktop:
Leave the env block out entirely to run in demo mode first. Include only the sources you use.
Claude Code
Cursor, Cline, Continue, Zed, Windsurf, and others
These read the same mcpServers JSON as Claude Desktop, in the client's own MCP config. Use the block above. The server is identical; only the model driving the client differs.
How it works
The design goal is a clean seam between each tool and the standup logic.
- One activity model. GitHub commits, Jira moves, Linear state changes, and Slack messages all normalize to a single
ActivityEvent. Nothing downstream knows which tool a fact came from, which is exactly what lets it group by work item across tools. - One provider, many sources. Each source is an independent read-only client behind a common interface. The aggregator fans out to whichever are configured and tolerates any one failing, so a misconfigured Slack token never sinks your standup.
- Pure-function engine. Grouping, blocker detection, and the draft are pure functions over normalized events. They run identically on demo data and live data, and the tests run them directly.
- No model in the server. The server assembles a factual draft; your AI client phrases it. That is why it needs no AI key and why it can promise it never invents work.
What has been verified
- All five tools run end to end over real MCP stdio (
npm test). - The parse heuristics (work-item keys, blocker language, noise filters) are unit tested (
test/normalize.test.ts). - The engine is unit tested, including the Monday-covers-the-weekend window, work-item grouping, blocker severity, and the assembled draft (
test/draft.test.ts). - The whole engine is exercised against the demo dataset and reconciles across tools (
npm run smoke).
The demo dataset proves the engine. It does not prove each live client against every real account shape, which is why the parse layer is unit tested separately and each source is kept small and tolerant. Run --check to confirm your own connections, and if a response shape does not parse cleanly on your account, open an issue.
Roadmap
- A
team_standupview that rolls up several people for the PM running the meeting - Calendar sources (meetings as activity, so a meeting-heavy day reads honestly)
- GitLab and Bitbucket
- Cycle-time and "what changed since I last looked" digests
- OAuth flows in addition to tokens
Built by Sathvic Kollu
I run delivery for SaaS and fintech teams, and I build tools like this with Claude Code. If this saves you the daily standup chore, I would like to hear how you use it.
- Website: sathvickollu.com
- LinkedIn: linkedin.com/in/sathvic-kollu
Issues and pull requests are welcome.
License
MIT. See LICENSE.
來源:README.md,提交 8e30b8d
工具
0版本歷史
1- v0.1.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分