standup-mr
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITHUB_HOST | No | GitHub API host. Defaults to github.com when using GitHub. | |
| GITLAB_HOST | No | GitLab API host (e.g., gitlab.com or a self-hosted instance). | |
| GITHUB_TOKEN | No | GitHub personal access token for authenticated API access. | |
| GITLAB_TOKEN | No | GitLab personal access token for authenticated API access. | |
| STANDUP_PROVIDER | No | Provider to use when it cannot be inferred from the environment. Values: 'github' or 'gitlab'. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_standup_dataA | Collect merge-request-based standup data from GitLab or GitHub. Returns one JSON object: Call it once at the start of a working day, to write a standup note. It is a snapshot, not a search API: it cannot fetch one named merge request, reach further back than the previous working day, or filter by project. Read-only, and credentials never come from an argument — they come from the environment or a logged-in gh / glab session. A rejected token, a refused resource or a rate limit fails the call with the host's own message, after two retries on transient server errors. A blocker whose diagnosis could not be fetched is still returned, with |
| post_standup_noteA | Posts a finished standup note to a chat webhook. This one has a side effect: it sends a message other people will see, so only call it on a note the user has agreed to send. The webhook URL is read from STANDUP_WEBHOOK_URL, never from an argument — a webhook URL is a credential, since anyone holding it can post to the channel. Slack and Discord payload shapes are supported; the shape is inferred from the URL host, and |
| get_note_instructionsA | Returns the note-writing rules — the playbook for turning get_standup_data output into a standup note a person would actually say out loud: how to group the previous day by theme, how to derive today from open merge requests, and how to report a blocker from its job log. Read-only, no arguments, no network. Call it once before writing the first note; the rules do not change between calls. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| standup | Writes your standup note from merge request state: what you did, what is ready or blocked today, and why any pipeline is red. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
The three tools form a clear pipeline: fetch data, fetch writing rules, then post the note. Each has a distinct purpose and no two could reasonably be confused (read vs write, data vs rules vs delivery).
All three follow a consistent verb_noun pattern (get_standup_data, post_standup_note, get_note_instructions) in snake_case, with no deviations.
Three tools map exactly onto the workflow's essential steps—fetch snapshot, fetch playbook, post note—with nothing redundant or missing.
The surface covers the full standup workflow end to end. Minor gaps are inherent to the stated scope (read-only snapshot, no MR search/filter), which is documented rather than an oversight.