MCP protocol gateway that aggregates tools from multiple MCP servers and provides a unified admin interface with semantic search (Tool RAG) capabilities
Forge Armory exposes a single meta-tool `search_tools` with a clear purpose and well-structured schema. The tool name is action-oriented (search_*), descriptions are present and moderately detailed, and input parameters include type information and descriptions. However, the server only exposes ONE tool, severely limiting its utility as an MCP server. The tool itself is meta-level (searching for tools in a registry) rather than domain-functional. No output schema documentation is visible in the provided source. The server is designed as a gateway/aggregator but does not appear to expose the actual underlying tools it claims to manage, which is a critical architectural gap. For what IS present, quality is decent but not exceptional.
Meta-tool for semantic search of available tools using natural language queries. Returns tools matching the search with similarity scores above the configured threshold.
Only one tool exposed: search_tools. This is a gateway/meta-tool, not a domain functional tool. An MCP server claiming to aggregate tools from multiple MCP servers should expose those tools, not just offer search capability.
No output schema documentation visible. The search_tools tool description does not specify what the response structure contains (e.g., array of tool objects? Fields like tool_name, similarity_score, description?). LLMs cannot plan downstream usage without knowing return structure.
Threshold parameter description says 'Optional, uses default_threshold from config if not provided' but does not specify what the default value is or the valid range semantics (higher = more restrictive or more permissive?). LLMs cannot reason about threshold without understanding direction.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Tool description mentions 'default_threshold from config' and 'default_max_results from config' but these are server-side configuration details, not user-facing contract. The description should state absolute defaults or valid ranges, not reference internal config structures.