Turbo.az MCP Server
Click on "Install 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., "@Turbo.az MCP ServerFind a BMW X5 from 2020 under 60,000 AZN"
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.
Turbo.az MCP Server
MCP (Model Context Protocol) server for Turbo.az automotive marketplace. This server enables Claude Desktop to search for cars and retrieve listing information from turbo.az.
β οΈ Important Note
Turbo.az blocks access from outside Azerbaijan. This server must run from an Azerbaijani IP:
Local computer (in Azerbaijan)
Via VPN with Azerbaijan IP
From a VPS located in Azerbaijan
Related MCP server: Begagnad MCP
π Installation
1. Requirements
Python 3.10+
Google Chrome browser
pip
2. Server Setup
# Clone the repo or copy files
cd turbo-az-mcp
# Create virtual environment
python -m venv venv
# Activate
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# Install packages
pip install -e .3. Test
# Run server manually
python -m src.server4. Test MCP without LLM
Spawns the server and calls tools (requires Chrome):
uv run python scripts/test_mcp.pyπ§ Claude Desktop (local MCP, stdio)
Local-only: Claude Desktop runs the server as a subprocess. Do not use "Add custom connector" / Remote MCP URL.
Find and open the config file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add to
mcpServerssection (or copyclaude_desktop_config.example.jsonfrom the project and changecwdto your path):
With uv (recommended):
{
"mcpServers": {
"turbo-az": {
"command": "uv",
"args": ["run", "python", "-m", "src.server"],
"cwd": "/home/javid/dev/turbo-mcp"
}
}
}With Python / venv:
{
"mcpServers": {
"turbo-az": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/home/javid/dev/turbo-mcp"
}
}
}Note: cwd is the full path to the project folder. Restart Claude Desktop.
Claude on Windows, Server in WSL
If Claude Desktop is on Windows but the project is in WSL, use wsl in config. WSL non-interactive shell may not have uv in PATH, so use venv python:
{
"mcpServers": {
"turbo-az": {
"command": "wsl",
"args": ["bash", "-c", "cd /home/javid/dev/turbo-mcp && .venv/bin/python -m src.server"]
}
}
}Replace /home/javid/dev/turbo-mcp with your WSL project path. If venv is not .venv (e.g. venv), use venv/bin/python instead of .venv/bin/python.
Chrome in WSL: When server runs in WSL, Chrome/Chromium must be installed in WSL for Selenium (Windows Chrome won't work). In WSL terminal:
sudo apt update && sudo apt install -y chromium-browserIf chromium-browser requires snap, install Google Chrome for Linux or set CHROME_BINARY=/usr/bin/chromium (or installed path).
π Available Tools
1. search_cars
Search for cars.
Parameters:
make- Brand (BMW, Mercedes, Toyota, etc.)model- Model (X5, E-Class, etc.)price_min/price_max- Price range (AZN)year_min/year_max- Year rangefuel_type- Fuel: benzin, dizel, qaz, elektrik, hibridtransmission- avtomat, mexanikilimit- Number of results (default: 10)
Example query: "Search for BMW X5 from 2020, price up to 50000 AZN on Turbo.az"
2. get_car_details
Detailed listing information.
Parameters:
listing_id- Listing ID or full URL
Example query: "Show details of this listing on Turbo.az: 12345678"
3. get_makes_models
List of makes and models.
Parameters:
make- Brand (to see its models, empty = all makes)
Example query: "What BMW models are available on turbo.az?"
4. get_trending
New/popular listings.
Parameters:
category- new, popular, viplimit- Number of results
π Troubleshooting
"403 Forbidden" error
Make sure you're running from Azerbaijan IP
Use VPN (Azerbaijan IP)
ChromeDriver error
Make sure Chrome browser is installed
webdriver-managerautomatically downloads ChromeDriver
"DevToolsActivePort file doesn't exist" (WSL)
chromium-browser(snap) often doesn't work in WSL. Install Google Chrome:wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb sudo apt install -fOr with virtual display:
sudo apt install xvfbthenxvfb-run -a uv run python scripts/test_mcp.py
Timeout error
Check internet connection
Check if turbo.az is working
π License
MIT
Available Tools
4 toolsget_car_detailsC
Fetches detailed listing info from Turbo.az. Requires listing ID or URL.
| Name | Required | Description | Default |
|---|---|---|---|
| listing_id | Yes | Listing ID (e.g. 1234567) or full URL |
TDQS
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 the requirement for a listing ID or URL but doesn't cover other behavioral aspects such as rate limits, authentication needs, error handling, or what 'detailed listing info' includes. This leaves significant gaps for a tool that fetches data.
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 with the main action and requirement in a single sentence. There's no wasted text, making it efficient, though it could benefit from slightly more detail to improve completeness without sacrificing brevity.
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?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed listing info' entails, potential response formats, or error cases. For a data-fetching tool with no structured output documentation, this leaves the agent with insufficient context to use the tool effectively.
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 description adds minimal value beyond the input schema, which has 100% coverage and clearly documents the 'listing_id' parameter. It clarifies that the parameter can be an ID or URL, but this is already implied by the schema's description. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't significantly enhance parameter 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 clearly states the action ('fetches detailed listing info') and resource ('from Turbo.az'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'search_cars' or 'get_trending' beyond mentioning it's for 'detailed listing info' rather than search or trending data.
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 provides minimal guidance by stating it 'requires listing ID or URL', but offers no explicit advice on when to use this tool versus alternatives like 'search_cars' or 'get_trending'. It lacks context on prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_makes_modelsB
Fetches list of available makes and models on Turbo.az.
| Name | Required | Description | Default |
|---|---|---|---|
| make | No | Make name (to see its models). Leave empty for all makes. |
TDQS
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 it 'fetches list', implying a read-only operation, but doesn't address key aspects like authentication needs, rate limits, pagination, or error handling. For a tool with zero 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.
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's appropriately sized and front-loaded, with zero waste, making it easy to parse quickly.
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?
Given the tool's low complexity (one optional parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage, behavior, and output format, which could be important for an agent to use it effectively. It meets the minimum threshold but has clear gaps.
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 description doesn't mention the 'make' parameter or add any semantic context beyond what's in the input schema, which has 100% coverage. The schema already describes the parameter as 'Make name (to see its models). Leave empty for all makes.', so the description provides no additional value. Baseline is 3 when schema coverage is high.
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 action ('fetches list') and resource ('available makes and models on Turbo.az'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'search_cars' or 'get_car_details', which might also involve makes/models in some capacity, so it doesn't reach the highest level of specificity.
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 provides no guidance on when to use this tool versus alternatives like 'search_cars' or 'get_trending'. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trendingC
Fetches most popular/new listings on Turbo.az.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category: new, popular, vip | new |
| limit | No | Result count (default: 20) |
TDQS
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 'fetches' implying a read operation, but doesn't cover aspects like rate limits, authentication needs, pagination, or what the return format looks like. This is inadequate for a tool with no annotation support.
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 a single, efficient sentence with zero wasteβit directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
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?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., listing details, format), potential errors, or behavioral traits like performance or limitations. For a tool fetching data, this leaves significant gaps in understanding its full context.
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?
Schema description coverage is 100%, so the schema already documents both parameters ('category' and 'limit') with descriptions and defaults. The description adds no additional meaning beyond what the schema provides, such as explaining the significance of 'popular' vs 'new' or usage constraints, meeting the baseline for high coverage.
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 action ('fetches') and resource ('most popular/new listings on Turbo.az'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'search_cars' or 'get_car_details', 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.
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 'search_cars' or 'get_car_details'. It mentions 'most popular/new listings' but doesn't clarify scenarios where this is preferred over a general search or detailed lookup, leaving usage context ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_carsC
Car search on Turbo.az. Search by make, model, price range, year, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| make | No | Car make (e.g. BMW, Mercedes, Toyota) | |
| model | No | Car model (e.g. X5, E-Class, Camry) | |
| price_min | No | Minimum price (AZN) | |
| price_max | No | Maximum price (AZN) | |
| year_min | No | Minimum year of manufacture | |
| year_max | No | Maximum year of manufacture | |
| fuel_type | No | Fuel type: petrol, diesel, gas, electric, hybrid | |
| transmission | No | Transmission: automatic, manual | |
| limit | No | Result count limit (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior (beyond the 'limit' param), or what the output format looks like (e.g., list of cars with basic info). For a search tool with 9 parameters, this is insufficient.
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 a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured by explicitly mentioning the platform ('Turbo.az') earlier.
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?
Given the complexity (9 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return values, error conditions, or behavioral traits needed for effective use. For a search tool, this leaves significant gaps in understanding how results are formatted or limited.
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?
Schema description coverage is 100%, so the schema fully documents all 9 parameters with descriptions and defaults. The description adds minimal value by listing example criteria ('make, model, price range, year, etc.') but doesn't provide additional semantics beyond what's in the schema, such as how parameters interact or search logic.
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 action ('search') and resource ('cars on Turbo.az'), specifying it's a search operation with example criteria. It distinguishes from sibling tools like 'get_car_details' (detail retrieval) and 'get_makes_models' (metadata), though not explicitly. However, it doesn't fully differentiate from potential 'get_trending' if that also returns cars.
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 provides no guidance on when to use this tool versus alternatives like 'get_car_details' or 'get_makes_models'. It mentions search criteria but doesn't specify prerequisites, exclusions, or contextual triggers for choosing this over siblings, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no ambiguity: get_car_details retrieves specific listing details, get_makes_models provides metadata, get_trending shows popular listings, and search_cars enables filtered searches. The descriptions clearly differentiate their functions, making misselection unlikely.
All tools follow a consistent verb_noun pattern with snake_case naming (get_car_details, get_makes_models, get_trending, search_cars). The verbs 'get' and 'search' are appropriately used and maintain a predictable structure throughout the set.
With 4 tools, the server is well-scoped for a car listing domain, covering key operations like searching, viewing details, browsing trends, and accessing metadata. It feels slightly thin but reasonable, as each tool earns its place without redundancy.
The toolset covers core read-only operations for a car listing service: search, detail viewing, trend access, and metadata retrieval. Minor gaps exist, such as no tools for user interactions (e.g., saving favorites or contacting sellers), but agents can perform essential browsing tasks effectively.
Maintenance
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
Automotive inventory search for AI assistants: vehicles, dealers, deals, and market data.
Search live US dealership inventory, get market prices, and send buyer inquiries. Free, no API key.
Search used car inventory, check NHTSA recalls, decode VINs, and manage automated search scouts.
AI-native used car marketplace. 145K+ vehicles, 4300+ dealers, 13 US states, 20 MCP tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with a retail cars database using SQL queries. Supports adding new car advertisements and searching existing cars based on user preferences through natural language.
- FlicenseNot gradedqualityFmaintenanceEnables AI agents to search and retrieve listings from Sweden's largest second-hand marketplaces, Blocket and Tradera. Returns unified data including prices, images, seller information, and direct links to listings.8
- AlicenseAqualityDmaintenanceAggregates and searches used car listings from multiple sources (Cars.com, Autotrader, KBB) with price, mileage, dealer info, and optional CarFax-style filters (1-owner, no accidents, personal use).14MIT
- FlicenseNot gradedqualityBmaintenanceProvides 25 interactive automotive intelligence tools for real-time market data, including VIN decoding, price predictions, and inventory analytics. It enables AI assistants to perform car searches, trade-in estimations, and market trend analysis using the Model Context Protocol.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/JavidGlyv/Turboaz-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server