Skip to main content
Glama

Below are useful info to host this Agentic RAG app using MCP

Step 1: Start the Qdrant container

Start the QDrant container

docker run -p 6333:6333 -p 6334:6334 -v qdrant_storage:/qdrant/storage:z qdrant/qdrant

Related MCP server: FAQ RAG MCP Server

Step 2: Set up Bright data account.

Open a free account in brightdata and setup a user-email and password. You will need this inside the server2.py.

Step 3: Start the MCP server.

Clone the repo and open it in cursor IDE. Then go to settings > Cursor settings > MCP Servers. Click on 'Add new MCP server' and add the following code (assuming you have no other server running) to mcp.json.

To know the location of 'uv'

  • For Mac / Linux: Use which uv or where uv

  • For windows: It is usually present in %USERPROFILE%/.local/bin/uv, where %USERPROFILE% resolves to something like c:\Users\username.

{
  "mcpServers": {
    "mcpRAG": {
      "command": "path/to/uv",
      "args": [
        "--directory",
        "absolute/path/to/projectdir",
        "run",
        "server2.py"
      ]
    }
  }
}

It should show the status in green and display the tools: f1_faq_search_tool and bright_data_web_search_tool.

You can now open the chat in cursor (Ctrl + L) and ask questions.


How to test your RAG app with MCP

Prerequisites

  1. Qdrant – Start the container (Step 1 above).

  2. F1 FAQ collection – Create it once by running the notebook rag2.ipynb (run the cell that creates f1_faq_collection and stores embeddings), or run the test script below.

  3. MCP server – Add the server in Cursor settings (Step 3 above) and ensure it shows green status with tools faq_retrieval_tool and bright_data_web_search_tool.

  1. Open Cursor chat: Ctrl + L (or Cmd + L on Mac).

  2. Ask an F1 question, e.g.:

    • "Who governs F1 racing?"

    • "What is the halo device?"

    • "How many points for winning an F1 race?"

  3. The AI will use faq_retrieval_tool to get context from your RAG and answer. For non‑F1 topics it may use bright_data_web_search_tool (requires Bright Data credentials in .env).

Test 2: Local script (no Cursor)

From the project directory run:

uv run test_rag_mcp.py

This creates f1_faq_collection if needed, then runs a sample FAQ query and prints the retrieved context so you can verify the RAG pipeline without opening Cursor.

Available Tools

2 tools
bright_data_web_search_toolA
Search for information on a given topic using Bright Data.
Use this tool when the user asks about a specific topic or question 
that is not related to general machine learning.

Input:
    query: str -> The user query to search for information

Output:
    context: list[str] -> list of most relevant web search results
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A4.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 is the sole source of behavioral disclosure. It mentions searching and returning results but does not disclose any potential side effects, rate limits, authentication needs, or failure modes. The description only covers input and output, not behavioral traits.

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 concise and front-loaded: the first sentence states the purpose, the second gives usage guidance, and the input/output block is clearly structured. No unnecessary words.

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 simple search tool with one parameter and no output schema, the description adequately covers purpose, usage, and input/output. However, it does not specify the number of results returned or behavior when no results are found, which would improve completeness.

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 schema has only one parameter, 'query', with no description. The description clarifies that the query is 'The user query to search for information,' which adds semantic meaning beyond the parameter name. It also describes the output format, aiding understanding.

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 uses the specific verb 'Search' and identifies the resource ('information on a given topic using Bright Data'). It distinguishes from the sibling faq_retrieval_tool by stating it is for topics 'not related to general machine learning.'

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool: 'Use this tool when the user asks about a specific topic or question that is not related to general machine learning.' This provides a clear conditional and implies an alternative for ML-related queries.

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

faq_retrieval_toolA

Retrieve the most relevant documents from FAQ collection. Use this tool when the user asks about F1 Racing.

Input:
    query: str -> The user query to retrieve the most relevant documents

Output:
    context: str -> most relevant documents retrieved from a vector DB
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It implies a read-only retrieval via 'retrieve' and mentions vector DB, but does not disclose limitations, error behavior, or any side effects. This is adequate but not rich.

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 compact, with a one-sentence purpose, a usage directive, and clearly labeled input/output sections. No redundant information, and the structure enhances readability.

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 single-parameter tool with no output schema and no annotations, the description covers the essential purpose, usage, input, and output. It lacks details on edge cases like empty results, but overall it is sufficient for basic invocation.

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 schema only defines 'query' as a string, but the description explains it as 'The user query to retrieve the most relevant documents,' adding semantic meaning beyond the schema. While no format or constraints are given, it clarifies the parameter's role.

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 retrieves relevant documents from an FAQ collection, with a specific resource and action. It also emphasizes the F1 Racing domain, distinguishing it from the sibling web search tool.

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

Usage Guidelines4/5

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

Explicitly states 'Use this tool when the user asks about F1 Racing,' providing clear usage context. However, it does not mention alternatives or when not to use, so it lacks full exclusions.

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.

  1. 2 tool updatesv0.1.0
    • First observedbright_data_web_search_tool
    • First observedfaq_retrieval_tool

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one retrieves from a specific FAQ collection, the other performs general web searches. There is no functional overlap, and each tool's description directs usage to its intended context.

Naming Consistency5/5

Both tools use the same naming pattern: a descriptive source/domain prefix combined with the action and the suffix '_tool', all in snake_case. This is consistent and predictable.

Tool Count3/5

With only 2 tools, the server feels thin for a general RAG use case. The count is borderline—not excessive, but the minimal surface may leave agents wanting more specialized retrieval options.

Completeness2/5

The server only provides retrieval operations, with no tools for managing or updating the FAQ collection or ingesting new documents. This is a significant gap for a complete RAG workflow, potentially causing agent failures when asked to perform any write or update operation.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides web search and page fetch capabilities using a browser-based approach, enabling LLMs to search DuckDuckGo, Google, or Yandex and retrieve rendered HTML from URLs.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables answering natural-language questions from FAQ documents using vector search and LLM generation via an MCP tool.
    -