mcpRAG
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcpRAGHow does the DRS system work in F1?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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/qdrantRelated 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 uvorwhere uvFor windows: It is usually present in
%USERPROFILE%/.local/bin/uv, where%USERPROFILE%resolves to something likec:\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
Qdrant – Start the container (Step 1 above).
F1 FAQ collection – Create it once by running the notebook
rag2.ipynb(run the cell that createsf1_faq_collectionand stores embeddings), or run the test script below.MCP server – Add the server in Cursor settings (Step 3 above) and ensure it shows green status with tools
faq_retrieval_toolandbright_data_web_search_tool.
Test 1: In Cursor chat (recommended)
Open Cursor chat: Ctrl + L (or Cmd + L on Mac).
Ask an F1 question, e.g.:
"Who governs F1 racing?"
"What is the halo device?"
"How many points for winning an F1 race?"
The AI will use
faq_retrieval_toolto get context from your RAG and answer. For non‑F1 topics it may usebright_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.pyThis 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 toolsbright_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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.0- First observed
bright_data_web_search_tool - First observed
faq_retrieval_tool
TDQS
Scored across 2 tools
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.
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.
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.
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
Related MCP Connectors
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Web search, scraping, Google Trends and data lookups. Paid per call in USDC on Base via x402.
Web search, fetch, extract, and research for AI agents. Markdown output + AI-synthesized answers.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables querying a vector database of machine learning FAQs and performing web searches using Bright Data proxies through Claude Desktop with structured agent prompts.-
- FlicenseNot gradedqualityDmaintenanceEnables semantic search and question-answering over FAQ documents using RAG (Retrieval-Augmented Generation) with OpenAI embeddings and in-memory vector similarity.-
- AlicenseNot gradedqualityDmaintenanceProvides 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.4MIT
- FlicenseNot gradedqualityDmaintenanceEnables answering natural-language questions from FAQ documents using vector search and LLM generation via an MCP tool.-