AWS highlights the challenges in designing Model Context Protocol (MCP) tools that underperform, often due to poor tool design rather than the protocol itself. Many teams begin by exposing an existing API as-is, assuming the agent will handle the rest. While this approach works for simple use cases, it frequently fails to deliver reliable results. The key issue lies in how tools are structured for large language models (LLMs) and agentic systems, which can lead to failed tool calls, incorrect parameter values, and wasted context that degrades performance. AWS aims to address these problems by exploring practical context engineering approaches to enhance tool effectiveness.

The primary issues identified are bloat and confusion. Bloat occurs when tool definitions consume unnecessary context, especially when multiple MCP servers are involved, leading to a degradation in the LLM’s ability to reason. Confusion arises as the LLM makes poor choices, calls the wrong tools, and selects incorrect parameters, which compounds the issue with retries. Semantic similarity between tools, ambiguous naming, and an overabundance of options further contribute to this problem. While enriching tool descriptions with clearer definitions and examples can help reduce confusion, it risks worsening bloat. AWS emphasizes that addressing these issues requires a careful balance between the two.

Context engineering is essential to shaping what the LLM sees and when it sees it, which directly impacts the model’s performance. Improving one or both aspects is a complex balancing act. AWS outlines several approaches and tradeoffs to tackle these issues, including refining descriptions, implementing schema constraints, restructuring tools, and using lazy loading techniques. These strategies aim to keep context lean and focused, ensuring the LLM can make informed decisions without unnecessary overhead.

Source: awsml