GitHub MCP server adapter for Amazon Bedrock AgentCore. Provides a streamable-http wrapper around the stdio-only GitHub MCP server, making it compatible with Amazon Bedrock AgentCore runtime.
This is a proxy wrapper around the GitHub MCP server that exposes 5 tools for managing toolsets and calling GitHub tools. The server has clear descriptions for most tools and reasonable parameter documentation. However, there are significant gaps: (1) Output schemas are completely undocumented, we cannot see what fields tools return, (2) The wrapper pattern introduces indirection that obscures error handling and recovery guidance, (3) Security risk: the call_github_tool tool accepts arbitrary arguments without validation or description of safety constraints. (4) The design violates single responsibility, tools like list_available_toolsets and get_toolset_tools mix discovery with recommendation. (5) Parameter descriptions lack constraints (enums, ranges, formats). Average tool score: 58/100 places this in the D-to-C range.
Execute any GitHub MCP tool by name with the provided arguments. This is the main interface for calling GitHub tools once you've enabled the appropriate toolsets. Use list_available_toolsets and get_toolset_tools first to discover what tools are available.
Enable one of the sets of tools the GitHub MCP server provides. Use get_toolset_tools and list_available_toolsets first to see what this will enable.
List all the capabilities that are enabled with the specified toolset. Use this to get clarity on whether enabling a toolset would help you to complete a task.
List all available toolsets this GitHub MCP server can offer, providing the enabled status of each. Use this when a task could be achieved with a GitHub tool and the currently available tools aren't enough. Call get_toolset_tools with these toolset names to discover specific tools you can call.
List all currently enabled/available GitHub tools that can be called. This shows you the actual tools you can call with call_github_tool, not just the toolsets.
Output schemas completely undocumented. Tools return Dict[str, Any] with no description of fields, structure, or pagination. LLMs cannot plan downstream calls or extract data reliably.
call_github_tool accepts arbitrary 'arguments' object with no validation, no description of what fields are safe, and no error recovery guidance. This violates the secret-injection and tool-gateway patterns, agents could accidentally pass credentials or destructive payloads without knowing the consequences.
Parameter descriptions lack constraints. 'toolset' parameter in get_toolset_tools lists valid values in description text rather than as an enum constraint. LLMs cannot reliably select from text lists, they hallucinate values. The description says 'Must be one of: context, issues, ...' but JSON Schema should declare this as enum type.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | 2024-11-05+ | v1 |
Wrapper introduces indirection that hides error context. When call_github_tool fails, the error comes from the wrapped GitHub server with no recovery guidance. The proxy strips context, LLMs see a generic error and cannot self-correct. The wrapper should intercept and enrich errors with actionable guidance.
list_available_toolsets and get_toolset_tools both serve discovery purposes, creating tool confusion. The agent must call both before enabling a toolset, the workflow is unclear. Consider merging into a single 'describe_toolset' tool or documenting the required call sequence explicitly.
No pagination support documented. Tools like list_available_toolsets and list_enabled_tools return all items as Dict[str, Any]. If there are hundreds of toolsets or tools, the response will overwhelm the context window. Should include limit/offset parameters and return a total count.
timeout_seconds parameter present on all tools but inconsistently described. Most parameters just state 'How long to wait for the tool to complete' without specifying range, default behavior on timeout, or whether the operation is rolled back. Is timeout_seconds=1 allowed? What happens at 0? Undocumented defaults and edge cases.