A gateway that routes MCP (Model Context Protocol) requests to multiple upstream MCP servers with OAuth authentication, rate limiting, and observability
This is a multi-service gateway exposing 17 tools across GitHub, Artifactory, and Google Drive. Critical issues: (1) Duplicate tool names (list_repositories, get_repository_info appear twice with different schemas/descriptions), causing LLM confusion. (2) Most parameter descriptions are minimal or missing context. (3) No visible output schemas documented. (4) Parameter descriptions lack format/constraint details (e.g., 'owner' has no guidance on valid formats). (5) Error handling and recovery guidance absent. (6) No tool annotations (readOnlyHint, destructiveHint). The GitHub tools (1-13) have basic schemas but weak descriptions. Artifactory/GDrive tools (14-17) have slightly better descriptions but still lack output documentation. Average tool score: 42/100.
Create a new issue in a repository
Get details about a specific commit
Get details about a specific issue
Get details about a specific pull request
Get detailed information about a specific repository.
Get detailed information about a specific repository
Get information about a GitHub user
Duplicate tool names across services (list_repositories, get_repository_info appear in both GitHub and Artifactory). LLMs cannot distinguish which service to call, causing routing errors and failed operations.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does get_issue return issue_id?). Breaks tool chaining.
Parameter descriptions lack format/constraint details. 'owner' has no guidance on valid formats (username vs org name). 'query' in search_code/search_repositories has no length limits or syntax rules. Invites invalid LLM input.
No error handling or recovery guidance. Tools lack descriptions of failure modes (e.g., 'User not found. Try search_users() first.'). Agents cannot self-correct on failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
List branches in a repository
List commits in a repository
List or search files in Google Drive.
List issues in a repository
List pull requests in a repository
List all repositories in Artifactory.
List repositories for the authenticated user or an organization
Search for artifacts in Artifactory by name pattern and/or repository. Every call is validated and bounded on the server before any query runs: input is checked against character rules and an optional repository allowlist, the AQL is built deterministically (never by interpolating raw input), sensitive fields such as checksums are excluded, and the result set is capped. These guarantees apply to *every* caller -- agents, IDE assistants, scripts, and direct MCP clients -- because they live in the server rather than in one client.
Search for code in repositories
Search for repositories
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes (create_issue is write but unmarked). Risks accidental data modification.