Skip to main content
Glama

MCP RAG

Um servidor MCP (Model Context Protocol) completo para RAG (Retrieval-Augmented Generation) com gerenciamento de arquivos e memória vetorial para agentes.

🚀 Características

  • 📄 Gerenciamento de Arquivos: Adicione, remova e pesquise documentos em diversos formatos (PDF, DOCX, TXT, MD, CSV, JSON)

  • 🧠 Memória Vetorial: Sistema separado para que agentes armazenem informações importantes para uso futuro

  • 🔍 Busca Semântica: Utiliza embeddings do Hugging Face para busca semântica avançada

  • 💾 Banco Vetorial Local: ChromaDB local para armazenamento eficiente de vetores e metadados

  • 🛠️ Script de Manutenção: CLI completo para gerenciamento e manutenção do sistema

  • 📚 Documentação Completa: HTML para GitHub Pages com guias de configuração

Related MCP server: ragi

📋 Pré-requisitos

  • Node.js 18+

  • npm ou yarn

  • Chave da API do Hugging Face

🛠️ Instalação

  1. Clone o repositório

    git clone https://github.com/seu-usuario/mcp-rag.git
    cd mcp-rag
  2. Instale as dependências

    npm install
  3. Configure as variáveis de ambiente

    cp .env.example .env

    Edite o arquivo .env e configure sua chave da API do Hugging Face:

    HUGGINGFACE_API_KEY=sua_chave_aqui
  4. Compile o projeto

    npm run build

🔧 Configuração

Cursor

Adicione a seguinte configuração no arquivo de configurações do MCP:

{
  "mcpServers": {
    "mcp-rag": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/caminho/para/mcp-rag"
    }
  }
}

Claude Desktop

Adicione a configuração no arquivo claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-rag": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/caminho/para/mcp-rag"
    }
  }
}

VS Code

Configure no settings.json:

{
  "mcp.servers": {
    "mcp-rag": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/caminho/para/mcp-rag"
    }
  }
}

🛠️ Script de Manutenção

O projeto inclui um CLI completo para manutenção:

# Adicionar arquivo
npm run maintenance add-file /caminho/para/arquivo.pdf

# Adicionar diretório
npm run maintenance add-dir /caminho/para/diretorio

# Buscar arquivos
npm run maintenance search-files "sua consulta"

# Listar arquivos
npm run maintenance list-files

# Gerenciar memória
npm run maintenance add-memory "conteúdo" "agent-id" "session-id"
npm run maintenance search-memory "sua consulta"

# Ver estatísticas
npm run maintenance stats

# Limpar dados
npm run maintenance clear all

🔍 Ferramentas MCP Disponíveis

Gerenciamento de Arquivos

  • add_file: Adiciona um arquivo ao sistema RAG

  • search_files: Busca documentos relevantes

  • remove_file: Remove um arquivo do sistema

  • list_files: Lista todos os arquivos no sistema

Gerenciamento de Memória

  • add_memory: Adiciona informação à memória do agente

  • search_memory: Busca na memória do agente

  • remove_memory: Remove uma entrada da memória

  • get_memory_by_agent: Obtém toda a memória de um agente

Utilitários

  • get_stats: Obtém estatísticas do sistema

  • clear_data: Limpa dados do sistema

  • test_connection: Testa a conexão com o serviço de embeddings

📊 Formatos Suportados

  • PDF: Documentos PDF com texto extraível

  • DOCX: Documentos do Microsoft Word

  • TXT: Arquivos de texto simples

  • MD: Arquivos Markdown

  • CSV: Arquivos de dados separados por vírgula

  • JSON: Arquivos de dados JSON

⚙️ Configurações

Variáveis de Ambiente

# MCP Configuration
MCP_SERVER_NAME=mcp-rag
MCP_SERVER_VERSION=1.0.0

# Hugging Face Configuration
HUGGINGFACE_API_KEY=your_huggingface_api_key_here
HUGGINGFACE_MODEL=sentence-transformers/all-MiniLM-L6-v2

# ChromaDB Configuration
CHROMA_PERSIST_DIRECTORY=./data/chroma
CHROMA_COLLECTION_FILES=rag_files
CHROMA_COLLECTION_MEMORY=agent_memory

# File Processing Configuration
MAX_FILE_SIZE_MB=50
SUPPORTED_EXTENSIONS=.pdf,.docx,.txt,.md,.csv,.json

# Vector Configuration
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
EMBEDDING_DIMENSION=384

# Logging
LOG_LEVEL=info

🚀 Uso

Iniciando o Servidor

npm start

Desenvolvimento

npm run dev

Testes

npm test

📚 Documentação

A documentação completa está disponível em HTML para GitHub Pages em docs/index.html. Ela inclui:

  • Guias de instalação e configuração

  • Instruções para Cursor, Claude Desktop e VS Code

  • Exemplos de uso

  • Solução de problemas

  • Referência completa das ferramentas

🤝 Contribuição

  1. Fork o projeto

  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)

  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')

  4. Push para a branch (git push origin feature/AmazingFeature)

  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

🙏 Agradecimentos

📞 Suporte

Se você encontrar problemas ou tiver dúvidas:

  1. Verifique a documentação HTML

  2. Abra uma issue

  3. Consulte a seção de solução de problemas na documentação


Desenvolvido com ❤️ para a comunidade de IA

Available Tools

11 tools
add_fileC

Add a file to the RAG system for document retrieval

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the file to add to the RAG system

TDQS

C2.9/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 mentions adding a file for retrieval, but lacks details on permissions needed, whether the operation is idempotent, error handling, or effects on existing data. For a mutation tool with zero annotation coverage, this is a significant gap.

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, clear sentence with no wasted words, making it efficient and front-loaded. It directly communicates the tool's purpose without unnecessary elaboration.

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?

Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It fails to address behavioral aspects like side effects, return values, or error conditions, leaving gaps for an AI agent to understand how to use it effectively.

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 schema description coverage is 100%, with the parameter 'filePath' well-documented in the schema. The description does not add any additional meaning beyond what the schema provides, such as file format requirements or path examples. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Add a file') and the target system ('to the RAG system for document retrieval'), which is specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_files' or 'remove_file' in terms of purpose, though the verb 'Add' implies creation versus listing/removal.

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, such as 'add_memory' or 'search_files', nor does it mention prerequisites like file format compatibility or system readiness. It only states what the tool does, not when or why to invoke it.

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

add_memoryC

Add information to the agent memory system

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the agent storing the memory
categoryNoCategory for the memory entry (default: general)general
contentYesContent to store in memory
importanceNoImportance level 1-10 (default: 1)
sessionIdYesID of the current session
tagsNoTags for the memory entry

TDQS

C2.7/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 burden for behavioral disclosure. It states this is an 'Add' operation, implying a write/mutation, but doesn't clarify permissions needed, whether this is idempotent, how memory is structured, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a tool with good schema documentation and gets straight to the point with zero waste.

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 mutation tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what 'adding information' means operationally, how memory entries are organized, what the response looks like, or potential side effects. The agent lacks crucial context to use this tool effectively despite the comprehensive schema.

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 all parameters are documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema. This meets the baseline score of 3 when the schema does the heavy lifting, but the description doesn't compensate with any extra context about parameter relationships or usage patterns.

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

Purpose3/5

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

The description states the tool 'Add information to the agent memory system', which provides a clear verb ('Add') and resource ('agent memory system'). However, it doesn't distinguish this from sibling tools like 'add_file' or 'remove_memory', leaving ambiguity about what specifically makes this tool different from other memory-related operations.

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 like 'add_file' or 'search_memory'. It doesn't mention prerequisites, context for memory addition, or any exclusions. The agent must infer usage from the tool name and parameters alone.

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

clear_dataC

Clear data from the RAG system

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of data to clear

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'clear' but fails to specify if this is destructive (e.g., permanent deletion), reversible, or has side effects like affecting system performance. This omission is significant for a tool that likely modifies data.

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, efficient sentence that directly states the tool's action. It's front-loaded with the key verb 'Clear', making it easy to parse quickly without unnecessary words.

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?

Given the complexity of a data-clearing operation with no annotations or output schema, the description is incomplete. It doesn't explain what 'clear' entails, potential impacts, or return values, leaving gaps in understanding for safe and effective use.

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 input schema has 100% description coverage, clearly documenting the 'type' parameter with an enum. The description doesn't add extra details about parameters, but since schema coverage is high and there's only one parameter, the baseline is elevated. No compensation is needed, but no additional value is provided either.

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

Purpose3/5

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

The description states the action ('Clear') and target ('data from the RAG system'), which provides a basic understanding of purpose. However, it's vague about what 'clear' entails (e.g., deletion, reset, or archival) and doesn't distinguish it from sibling tools like 'remove_file' or 'remove_memory', which suggests overlapping functionality without clarification.

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 on when to use this tool versus alternatives such as 'remove_file' or 'remove_memory'. The description lacks context about prerequisites, exclusions, or typical scenarios for clearing data, leaving the agent without direction on appropriate usage.

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

get_memory_by_agentC

Get all memory entries for a specific agent

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the agent to get memory for

TDQS

C2.9/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. It states the action 'Get all memory entries', implying a read operation, but does not disclose behavioral traits like whether it requires authentication, has rate limits, returns paginated results, or what format the entries are in. This leaves significant gaps for a tool with no annotation coverage.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance with zero waste.

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?

Given the lack of annotations and output schema, the description is incomplete. It does not explain what 'memory entries' entail, their structure, or how results are returned (e.g., list format, error handling). For a tool with no structured data support, this leaves the agent with insufficient information to use it effectively.

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 adds minimal meaning beyond the input schema, which has 100% coverage and clearly describes the 'agentId' parameter. The description implies the parameter is for specifying the agent, but does not provide additional context such as valid ID formats or examples. With high schema coverage, the baseline of 3 is appropriate as the schema does the heavy lifting.

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 verb 'Get' and the resource 'memory entries for a specific agent', making the purpose unambiguous. However, it does not differentiate from sibling tools like 'search_memory' or 'get_stats', which might also retrieve memory-related data, so it lacks sibling distinction.

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 such as 'search_memory' or 'get_stats'. It implies usage for retrieving all entries for a specific agent, but offers no exclusions, prerequisites, or explicit context for selection among siblings.

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

get_statsC

Get statistics about the RAG system

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/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. It states it 'gets' statistics, implying a read-only operation, but doesn't disclose behavioral traits such as what statistics are included, if it requires authentication, rate limits, or how data is formatted. This leaves significant gaps in understanding the tool's 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, efficient sentence: 'Get statistics about the RAG system.' It is front-loaded and wastes no words, making it appropriately concise. However, it could be slightly more informative without losing conciseness.

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?

Given the complexity of a statistics tool with no annotations and no output schema, the description is incomplete. It doesn't explain what statistics are returned, their format, or any prerequisites. For a tool that likely provides detailed data, this leaves the agent without enough context to use it effectively.

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 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter semantics, but with no parameters, this is acceptable. Baseline is 4 as per rules for 0 parameters, indicating the description adequately handles the lack of inputs.

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

Purpose3/5

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

The description 'Get statistics about the RAG system' clearly states the action (get) and target (statistics about RAG system), which is adequate. However, it doesn't differentiate from sibling tools like 'test_connection' or 'get_memory_by_agent' that might also provide system information, making it vague about what specific statistics are retrieved.

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 on when to use this tool versus alternatives. For example, it doesn't specify if this is for monitoring, debugging, or if other tools like 'test_connection' or 'search_memory' should be used for related purposes. The lack of context leaves the agent without clear usage instructions.

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

list_filesB

List all files in the RAG system

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 burden but only states the basic operation. It doesn't disclose behavioral traits like whether this is a read-only operation, how results are returned (format, pagination), performance characteristics, or any limitations. The description is minimal and lacks important 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?

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a simple tool and front-loads the essential information.

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 tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'all files' means (scope, format, limitations), how results are structured, or any behavioral context. Given the lack of structured metadata, the description should provide more operational detail.

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 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't mention parameters since none exist, earning a baseline score of 4 for this zero-parameter case.

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 verb ('List') and resource ('all files in the RAG system'), providing a specific purpose. However, it doesn't distinguish this from sibling tools like 'search_files' or explain how it differs from other file-related operations.

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 like 'search_files' or 'get_stats'. The description simply states what it does without indicating appropriate contexts, prerequisites, or exclusions.

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

remove_fileC

Remove a file from the RAG system

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the file to remove from the RAG system

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 burden but offers minimal behavioral insight. It states the tool removes a file but doesn't disclose whether this is permanent, requires specific permissions, has side effects (e.g., affecting related memories), or provides confirmation. For a destructive operation, this lack of detail is a significant gap.

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, direct sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse at a glance.

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 destructive tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens on success/failure, return values, or error conditions. Given the complexity of file removal in a RAG system, more context about behavior and outcomes is needed for safe use.

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 adds no parameter-specific information beyond what the schema already provides (100% coverage). The schema fully documents 'filePath' as the required path to remove. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't need to compensate but also adds no extra value.

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 ('Remove') and resource ('a file from the RAG system'), making the tool's purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'clear_data' (which might remove all files) or 'remove_memory' (which removes a different resource type), so it doesn't reach the highest clarity level.

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 doesn't mention prerequisites (e.g., file must exist), when not to use it (e.g., for bulk removal), or refer to related tools like 'clear_data' for removing all files or 'list_files' to check what's available first.

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

remove_memoryC

Remove a memory entry from the agent memory system

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryIdYesID of the memory entry to remove

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 the full burden of behavioral disclosure. It states the tool removes a memory entry but doesn't clarify if this is permanent, reversible, requires specific permissions, or has side effects (e.g., affecting related data). This is a significant gap for a mutation tool with zero annotation coverage.

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, clear sentence that efficiently conveys the core action without unnecessary words. It's front-loaded with the essential information, making it easy to parse quickly, which is ideal for conciseness.

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?

Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like permanence, error handling, or what happens on success/failure, leaving gaps that could hinder an AI agent's ability to use it correctly.

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 doesn't add any parameter-specific information beyond what's already in the input schema, which has 100% coverage for the single parameter 'memoryId'. The schema's description adequately explains this parameter, so the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.

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 ('remove') and resource ('memory entry from the agent memory system'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'remove_file' or 'clear_data' beyond mentioning the specific resource type, which prevents a perfect score.

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 like 'clear_data' (which might remove multiple entries) or 'remove_file' (for different resource types). It lacks context about prerequisites, such as needing a valid memory ID from prior operations like 'search_memory' or 'get_memory_by_agent'.

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

search_filesC

Search for relevant documents in the RAG system

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 10)
queryYesSearch query to find relevant documents
thresholdNoMinimum similarity threshold (0-1, default: 0.7)

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action ('Search for relevant documents') without detailing what 'relevant' means, how results are ranked, whether there are rate limits, authentication needs, or what happens on failure. This is inadequate for a search tool with potential complexity.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for a basic search function, though it could be more informative without sacrificing brevity.

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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the search returns (e.g., document metadata, snippets, scores), how results are formatted, or any error conditions. For a search tool with three parameters and no structured output info, this leaves significant gaps for an agent.

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 adds no parameter semantics beyond what the input schema provides. Since schema description coverage is 100%, the baseline score is 3. The description doesn't explain how 'query' relates to document content, what 'threshold' implies for relevance, or how 'limit' affects performance, offering no additional value over the schema.

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

Purpose3/5

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

The description states the tool's purpose as 'Search for relevant documents in the RAG system', which is clear but vague. It specifies the verb ('Search') and resource ('documents in the RAG system'), but doesn't distinguish it from sibling tools like 'search_memory' or 'list_files', leaving ambiguity about what makes this search unique.

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 doesn't mention when to choose 'search_files' over 'search_memory' or 'list_files', nor does it specify any prerequisites or exclusions, leaving the agent to infer usage from context alone.

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

search_memoryC

Search for relevant information in agent memory

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdNoFilter by specific agent ID (optional)
limitNoMaximum number of results to return (default: 10)
queryYesSearch query to find relevant memory entries
thresholdNoMinimum similarity threshold (0-1, default: 0.7)

TDQS

C2.9/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 states the tool searches memory but doesn't describe what 'agent memory' entails (e.g., stored conversations, data), how results are returned (e.g., format, ordering), or any limitations (e.g., performance, access controls). For a search tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action ('Search for relevant information'), making it easy to parse. Every part of the sentence earns its place by conveying essential information.

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?

Given the complexity of a search operation with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the nature of 'agent memory', how search results are structured, or any behavioral traits like pagination or error handling. For a tool that likely returns multiple results, more context is needed to guide effective use.

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 schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't explain how 'query' is processed or what 'threshold' implies semantically). With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 tool's purpose as 'Search for relevant information in agent memory', which specifies the verb (search) and resource (agent memory). It distinguishes from siblings like 'search_files' (which searches files) and 'get_memory_by_agent' (which retrieves memory by agent without searching). However, it doesn't explicitly mention the similarity-based nature of the search, which is implied by the 'threshold' parameter but could be more specific.

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 doesn't mention when to choose 'search_memory' over 'get_memory_by_agent' (which retrieves memory by agent ID) or 'search_files' (which searches files), nor does it specify prerequisites or exclusions. The agent must infer usage from the tool name and parameters alone.

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

test_connectionB

Test the connection to the embedding service

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 full burden. It states the tool tests a connection but doesn't disclose behavioral traits like what 'test' entails (e.g., ping, auth check, latency measurement), potential side effects, error handling, or output format. This is a significant gap for a tool with zero annotation coverage.

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, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, earning its place by stating the core purpose without 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?

Given the tool's simplicity (0 params, no output schema) and lack of annotations, the description is incomplete. It doesn't explain what the test involves, what results to expect, or how it fits with siblings, leaving the agent under-informed about behavioral context.

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 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add param info, but that's appropriate here. Baseline is 4 for 0 params, as it avoids unnecessary details.

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 ('Test') and target resource ('connection to the embedding service'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from its siblings (like get_stats or other diagnostic tools), which would require 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing (e.g., after setup or when errors occur), or comparisons to sibling tools like get_stats, leaving the agent with minimal context for selection.

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. 11 tool updatesv1.0.0
    • First observedadd_file
    • First observedadd_memory
    • First observedclear_data
    • First observedget_memory_by_agent
    • First observedget_stats
    • First observedlist_files
    • First observedremove_file
    • First observedremove_memory
    • First observedsearch_files
    • First observedsearch_memory
    • First observedtest_connection

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between 'add_file' and 'add_memory' as both involve adding data, though to different systems (RAG vs. memory). Similarly, 'search_files' and 'search_memory' are distinct but conceptually similar operations. The descriptions help clarify the boundaries, but an agent might occasionally confuse these pairs.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case, such as 'add_file', 'clear_data', 'get_stats', and 'search_memory'. This uniformity makes the set predictable and easy to understand, with no deviations in style or convention.

Tool Count5/5

With 11 tools, the count is well-scoped for a RAG and memory management system. It covers core operations like adding, removing, listing, and searching for both files and memory, along with utility functions like clearing data and testing connections, without being excessive or sparse.

Completeness4/5

The tool set provides comprehensive coverage for RAG and memory operations, including CRUD-like actions for files and memory entries, search capabilities, and system management. A minor gap is the lack of tools for updating existing files or memory entries, which might require workarounds, but core workflows are well-supported.

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
    An MCP server implementation that provides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context. Uses Ollama or OpenAI to generate embeddings. Docker files included
    30
    30
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Local-first RAG indexing and semantic search MCP server. Enables document retrieval and context-aware queries using local embedding models.
    3
    16
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that indexes documents and serves relevant context to LLMs via Retrieval Augmented Generation (RAG).
    48
    37
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides powerful RAG (Retrieval-Augmented Generation) capabilities for PDF documents. This server uses ChromaDB for vector storage, sentence-transformers for embeddings, and semantic chunking for intelligent text segmentation.
    MIT

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/santis84/mcp-rag'

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