Skip to main content
Glama
rnd-pro
by rnd-pro

Agent Aggregator

MCP Server that aggregates tools from multiple MCP servers, acting as a proxy to provide unified access to various AI agents and tools.

๐ŸŽฏ Features

  • Multi-Agent Aggregation: Connects to multiple MCP servers simultaneously

  • Unified Tool Interface: Exposes all tools through a single MCP interface

  • AI Model Integration: Each agent can have an associated AI model via OpenRouter

  • Dynamic Configuration: Supports runtime configuration of connected agents

  • Error Handling: Robust error handling and connection management

  • Modern Node.js: Built with ES modules and modern JavaScript features

  • OpenRouter Support: Integrated support for AI models through OpenRouter API

Related MCP server: fastmcp-gateway

๐Ÿ“ Project Structure

agent-aggregator/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.js                 # Main MCP server entry point
โ”‚   โ”œโ”€โ”€ aggregator/
โ”‚   โ”‚   โ”œโ”€โ”€ AgentAggregator.js   # Core aggregation logic
โ”‚   โ”‚   โ”œโ”€โ”€ MCPConnection.js     # Individual MCP server connection
โ”‚   โ”‚   โ””โ”€โ”€ OpenRouterClient.js  # OpenRouter API integration
โ”‚   โ”œโ”€โ”€ config/
โ”‚   โ”‚   โ””โ”€โ”€ ConfigLoader.js      # Configuration management
โ”‚   โ””โ”€โ”€ mcp-servers/            # Custom MCP server implementations
โ”‚       โ”œโ”€โ”€ README.md           # MCP servers documentation
โ”‚       โ””โ”€โ”€ qwen_mcp_server.py  # Qwen AI MCP server
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ agents.json             # Agent configuration file
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ integration.test.js     # Integration tests with real services
โ”œโ”€โ”€ scripts/
โ”‚   โ””โ”€โ”€ test-server.js          # Manual server testing script
โ””โ”€โ”€ docs/                       # Documentation

๐Ÿš€ Quick Start

Installation

# Install globally from npm
npm install -g agent-aggregator

# Or clone the repository for development
git clone https://github.com/rnd-pro/agent-aggregator.git
cd agent-aggregator

# Install dependencies
npm install

Quick Start with Cursor

  1. Add to Cursor MCP configuration (~/.cursor/mcp.json):

{
  "mcpServers": {
    "agent-aggregator": {
      "command": "npx",
      "args": ["agent-aggregator"],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key",
        "NODE_ENV": "production"
      }
    }
  }
}
  1. Set your OpenRouter API key:

  2. Restart Cursor and you'll have access to 14+ tools from connected MCP servers:

    • Filesystem operations

    • Code analysis tools

    • AI assistance tools

    • And more based on your configuration

Configuration

Edit config/agents.json to configure which MCP servers to connect to:

{
  "agents": [
    {
      "name": "filesystem",
      "type": "mcp",
      "enabled": true,
      "description": "File system operations server",
      "connection": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
        "env": {}
      },
      "model": {
        "provider": "openrouter",
        "name": "qwen/qwen3-coder:free",
        "apiKey": "${OPENROUTER_API_KEY}"
      }
    }
  ],
  "aggregator": {
    "timeout": 30000,
    "retryAttempts": 3,
    "retryDelay": 1000
  },
  "defaults": {
    "model": {
      "provider": "openrouter",
      "name": "qwen/qwen3-coder:free",
      "apiKey": "${OPENROUTER_API_KEY}",
      "baseUrl": "https://openrouter.ai/api/v1"
    }
  }
}

Environment Variables

Set up your OpenRouter API key:

# For current session
export OPENROUTER_API_KEY="sk-or-v1-your-actual-key-here"

# Or create .env file in project root:
echo "OPENROUTER_API_KEY=sk-or-v1-your-actual-key-here" > .env

# For permanent setup (add to ~/.bashrc or ~/.zshrc):
echo 'export OPENROUTER_API_KEY="sk-or-v1-your-actual-key-here"' >> ~/.zshrc

Important: Never commit your actual API key to version control!

Running

# Start the MCP server
npm start

# Test the server
npm run test:server

# Run integration tests
npm test

# Development mode with auto-reload
npm run dev

๐Ÿ”ง Usage

As MCP Server

Add to your MCP client configuration (e.g., Cursor):

{
  "mcpServers": {
    "agent-aggregator": {
      "command": "npx",
      "args": ["agent-aggregator"]
    }
  }
}

Supported MCP Servers

Currently configured to work with:

  • Filesystem: @modelcontextprotocol/server-filesystem - File system operations

  • Claude Code MCP: @kunihiros/claude-code-mcp - Claude Code wrapper

You can add any MCP server that supports the standard MCP protocol. Popular options include:

  • @modelcontextprotocol/server-github - GitHub API operations

  • @modelcontextprotocol/server-memory - Memory management

  • @modelcontextprotocol/server-fetch - HTTP requests and web fetching

๐Ÿ“Š Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   MCP Client    โ”‚โ”€โ”€โ”€โ”€โ”‚ Agent Aggregator โ”‚โ”€โ”€โ”€โ”€โ”‚  Filesystem     โ”‚
โ”‚   (Cursor)      โ”‚    โ”‚   (This Server)  โ”‚    โ”‚   MCP Server    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚                  โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚                  โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                       โ”‚                  โ”‚โ”€โ”€โ”€โ”€โ”‚  Qwen AI        โ”‚
                       โ”‚                  โ”‚    โ”‚   MCP Server    โ”‚
                       โ”‚                  โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚                  โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                       โ”‚                  โ”‚โ”€โ”€โ”€โ”€โ”‚  Claude Code    โ”‚
                       โ”‚                  โ”‚    โ”‚   MCP Server    โ”‚
                       โ”‚                  โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚                  โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                       โ”‚                  โ”‚โ”€โ”€โ”€โ”€โ”‚  OpenRouter     โ”‚
                       โ”‚                  โ”‚    โ”‚  AI Models      โ”‚
                       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

The Agent Aggregator:

  1. Connects to multiple downstream MCP servers

  2. Aggregates their tools into a unified list

  3. Routes tool calls to the appropriate server

  4. Provides AI model access via OpenRouter for each agent

  5. Returns results back to the client

๐Ÿค– AI Model Integration

Each MCP server can have an associated AI model that runs via OpenRouter. The default model is qwen/qwen3-coder:free.

Custom Methods

The aggregator provides custom MCP methods for AI interactions:

  • custom/agents/list - List all available agents and their capabilities

  • custom/model/generate - Generate text using an agent's model

  • custom/model/chat - Send chat completion requests

  • custom/models/info - Get information about all models

  • custom/status - Get detailed status of all connections

๐Ÿ” Debugging

If you encounter issues, you can inspect the MCP server:

# Debug with MCP inspector
npx @modelcontextprotocol/inspector node src/index.js

๐Ÿ› ๏ธ Development

For developers who want to extend or contribute:

Adding New MCP Servers

  1. Add server configuration to config/agents.json

  2. Install the MCP server package

  3. Test the connection

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Test your changes

  4. Submit a pull request

๐Ÿ“ Configuration Options

Agent Configuration

{
  "name": "unique-agent-name",
  "type": "mcp",
  "enabled": true,
  "description": "Agent description",
  "connection": {
    "command": "command-to-run",
    "args": ["--arg1", "--arg2"],
    "env": {
      "ENV_VAR": "value"
    }
  },
  "model": {
    "provider": "openrouter",
    "name": "qwen/qwen3-coder:free",
    "apiKey": "${OPENROUTER_API_KEY}"
  }
}

Aggregator Configuration

{
  "aggregator": {
    "timeout": 30000,        // Connection timeout in ms
    "retryAttempts": 3,      // Number of retry attempts
    "retryDelay": 1000,      // Delay between retries in ms
    "concurrentConnections": 2  // Max concurrent connections
  },
  "defaults": {
    "model": {
      "provider": "openrouter",
      "name": "qwen/qwen3-coder:free",
      "apiKey": "${OPENROUTER_API_KEY}",
      "baseUrl": "https://openrouter.ai/api/v1"
    }
  }
}

Available Models

The system uses OpenRouter API which supports many models:

  • qwen/qwen3-coder:free (default) - Free Qwen 3 Coder model

  • openai/gpt-4o-mini - OpenAI GPT-4o Mini

  • anthropic/claude-3.5-sonnet - Claude 3.5 Sonnet

  • meta-llama/llama-3.1-8b-instruct:free - Free Llama model

  • And many more - see OpenRouter Models


## ๐Ÿ” Troubleshooting

### Common Issues

1. **"Could not attach to MCP server"**
   - Check that the MCP server package is installed
   - Verify the command and arguments in configuration
   - Ensure the server supports the MCP protocol

2. **"Connection timeout"**
   - Increase timeout in aggregator configuration
   - Check that the MCP server starts properly
   - Verify network connectivity

3. **"Tool not found"**
   - Ensure the downstream MCP server is connected
   - Check tool name prefixing (format: `agent-name__tool-name`)
   - Verify the tool exists in the downstream server

4. **"OpenRouter API error"**
   - Verify your OPENROUTER_API_KEY is set correctly
   - Check that you have credits/access to the specified model
   - Ensure the model name is correct (e.g., `qwen/qwen3-coder:free`)

5. **"No AI model configured"**
   - Add a `model` section to your agent configuration
   - Ensure the model configuration includes provider, name, and apiKey
   - Check that environment variables are properly expanded

### Debug Mode

Enable debug logging by setting environment variables:

```bash
DEBUG=1 npm start

๐Ÿค Contributing

  1. Follow the established code style

  2. Add tests for new functionality

  3. Update documentation

  4. Test with real MCP servers

๐Ÿ“„ License

MIT License

Available Tools

10 tools
ai-tools__analyze_projectB

[AI Code Analysis] Analyzes project structure and provides insights

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoWhat aspect to focus on (architecture, performance, security, etc.)general
project_descriptionYesDescription of the project or files to analyze

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys a non-destructive analysis activity, but does not explicitly state that files are not modified, what access it performs, or what kind of insights are returned. This is minimal transparency for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. The '[AI Code Analysis]' prefix and the core verb-object structure make the tool's purpose immediately visible. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should provide more context about what 'insights' means, what the tool returns, and how the analysis is conducted. The current description is too thin for an agent to know what to expect from invocation or how to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters adequately. The description does not add meaningful detail about how 'project_description' or 'focus' should be used beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and object: 'Analyzes project structure and provides insights.' This distinguishes it from code-specific siblings like explain_code, review_code, and fix_code by implying a higher-level, project-wide scope. However, 'insights' remains vague, so it stops short of a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: the name and description suggest it is for high-level project analysis, while siblings target code explanation, review, and modification. There is no explicit guidance on when to choose this over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai-tools__edit_codeC

[AI Code Analysis] Edits the given code based on instructions

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCode to edit
instructionsYesEditing instructions

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for disclosing behavior. It only states that code is edited based on instructions, but does not clarify whether the tool returns updated code, modifies files, applies side effects, or handles partial edits. This is a minimal disclosure rather than a transparent one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no obvious filler, and it front-loads the core operation. However, it is so terse that it provides limited practical guidance, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool, the description is minimal but leaves out return-value behavior and sibling differentiation. No output schema or annotations exist to fill those gaps, so the description is incomplete for selecting and using the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both code and instructions are already documented in the input schema. The description adds no additional parameter meaning beyond restating the schema. Baseline 3 is appropriate because the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific actionโ€”editing code based on instructionsโ€”using a definite verb and target resource. It does not explicitly differentiate from the sibling tool ai-tools__fix_code, which also involves modifying code, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives like fix_code, explain_code, or review_code. It does not mention any exclusions, prerequisites, or preferred contexts, leaving the agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai-tools__explain_codeB

[AI Code Analysis] Provides detailed explanation of the given code

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesTarget code
contextNoAdditional context

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It states the core behaviorโ€”providing a detailed explanation of codeโ€”but does not disclose output format, code-handling implications, limitations, or whether the operation is purely analytical in an explicit way.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler, though the 'AI Code Analysis' prefix is somewhat redundant given the sibling context. It is efficiently front-loaded but not maximally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple tool with only two parameters and no output schema, so the bar is modest. Still, the description provides no guidance on tool selection relative to review_code and analyze_project, and does not describe what kind of explanation is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented. The description adds no extra meaning beyond labeling the input as code, which matches the schema's 'Target code'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb and resource: it explains the provided code. It distinguishes itself from fix/edit/test siblings, though it does not explicitly separate it from review_code, which could also involve analyzing code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to prefer explain_code over review_code, analyze_project, or the other code-related siblings. The agent must infer usage from the name and the generic description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai-tools__fix_codeC

[AI Code Analysis] Fixes bugs or issues in the given code

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCode to fix
issue_descriptionYesDescription of the issue

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations and no output schema, the description carries the full burden of behavioral disclosure. It only says 'fixes' but does not state whether it returns corrected code, modifies anything persistently, requires an existing file, or produces any diagnostics. This is a significant gap for an operation-oriented tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no redundant wording. The '[AI Code Analysis]' prefix adds minor branding context but does not hurt clarity. It could arguably be more informative, but it earns its place as concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool, the description is minimally viable: it names the operation and the inputs are well-described by the schema. However, the lack of any output/return behavior or usage context leaves an agent guessing about what the tool actually produces, which is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters clearly. The description adds no further semantic value beyond the schema, but it does not need to because the parameter names and descriptions are self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (fixes bugs or issues) and the resource (given code). It distinguishes itself from siblings like explain_code or review_code by implying a modification operation, though it does not explicitly differentiate itself from edit_code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The description implies use when code has a known issue, but it does not mention exclusions or clarify how it differs from ai-tools__edit_code or ai-tools__test_code.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai-tools__review_codeA

[AI Code Analysis] Reviews the given code for quality and best practices

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCode to review
focus_areasNoAreas to focus on

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden, and 'Reviews' does signal a non-mutating analysis. However, it does not explicitly state that code is not modified, nor does it describe the review output or behavioral constraints like authentication or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with the action and purpose front-loaded. The '[AI Code Analysis]' prefix and result clause are useful context with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, with two well-schemaed parameters, so the description is close to sufficient. Yet with no output schema and no annotations, it leaves the exact response shape and the meaning of the optional focus_areas value to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with 100% coverage, so the description does not need to repeat them. It adds no additional meaning about focus_areas or accepted code formats, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Reviews'), a resource ('the given code'), and a clear purpose ('quality and best practices'). This separates it from siblings such as explain_code, fix_code, and analyze_project, which address different actions or scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when code-quality and best-practice feedback is needed, but it does not explicitly state when to choose review_code over explain_code, fix_code, or test_code. No exclusions or alternative-routing conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai-tools__simulate_commandC

[AI Code Analysis] Simulates the execution of a given command

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNoInput data
commandYesCommand to execute

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of explaining behavior. 'Simulates' hints that the command is not actually executed, but the description does not disclose what the simulation returns, whether side effects are possible, or how faithful the simulation is. This leaves important behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, stating the core purpose in a single sentence. The bracketed '[AI Code Analysis]' prefix is somewhat redundant but does not significantly harm clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but with no output schema and no annotations, the description should explain what the simulation produces and clarify expected behavior. It only states the purpose, leaving the agent uncertain about return values and the exact execution model.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for both parameters, and coverage is 100%, so the description adds little beyond the schema. The phrase 'given command' aligns with the command parameter, but no additional detail is provided about how the 'input' parameter is used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool simulates command execution, using a specific verb ('simulates') and resource ('command'). It distinguishes itself from sibling code-analysis tools by focusing on command execution rather than code analysis, though it does not explicitly contrast with potential actual-execution tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives, such as when a dry-run or simulation is preferable to real execution. The description implies a safe testing context but does not state it explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai-tools__test_codeB

[AI Code Analysis] Generates tests for the given code

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCode to test
test_frameworkNoTest framework to usejest

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for disclosing behavior. It only states that tests are generated, but does not clarify whether this modifies files, returns test code, requires specific permissions, or has any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with a relevant category prefix. Every word contributes to the meaning, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the schema covers parameters, the tool has no output schema and no annotations, so the description should provide more context about the expected result and side effects. It lacks guidance on alternatives and usage scenarios, making it incomplete for an agent deciding how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both 'code' and 'test_framework'. The description adds no parameter-specific meaning, but this is acceptable because the schema handles it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Generates tests') and resource ('given code'). This distinguishes it from sibling tools like explain_code, review_code, fix_code, and edit_code, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios, exclusions, or how it relates to sibling tools like review_code or fix_code.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter__getA

[Filter Management] Get current tool filter configuration

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The 'Get current' wording clearly signals a non-destructive read operation, but the description does not disclose what the returned configuration looks like, whether it reflects a persisted or computed state, or any error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a useful category prefix and no filler. It is concise and front-loaded, though it omits some usage and behavioral nuance that would make it more helpful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter getter with no output schema, the description is nearly complete: an agent can infer that calling it requires no inputs and returns the current filter configuration. The main gap is the absence of any detail about the return shape or possible edge states, but the low complexity makes this a minor issue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and schema description coverage is 100%, so there is no hidden or undocumented parameter burden. The description still adds a small amount of context by naming the target resource, 'tool filter configuration', which is sufficient for a parameterless call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Get' and the object 'current tool filter configuration', clearly identifying a read operation on a specific resource. The word 'current' plus the sibling names filter__update and filter__reset make the basic distinction from mutating operations apparent, though it does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for reading the filter configuration rather than updating or resetting it, but it never states when to use this tool versus the filter__update or filter__reset alternatives. There is no explicit when/when-not guidance or mention of prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter__resetA

[Filter Management] Reset tool filter to show all available tools

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full behavioral burden. It communicates both the state change (reset) and the resulting state (all tools visible). It does not mention persistence or reversibility, but for a zero-parameter tool this is sufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the category label and conveys the full purpose and outcome with zero wasted words. The structure is clean and immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless reset operation with no output schema and no annotations, the description tells the agent everything needed to invoke it correctly: the action, the scope, and the resulting behavior. Nothing important is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema already fully documents this with 100% coverage. The description adds no parameter detail, but none is needed; the baseline of 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Reset tool filter') and the expected outcome ('show all available tools'). 'Reset' is a specific verb that distinguishes this tool from siblings like filter__get and filter__update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrase 'show all available tools' โ€” an agent can infer this should be called when the current filter needs to be cleared. However, the description does not explicitly state when to use this versus filter__update or filter__get, and it offers no exclusions or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter__updateC

[Filter Management] Update tool visibility filter - control which tools are visible to AI

ParametersJSON Schema
NameRequiredDescriptionDefault
excludeServersNoServer names to exclude completely (e.g., ["filesystem"])
excludePatternsNoTool name patterns to exclude (e.g., ["read", "list"])
includePatternsNoOnly include tools matching these patterns (overrides excludes)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing side effects and behavior, but it only restates the high-level purpose. It does not mention persistence, scope, whether the update replaces or merges the existing filter, or what happens when no parameters are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the operation and resource. The two clauses are mostly non-redundant, one naming the action and the other clarifying the intent, though the category prefix and phrasing could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has nuanced update semantics and no output schema, but the description does not clarify whether omitted parameters keep previous values or clear them, nor does it describe the response or effect on the current visibility filter. The schema covers parameter meanings but not operational behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description itself adds no parameter-level detail, but the input schema has 100% coverage with clear descriptions and examples for all three parameters. The schema already explains the meaning of excludeServers, excludePatterns, and includePatterns, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Update') on a clear resource ('tool visibility filter') and explains its effect ('control which tools are visible to AI'). It is distinguishable from siblings like filter__get and filter__reset by the update operation, though it does not explicitly name or contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as filter__get or filter__reset. The purpose implies it should be used when adjusting tool visibility, but no explicit context, prerequisites, or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv1.0.3
    • First observedai-tools__analyze_project
    • First observedai-tools__edit_code
    • First observedai-tools__explain_code
    • First observedai-tools__fix_code
    • First observedai-tools__review_code
    • First observedai-tools__simulate_command
    • First observedai-tools__test_code
    • First observedfilter__get
    • First observedfilter__reset
    • First observedfilter__update

TDQS

A3.5/5.0
Disambiguation4/5

The three filter tools are clearly distinct, and the AI code tools have distinct actions (explain, review, fix, edit, test, simulate, analyze). Some overlap exists between fix_code and edit_code, but descriptions clarify the difference.

Naming Consistency4/5

All tools follow a consistent domain__action pattern using double underscores, but the action part is not uniformly verb_noun (e.g. filter__get vs ai-tools__explain_code). This is a minor inconsistency that does not impede readability.

Tool Count5/5

Ten tools is well-scoped for an aggregator with two functional areas: filter management and AI code analysis. Each tool seems to serve a distinct purpose without redundancy.

Completeness5/5

Filter management covers get/update/reset completely, and AI code analysis covers explain, review, fix, edit, test, simulate, and project analysis. There are no obvious dead ends or missing core operations for the stated domains.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Aggregates multiple Model Context Protocol servers into a single gateway to provide unified search, description, and execution of tools. It reduces context limit issues by dynamically fetching specific tool schemas only when needed rather than loading all available tools at once.
    12
    23
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Aggregates tools from multiple upstream MCP servers and exposes them through 4 meta-tools, enabling LLMs to discover and use hundreds of tools without loading all schemas upfront.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Aggregates multiple MCP servers into a single endpoint, enabling LLM clients to access tools, resources, and prompts from various backends through one connection.
    18
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Aggregates multiple MCP servers and custom Python tools behind a single endpoint, with intelligent context and tool discovery for AI agents.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rnd-pro/agent-aggregator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server