ibronevik-taxi-mcp
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., "@ibronevik-taxi-mcpshow me the car classes reference table"
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.
ibronevik-taxi-mcp
MCP-сервер над самописным API такси-сервиса (/taxi/api/v1/...). Выставляет ручки
бэка как инструменты для языковой модели.
Это каркас (этап 1). В нём собрана и проверена вся общая механика, на которую
дальше навешиваются ручки. Изменяющие инструменты сценария «жизненный цикл заказа»
подключаются поверх готового TaxiClient.
Что уже работает
Четыре read-only инструмента, работающих без учётной записи (публичный справочник прода):
Инструмент | Назначение |
| доступность бэка, арендатор, версия справочника, состояние авторизации |
| имена и размеры всех справочных таблиц |
| содержимое указанных таблиц ( |
| проверка входа по |
Related MCP server: bus-scheduling-mcp
Что внутри каркаса
Три неочевидные особенности бэка, ради которых каркас и нужен, инкапсулированы здесь один раз:
Тело запроса — форма, а не JSON. Данные передаются полем
dataс JSON-строкой (src/core/transport.ts). Отправкаapplication/jsonмолча ломает поведение бэка.Двухступенчатая авторизация с окном 10 секунд.
POST /auth/→auth_hash→ сразуPOST /token/→token+u_hash(src/core/auth.ts). Токен долгоживущий, кешируется; куки между шагами тащить не нужно. На каждом запросе прикладываютсяtokenиu_hash; приauth_error— один прозрачный перелогин.Ответ всегда HTTP 200, код внутри тела;
304для справочника — это успех. Кеш справочника по версии, обновление черезucv/304(src/core/client.ts).
Структура:
src/
config.ts конфигурация из окружения, построение URL ручки
core/
transport.ts form-кодирование, прокси-осведомлённый fetch, разбор JSON
auth.ts цепочка auth -> token, кеш token/u_hash
client.ts единый call(), разбор ответа, кеш справочника
errors.ts типы ошибок (транспорт / api / auth / запись)
mcp/
server.ts MCP stdio-сервер, регистрация инструментов
test/
smoke.ts проверка каркаса против прода (read-only, без аккаунта)
mcp-check.ts проверка MCP-слоя end-to-end настоящим MCP-клиентомТребования
Node.js ≥ 22.6 (запускает TypeScript напрямую, без сборки).
Установка и запуск
npm install
cp .env.example .env # при необходимости отредактировать
npm run smoke # проверка каркаса против прода (read-only)
node test/mcp-check.ts # проверка MCP-слоя end-to-end
npm start # запустить MCP-сервер (stdio)
npm run typecheck # проверка типовПодключение к MCP-клиенту (stdio), пример конфигурации:
{
"mcpServers": {
"ibronevik-taxi": {
"command": "node",
"args": ["/путь/к/mcp-server/src/mcp/server.ts"],
"env": { "TAXI_CONFIG": "0" }
}
}
}Тестирование: что можно и чего нельзя
Read-часть (справочник) — тестируется на проде без учётной записи. Именно это делают
smoke.tsиmcp-check.ts.Авторизация — требует реальной учётной записи; замокать нельзя, шифрование
u_hashзавязано на серверный секрет.Изменяющие ручки (сценарий 1) — на проде тестировать нельзя: каждый вызов создаёт реальные записи в боевой базе. Нужен тестовый тенант (изолированная база, где можно свободно создавать и удалять) либо тестовый аккаунт, чьи заказы разрешено отменять. Полный цикл требует двух ролей — клиент (1) и водитель (2).
Политика записи
Переменная TAXI_WRITE_MODE (block | confirm | allow, по умолчанию
confirm). Значение по умолчанию не случайно: MCP отдаёт ручки языковой модели,
а бэкенд не проверяет HTTP-метод (записи проходят и по GET). Поэтому запись по
умолчанию не должна выполняться «молча» — изменяющие инструменты проходят через
эту политику.
Безопасность
Секретов в коде нет — вся конфигурация из окружения, .env не коммитится.
Available Tools
4 toolstaxi_authenticateПроверить авторизациюA
Выполняет вход по TAXI_LOGIN/TAXI_PASSWORD (цепочка auth -> token). Токен не разглашается — возвращается только факт успеха. Требует учётных данных.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses a key behavioral trait: the token is not revealed, only success/failure is returned. It also implies a side-effect-free authentication check. However, it does not disclose failure behavior, rate limits, or what happens on invalid credentials. The description adds some value but leaves gaps.
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?
Three short sentences, each carrying distinct information: what it does, what it returns, and what it requires. No fluff, front-loaded with the action.
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 zero-parameter authentication tool with no output schema, the description covers the main points: action, credential source, and return behavior. However, it lacks details on error cases (e.g., invalid credentials, network failure) and whether repeated calls are safe. Given the simplicity, it is adequate but not fully complete.
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 input schema has zero parameters, so there is nothing for the description to add about parameters. The description explains that credentials come from environment variables (TAXI_LOGIN/TAXI_PASSWORD), which is useful context beyond the empty schema. Baseline 4 for zero-param tools is appropriate.
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 states a specific verb ('Выполняет вход' – performs login) and resource (TAXI_LOGIN/TAXI_PASSWORD auth chain), and clarifies that it returns only success/failure, not the token. It is distinguishable from siblings like taxi_status or taxi_reference_list, though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when credentials are available and authentication is needed. It states a requirement ('Требует учётных данных') but does not explicitly contrast with alternatives or say when not to use it. Sibling names suggest other tools are for status/reference, so context is somewhat clear but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxi_reference_getСодержимое справочных таблицA
Возвращает полное содержимое указанных справочных таблиц (например car_classes, currencies, payment_ways). Read-only, без авторизации.
| Name | Required | Description | Default |
|---|---|---|---|
| tables | Yes | Имена таблиц из taxi_reference_list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It explicitly says 'Read-only, без авторизации', which tells the agent the tool has no mutation side effects and needs no authentication token. This is particularly useful with a taxi_authenticate sibling present. It does not mention pagination or output size, but the core read/no-auth traits are clearly declared.
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 consists of two short sentences, the first front-loading the core action and concrete examples, and the second adding the important access/behavioral facts. Every clause earns its place with no filler or redundant restatement of the tool name.
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 one-parameter getter with no output schema, the description is nearly complete: it explains what is returned, hints at valid table names, and clarifies read-only/no-auth behavior. It could be slightly richer by explicitly pointing to taxi_reference_list for discovering valid table names, but the schema already supplies that linkage.
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 input schema already describes the single 'tables' parameter clearly—names from taxi_reference_list—so schema coverage is 100% and the baseline is 3. The description adds concrete examples of table names like car_classes and currencies, which is mildly helpful but does not meaningfully expand the semantics beyond the schema.
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 names the exact action and resource: returning full contents of reference tables, and gives concrete examples such as car_classes, currencies, and payment_ways. It is clearly distinct from the sibling list-style tool (taxi_reference_list) and from the unrelated status/authentication tools, so an agent can identify its role immediately.
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 conveys that the tool is for retrieving reference table contents and states that it is read-only, but it does not explicitly explain when to use it versus taxi_reference_list or when not to use it. Table-name discovery is only implied through the schema description, not stated in the usage guidance itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxi_reference_listСписок справочных таблицA
Имена и размеры всех публичных справочников (/data/) с версией кеша. Read-only, без авторизации.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation is read-only and requires no authorization, which are essential behavioral traits. It also mentions the return includes cache version. It does not cover errors or performance, but for a simple list tool this is adequate.
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 extremely concise, consisting of two short sentences that state the core function and key behavioral constraints. Every word adds value, and the primary information (what is listed) is front-loaded.
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 no output schema and no annotations, the description covers what the tool returns (names, sizes, cache version) and access requirements (read-only, no auth). For a simple list tool, this is complete; an agent can call it without further guidance.
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 tool has zero parameters, so there is nothing to explain. Per the guidelines, baseline for zero-parameter tools is 4. The description adds operational context but no parameter-specific semantics are needed.
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 explicitly states the tool returns names and sizes of all public reference directories under /data/, including cache version. It clearly identifies the resource and function, distinguishing it from siblings like taxi_reference_get which likely fetches a specific table.
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 implies this tool is for listing available reference tables but does not explicitly name alternatives or provide when-to-use versus when-not-to-use guidance. The read-only and no-auth statements hint at safe usage but do not direct selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxi_statusСтатус подключенияA
Проверяет доступность бэка, возвращает арендатора, версию справочника и состояние авторизации. Read-only, учётные данные не требуются.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 explicitly states the operation is read-only, requires no credentials, and enumerates what the response contains. It does not describe failure modes, but for a simple status probe this is adequate.
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?
A single compact sentence front-loads the core action ('checks backend availability') and then lists the returned data and key behavioral traits. Every clause earns its place with no redundancy.
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 zero-parameter, no-output-schema status tool, the description is complete: it states the purpose, the behavioral safety profile, the credentials requirement, and the returned fields. Nothing an agent needs to select and invoke it correctly is missing.
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 tool has zero parameters and 100% schema coverage, so there are no parameter semantics to explain. The description appropriately adds that credentials are not required, which is the only relevant input-related information.
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 names a specific verb and resource: it checks backend availability and returns tenant, reference version, and authorization state. This clearly distinguishes it from the sibling reference/authentication tools, whose purposes are different.
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 clearly implies the tool is a lightweight connectivity/status check and explicitly notes it is read-only and requires no credentials, which signals when it is appropriate to call. It does not explicitly contrast with taxi_authenticate, but the context is sufficiently clear.
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.
4 tool updates
v0.1.0- First observed
taxi_authenticate - First observed
taxi_reference_get - First observed
taxi_reference_list - First observed
taxi_status
TDQS
Scored across 4 tools
Each tool addresses a separate concern: backend status, reference catalog listing, reference content retrieval, and authentication. There is no functional overlap between them.
All tools share the taxi_ prefix bind underscores, but the structure varies: taxi_status is a plain noun, taxi_reference_list is a noun compound, and taxi_reference_get puts the verb after the noun. This is readable but not a consistent verb_noun convention.
Four tools cover the narrow scope of the server without redundancy. Each one has a clear role, and the count feels neither thin nor bloated.
The reference data use-case is covered with list and get operations, but authenticate is a standalone capability that no other tool consumes, since all references are public. The set feels slightly incomplete around authenticated actions.
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
Agent-native travel platform: read-only flight, hotel, and brand tools over MCP. OAuth sign-in.
Read-only MCP server for Muovi, Argentina's trust-first local services marketplace (6 tools).
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to read and modify Mendix application models through MCP tools for creating modules, entities, pages, microflows, deploying, and querying runtime data.1-
- FlicenseAqualityCmaintenanceEnables LLM clients to access scheduling data, KPIs, routes, and trigger optimization algorithms via MCP.9-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to drive Relay, an AI support-triage agent, by exposing tools for customer lookup, documentation search, ticket classification, reply, and escalation, with full guardrails and read-only mode option.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for agentic travel recommendations, exposing tools to retrieve member profiles and personalized travel recommendations with partner-specific rules and policies.-
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/j7018515/MCP-taxi'
If you have feedback or need assistance with the MCP directory API, please join our Discord server