MCP server for storing and retrieving GitHub/GitLab tokens by org/group keywords, with per-project scoping and encrypted vault support
Server has 5 well-named tools with complete input schemas and descriptions. Naming follows verb_noun pattern (add_token, get_git_credential_for_org, import_tokens, list_tokens, remove_token). All tools have descriptions 100+ chars. Input schemas include types and enums. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (no recovery guidance, no actionable error messages). No tool annotations (readOnlyHint, destructiveHint). Parameter descriptions lack format/constraint details (e.g., tokenName format, token validation rules). Missing idempotency guidance for destructive operations.
Store a GitHub or GitLab credential for an org or group so it can be retrieved later by name. Call this to save a credential before using get_git_credential_for_org. Saves to project if cwd has .git-org_group-cred-vault/, else global.
Resolve the correct Git credential (token) for a GitHub org or GitLab group. Call this BEFORE any git push, clone, fetch, pull, commit-to-remote, or other git operation when the user mentions an org, group, or repository name — it returns the matching token. The keywords parameter should be the org/group name the user mentioned. Example: if the user says "push to acme-org", call this with keywords="acme-org".
Bulk-import multiple tokens from a plain-text file. One line per token, formatted as "tokenName token" (whitespace-separated). Lines starting with # are skipped. Platform is github unless the token begins with a gitlab-style prefix (glpat-, wfbpat-, or any stored prefix). Use this to load a whole org/group credential list at once.
List all stored tokens (without exposing token values). Shows source scope.
Remove a stored token by name from whichever vault it lives in.
Output schemas not documented. LLMs cannot predict response structure (token object fields, list format, error responses). Breaks downstream tool chaining and forces agents to guess field names.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). remove_token and import_tokens are destructive but unmarked. Agents cannot distinguish safe reads from irreversible writes.
Error handling lacks recovery guidance. No actionable error messages (e.g., 'Token not found. Available tokens: [list]'). Stack traces or bare error codes give agents nothing to act on.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter descriptions lack format/constraint details. tokenName, token, filePath have no validation rules (length, character restrictions, path format). LLMs cannot self-validate inputs.
No confirmation/dry-run pattern for destructive operations. remove_token and import_tokens can delete/overwrite credentials without agent confirmation. Agents make mistakes, no safeguard.