Skip to main content
Glama

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:

npx -y standup-mcp --demo

That prints a full standup from a synthetic day across all four tools. Here is the headline tool:

# Standup: Jordan Lee
_since Tue Jun 16. Demo data, no credentials configured._

## Yesterday
- **PROJ-412 Biometric re-auth** · opened PR #128, 3 commits, latest "handle expired challenge edge case", moved to In Progress, posted an update
- **ENG-88 Rate-limit the export endpoint** · 2 commits, latest "tests for limiter window", moved to In Progress, posted an update
- **PROJ-407 Card dispute webhook** · merged PR #125, moved to In Review
- Reviewed PR #129: Tidy currency formatting helpers

## Today
- Continue **PROJ-412 Biometric re-auth**
- Continue **ENG-88 Rate-limit the export endpoint**
- Land PR #128: Add biometric re-auth (review pending)
- Review PR #130: Refactor request logging

## Blockers
- 🔴 **PROJ-412 Biometric re-auth** · flagged blocked: "Blocked on the vendor sandbox creds for PROJ-412. Waiting on infra to provision them before I can test the re-auth flow…"; awaiting review

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.)

Related MCP server: Slack Gitlab Digest Model Context Protocol MCP Server

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.

Tool

What you get

standup_draft

Your standup: Yesterday / Today / Blockers, grouped by work item, in concrete deltas. The answer to "what should I say at standup?"

blocker_scan

Everything blocking you, ranked by severity, fused from explicit "blocked / waiting on" language, PRs awaiting review, stalled in-progress tickets, and help requests.

weekly_summary

A week of activity rolled into Shipped vs In progress, with reviews and totals. For 1:1s, weekly status, and self-reviews.

activity_digest

A chronological "what actually happened" across all tools, newest first, grouped by day.

list_sources

Which sources are wired, or that you are on demo data.

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.

# Blockers
_since Tue Jun 16. Demo data._

**1 blocker**: 1 high, 0 medium, 0 low.

- 🔴 **PROJ-412 Biometric re-auth** (slack) · flagged blocked: "Blocked on the vendor sandbox creds for PROJ-412. Waiting on infra to provision them before I can test the re-auth flow…"; awaiting review
# Weekly summary: Jordan Lee
_the last 7 days. Demo data._

## Shipped
- **PROJ-407 Card dispute webhook**

## In progress
- **PROJ-412 Biometric re-auth**
- **ENG-88 Rate-limit the export endpoint**

## Reviews and support
- Reviewed 1 PR for teammates

_3 work items touched, 1 PR merged, 5 commits._

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.

Variable

Source

Notes

GITHUB_TOKEN

GitHub

Read-only PAT. Reads your commits, PRs, and reviews.

JIRA_BASE_URL JIRA_EMAIL JIRA_API_TOKEN

Jira

Cloud site, account email, and an API token. Reads your ticket moves.

LINEAR_API_KEY

Linear

A personal API key. Reads your issue state changes and comments.

SLACK_TOKEN

Slack

A user token (xoxp) with search:read scans your own messages for blocker language. With a bot token instead, also set SLACK_CHANNELS (comma-separated channel ids) since bots cannot search.

STANDUP_NAME

optional

Display name for the standup's owner. Without it, the GitHub handle is used.

Verify your connections before wiring it into a client:

GITHUB_TOKEN=ghp_xxx LINEAR_API_KEY=lin_xxx npx -y standup-mcp --check

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:

{
  "mcpServers": {
    "standup": {
      "command": "npx",
      "args": ["-y", "standup-mcp"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token",
        "JIRA_BASE_URL": "https://your-company.atlassian.net",
        "JIRA_EMAIL": "you@company.com",
        "JIRA_API_TOKEN": "your-jira-token",
        "LINEAR_API_KEY": "lin_api_your_key",
        "SLACK_TOKEN": "xoxp-your-token"
      }
    }
  }
}

Leave the env block out entirely to run in demo mode first. Include only the sources you use.

Claude Code

claude mcp add standup \
  -e GITHUB_TOKEN=ghp_your_token \
  -e LINEAR_API_KEY=lin_api_your_key \
  -- npx -y standup-mcp

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.

src/
  index.ts            MCP server, stdio transport, --demo/--check/--help
  config.ts           per-source env resolution, demo-mode detection
  window.ts           the weekend-aware "since last standup" window
  provider.ts         aggregator that fans out to configured sources
  types.ts            ActivityEvent and the source/provider interfaces
  normalize.ts        work-item key extraction, signal and noise detection
  sources/            github, jira, linear, slack clients, plus the demo provider
  analytics/          grouping, blockers, draft, weekly, digest (pure functions)
  tools/              one MCP tool per file, thin wrappers over analytics

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_standup view 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.

Issues and pull requests are welcome.

License

MIT. See LICENSE.

Available Tools

5 tools
activity_digestActivity DigestA

A chronological digest of everything you did in a window across the configured tools, newest first, grouped by day. Use it to reconstruct what actually happened, separate from the opinionated standup framing.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook back this many days from now instead of the default window.
sinceNoISO date/time start of the window, e.g. 2026-06-16. Overrides the default. Default covers the last working day (Monday reaches back to Friday).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral transparency burden. It discloses output ordering (newest first), grouping (by day), and cross-tool scope (across the configured tools), which goes beyond the schema. While it doesn't explicitly state 'read-only', the digest nature strongly implies a non-mutating query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose and directly followed by a usage directive. No redundant or filler wording; each clause contributes meaningful information about the tool's behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 optional params, no output schema) and the description explains the return structure and scope adequately. It mentions default window indirectly via schema, and sibling tools like standup_draft and weekly_summary provide additional context for when this digest is the right choice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters, explaining 'days' as look-back and 'since' as an ISO start override with default behavior. The description itself doesn't mention parameters, but with full schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as 'a chronological digest of everything you did' with explicit format details (newest first, grouped by day) and scope (across configured tools). It also distinguishes itself from the 'opinionated standup framing', which differentiates it from sibling tool standup_draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use it to reconstruct what actually happened' and contrasts it with standup framing, giving a clear use case. It doesn't name alternatives directly, but the context and sibling tool names make the appropriate choice apparent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

blocker_scanBlocker ScanA

Surface what is blocking you across GitHub, Jira, Linear, and Slack, ranked by severity. Detects blockers from signals, not self-report: explicit 'blocked / waiting on / stuck' language, PRs awaiting review, in-progress tickets that have not moved, and requests for help.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook back this many days from now instead of the default window.
sinceNoISO date/time start of the window, e.g. 2026-06-16. Overrides the default. Default covers the last working day (Monday reaches back to Friday).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It goes beyond a simple action by explaining the detection mechanism: 'Detects blockers from signals, not self-report' and lists specific signal types (explicit language, PRs awaiting review, unmoved tickets, help requests). It also mentions 'ranked by severity,' indicating output ordering. While it does not explicitly state side effects, the nature of a scan tool implies read-only behavior, and the description provides meaningful insight into how the tool operates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first delivers the primary purpose and scope, the second explains the detection methodology. It is concise, front-loaded, and every phrase adds value. No unnecessary filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—scanning four platforms with multiple signal types and no output schema—the description provides a clear overview of what it does and how it detects blockers. It states the result is ranked by severity, which gives an expectation of the output structure. However, it does not detail the exact format of the returned blockers (e.g., grouping by source, severity levels, or links), so a bit more information would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'days' and 'since' well-documented in the input schema. The description does not add additional parameter-level meaning beyond the schema; it merely references the default window in a way that mirrors the schema. Since the schema carries the full burden, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Surface what is blocking you across GitHub, Jira, Linear, and Slack, ranked by severity.' This is a specific verb+resource+scope that distinguishes it from sibling tools like weekly_summary or activity_digest, which likely provide general summaries rather than blocker-specific information. The signal-based detection further clarifies its unique positioning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you need to identify blockers across multiple platforms, especially via signals rather than self-report. It does not explicitly name alternatives or state when not to use it, but the focused purpose ('what is blocking you') provides clear context. The inclusion of detection signals gives additional guidance on the tool's suitability for a given situation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sourcesList SourcesA

Show which activity sources (GitHub, Jira, Linear, Slack) are configured, or that the server is running on demo data. Does not hit the network; run the server with --check to verify live connections.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explicitly states that the tool does not hit the network and may show demo data, which is important behavioral context. It doesn't detail the output format, but for a simple list tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. The main action is first, followed by a clarifying caveat about network behavior and an alternative command.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, this description is complete: it covers purpose, scope, and key behavioral limitation (no network), which is all the context needed to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description adds meaning by explaining what 'sources' refers to (GitHub, Jira, Linear, Slack) and the demo data condition, which effectively serves as the parameter-free documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Show') and identifies the resource (activity sources), listing example sources and the demo data state. This clearly distinguishes it from sibling tools like standup_draft or blocker_scan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains that this tool does not hit the network and suggests running the server with --check for live connection verification, which gives clear context on when to use this static listing versus a live check. However, it does not explicitly name sibling tools or say 'use this when...'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

standup_draftStandup DraftA

Generate your daily standup, what should I say at standup today, from your real activity across the configured tools (GitHub, Jira, Linear, Slack). Returns Yesterday / Today / Blockers grouped by work item, not by tool, in concrete deltas. Defaults to the last working day (Monday reaches back across the weekend). Only reports observed activity; never invents work.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook back this many days from now instead of the default window.
sinceNoISO date/time start of the window, e.g. 2026-06-16. Overrides the default. Default covers the last working day (Monday reaches back to Friday).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavioral traits. It explicitly states 'Only reports observed activity; never invents work,' which is a strong transparency guarantee against hallucinated content. It also discloses the default window behavior (Monday reaches back across the weekend) and the output structure (Yesterday/Today/Blockers grouped by work item). These are valuable beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three well-structured sentences with no redundancy. It front-loads the core purpose, then details output format and behavioral constraints. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential context: what the tool does, what it returns, and default behavior. Since there is no output schema, the description appropriately summarizes the return format. It omits potential edge cases (e.g., no activity found, missing integrations), but for a straightforward standup generator, it is sufficiently complete for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides complete descriptions for both parameters ('days' and 'since'), including default behavior. The description adds minimal extra meaning about the parameters themselves; the comment about the default window is corroborated by the schema, not supplementary. With 100% schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb and resource: 'Generate your daily standup' from real activity. It also distinguishes itself from siblings by emphasizing daily frequency, grouping by work item not tool, and returning concrete deltas. This makes the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool: to generate a daily standup from observed activity. It implies the temporal scope ('Defaults to the last working day') and differentiates from weekly or broader summaries, but it doesn't explicitly name alternatives or state when not to use this tool. This is clear but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weekly_summaryWeekly SummaryA

Roll up a week (or any N days) of your real activity into accomplishments, grouped by work item as Shipped vs In progress, with reviews and totals. For 1:1s, weekly status, and self-reviews. Only reports observed work.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days to summarize. Default 7.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It adds useful behavioral context: 'Only reports observed work' and 'real activity' imply a read-only, evidence-based aggregation. However, it does not explicitly state side-effect-freedom, output format details, or clarify what 'reviews' means, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each earning its place: the first defines the output and grouping, the second lists use cases, and the third adds a key constraint. It is front-loaded with the primary verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description provides a solid sense of the output structure (accomplishments grouped by status, with reviews and totals) and the data source constraint. It does not explain what 'reviews' entails, but overall it is sufficiently complete for an agent to select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers 100% of the one parameter (days) with min/max and default, so the description adds limited extra value. Mentioning 'any N days' aligns with the parameter but does not introduce new syntax or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool rolls up activity into accomplishments, grouped by work item as Shipped vs In progress, with reviews and totals. This specific verb+resource structure distinguishes it from siblings like activity_digest or standup_draft, which focus on raw activity or daily updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names intended use cases: 'For 1:1s, weekly status, and self-reviews.' It also implies when not to use it via 'Only reports observed work,' indicating it is not for planned or speculative activity. However, it does not explicitly name alternatives or exclusion criteria beyond that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedactivity_digest
    • First observedblocker_scan
    • First observedlist_sources
    • First observedstandup_draft
    • First observedweekly_summary

TDQS

A4.3/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct purpose: standup_draft for daily summaries, blocker_scan for identifying blockers, weekly_summary for longer-term rollups, activity_digest for raw chronological data, and list_sources for inspecting configured sources. There is no overlap that would cause an agent to select the wrong tool.

Naming Consistency3/5

Names are all lowercase snake_case with no style mixing, but the word order is inconsistent: list_sources follows verb_noun (imperative), while standup_draft, blocker_scan, weekly_summary, and activity_digest are object_verb or noun-based compounds. This mixed pattern is readable but not predictable.

Tool Count5/5

With 5 tools, the server is well-scoped for its purpose of generating standup and activity reports. Each tool provides a meaningful function without redundancy or unnecessary bloat, sitting comfortably in the ideal range.

Completeness5/5

The domain covers daily standup generation, blocker detection, weekly summaries, raw activity retrieval, and source status. There are no obvious gaps for the stated purpose; the tools form a cohesive set for both quick standups and deeper review.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers