qualitycontrol-mcp
Connects ChatGPT to the QualityControl API via a custom GPT Action, enabling natural language queries about company data like devices, harvest, exports, and weather.
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., "@qualitycontrol-mcpShow me today's harvest data"
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.
QualityControl MCP Server
Servidor MCP (Model Context Protocol) que conecta ChatGPT/Claude con la API REST de QualityControl, permitiendo a los usuarios consultar información de su empresa mediante lenguaje natural.
Requisitos
Node.js 20+ LTS
npm 10+
Related MCP server: QC Database MCP Server
Instalación
# Instalar dependencias
npm install
# Copiar variables de entorno
cp .env.example .env
# Generar ENCRYPTION_KEY
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Editar .env con la URL de la API y la ENCRYPTION_KEY generadaCompilar
npm run buildEjecutar (desarrollo)
npm run devConfiguración en ChatGPT / Claude Desktop
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"qualitycontrol": {
"command": "node",
"args": ["C:/Repositorio/MCP/QualityControl/dist/index.js"],
"env": {
"API_BASE_URL": "https://developers.cogrowers.cl/heladas",
"ENCRYPTION_KEY": "<tu-key-64-hex>",
"LOG_LEVEL": "info",
"LOG_DIR": "./logs",
"NODE_ENV": "production",
"SESSION_TTL_HOURS": "24",
"SESSION_CLEANUP_INTERVAL_MIN": "60",
"CACHE_TTL_SECONDS": "300",
"CACHE_MAX_ENTRIES": "1000",
"API_TIMEOUT_MS": "30000",
"API_VALIDATE_ENDPOINT": "api_toda_info.php",
"API_DEVICES_ENDPOINT": "api_toda_info.php",
"API_HISTORY_ENDPOINT": "api_toda_info.php",
"API_WEATHER_ENDPOINT": "api_toda_info.php"
}
}
}
}ChatGPT (Custom GPT con Actions)
Para ChatGPT, se requiere un wrapper HTTP. Consulta la documentación de OpenAI para configurar un GPT Action que apunte al servidor MCP.
Herramientas Disponibles
Tool | Descripción |
| Conecta una empresa validando la API Key |
| Desconecta la empresa y cierra sesión |
| Lista dispositivos/sensores |
| Historial de lecturas |
| Información climática |
| Bins recolectados hoy |
| Información de cosecha |
| Datos de exportación |
| Despachos pendientes/completados |
| Info de empresa conectada |
| Estado del servidor |
Agregar Nuevos Tools
Crear
src/tools/nuevo_tool.tssiguiendo la estructura existenteImportar y agregar al array en
src/tools/index.tsCompilar:
npm run build
No se requiere modificar el servidor principal ni ningún otro módulo.
Arquitectura
Consultar ARCHITECTURE.md para el documento completo de arquitectura.
Available Tools
6 toolsqc_connectA
Conecta la empresa al sistema QualityControl usando la API Key configurada en el conector. Usar cuando el usuario quiere iniciar sesión, verificar la conexión o reconectarse a QualityControl. NO acepta API Keys como parámetro: la clave se configura en el conector de Claude, no en el chat. Para cambiar de empresa hay que editar o eliminar el conector en Configuración → Conectores. NO afecta otras aplicaciones como AgroClimate.
| 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 burden of behavioral disclosure. It does explain the authentication model, the reconfiguration path for changing companies, and the non-effect on other apps. However, it does not disclose what happens on repeated calls, whether a session is established, whether the tool is idempotent, or what kind of result the agent should expect.
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, front-loaded with the core function, and every sentence earns its place: the action, the usage triggers, the key configuration constraint, the company-change workaround, and the non-impact on other applications. There is no redundant filler.
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 tool with no output schema and no annotations, the description provides a thorough operational picture: purpose, when to use, configuration constraints, and how to change the target company. The only meaningful gap is lack of clarification about how qc_connect relates to the qc_healthcheck sibling for connection verification.
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 parameter meaning. The description still adds value by explicitly stating that API keys are not accepted as parameters and are instead configured in the connector, which prevents an agent from inventing arguments.
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 a specific action: connect the company to QualityControl using the configured API key. It is easy to distinguish from the general idea of the tool, though it does not explicitly differentiate itself from sibling tools such as qc_healthcheck, which may also relate to connection verification.
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 gives concrete when-to-use guidance: when the user wants to log in, verify the connection, or reconnect. It also provides useful exclusions, such as not accepting API keys and not affecting other applications, but it does not name alternative sibling tools or explicitly state which tool to use instead in related scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qc_disconnectA
Cierra la sesión activa de QualityControl y limpia el caché del servidor. Úsala para refrescar la conexión, limpiar datos en caché o cuando el usuario quiere reiniciar el contexto de QualityControl. IMPORTANTE: si el conector fue configurado con un 'OAuth Client ID' (API key directa), Claude se reconectará automáticamente a la misma empresa al usar cualquier herramienta. Para cambiar de empresa o cerrar sesión completamente, el usuario debe ir a Configuración → Conectores → editar el conector y cambiar el OAuth Client ID. NO afecta otras aplicaciones como AgroClimate.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility and does so thoroughly. It discloses side effects (closing the session, clearing server cache), the important auto-reconnect behavior when OAuth Client ID is used, and explicitly states that other applications like AgroClimate are unaffected.
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 front-loaded with the core action, followed by usage scenarios and then the critical caveat. Every sentence earns its place, and the important reconnect warning is clearly marked with 'IMPORTANTE'.
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 tool with no output schema, the description is complete: it covers what the tool does, when to use it, its side effects, and an important edge case about OAuth reconnection. An agent has enough information to invoke it correctly and set proper user expectations.
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 description coverage, so there are no parameter semantics for the description to add. The baseline for a zero-parameter tool is strong, and the extra context about OAuth configuration is helpful rather than required.
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 and resource: it closes the active QualityControl session and cleans the server cache. It clearly distinguishes itself from sibling tools like qc_connect and qc_healthcheck by making the disconnect/cleanup function explicit.
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?
It explicitly lists when to use the tool: to refresh the connection, clean cached data, or restart the QualityControl context. It also gives a clear when-not-to-use: to switch companies or fully log out, the user must edit the connector settings, not call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qc_get_inspection_by_idA
Busca y muestra una planilla de control de calidad específica en QualityControl por su ID. Permite consultar directamente una planilla conocida sin necesidad de indicar rango de fechas. Busca en los campos id (ID de muestra) e id_planilla (número de planilla). Úsala cuando el usuario pide 'muéstrame la planilla 17688' o 'busca el registro 17688'.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID numérico de la planilla o muestra a buscar. Se busca en ambos campos: `id` (ID único de muestra) e `id_planilla` (número de planilla que agrupa muestras). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool performs a read-only lookup ('Busca y muestra'), that it searches two specific fields, and that it does not require a date range. However, it does not mention output format, not-found behavior, or any access requirements. Adequate but not deeply transparent.
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 and well-structured. The core purpose is front-loaded, followed by the key distinction (no date range), the search fields, and a concrete usage example. Every sentence adds value and there is no redundant filler.
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 one-parameter ID lookup, the description covers what the tool does, when to use it, which fields are searched, and gives concrete examples. The main gap is the lack of output or error behavior detail, but the tool's low complexity and clear focus make the description reasonably 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 already documents the single id parameter with 100% coverage, including that it searches both id and id_planilla. The description adds example phrasing but does not materially expand parameter meaning beyond what the schema already provides, so the baseline of 3 applies.
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 specific action: searching and displaying a specific quality-control planilla by ID in QualityControl. It names the exact fields searched (id and id_planilla) and provides concrete user-phrase examples, making the tool's purpose unmistakable and differentiating it from date-range list queries.
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 gives clear usage context: use it when the user asks for a specific known planilla or record by ID, with examples. It also notes that no date range is needed, implying this is not for range-based listing, but it does not explicitly name an alternative tool or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qc_get_inspectionsA
Obtiene las planillas de control de calidad de QualityControl registradas en la empresa. Incluye especie, variedad, campo, cuartel, cantidad muestreada, brix, calibre, color y defectos de calidad y condición. Si no se indica rango de fechas, usa por defecto el mes actual. Muestra hasta 100 registros por página; usa offset para ver los siguientes.
| Name | Required | Description | Default |
|---|---|---|---|
| desde | No | Fecha inicial (YYYY-MM-DD). Por defecto: primer día del mes actual. | |
| hasta | No | Fecha final (YYYY-MM-DD). Por defecto: hoy. | |
| offset | No | Registro desde el que empezar (0 = primero). Usar para paginar: si hay más de 100, pasar offset=100 para el siguiente lote. | |
| decode_json | No | Si es 'si', decodifica los campos JSON embebidos (calibrepeso_row, brix_row, defecto_calidad_row, defecto_condicion_row). Por defecto: 'si'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does disclose important runtime traits: default date window, 100-record page limit, and offset-based pagination. It does not explicitly state that the call is read-only or describe result ordering, but the read verb and the stated behavior are sufficient for safe invocation.
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, purposeful sentences: first the object and content, then default dates, then pagination. Every sentence earns its place, and the most decision-relevant facts are front-loaded with no filler.
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 list tool with no required parameters, no output schema, and fully documented parameters, the description covers purpose, returned data fields, defaults, and pagination. It omits ordering and error details, but nothing essential for deciding to call it 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?
Schema coverage is 100% and the schema fully documents all four parameters, including defaults and pagination behavior, so the baseline of 3 applies. The description repeats the default date range and page-size behavior but adds no new meaning beyond what the schema already provides.
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 a specific verb ('Obtiene') and clearly identifies the resource ('las planillas de control de calidad de QualityControl'), then enumerates the data fields returned. The plural 'planillas' and 'registradas en la empresa' make clear this is the list-oriented tool, distinguishing it from qc_get_inspection_by_id and qc_get_quality_summary.
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?
It gives actionable invocation context: the date range defaults to the current month and pagination is handled via offset, so an agent knows how to correctly request a ranged listing. It does not explicitly mention sibling alternatives or exclusion conditions, which prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qc_get_quality_summaryA
Analiza las planillas de QualityControl y genera un resumen estadístico. Incluye desglose por especie y variedad, promedio de brix, distribución de calibres y los defectos de calidad y condición más frecuentes. Si no se indica rango de fechas, usa por defecto el mes actual.
| Name | Required | Description | Default |
|---|---|---|---|
| desde | No | Fecha inicial (YYYY-MM-DD). Por defecto: primer día del mes actual. | |
| hasta | No | Fecha final (YYYY-MM-DD). Por defecto: hoy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing side effects. It does not explicitly state whether the operation is read-only or has any side effects, though the 'get' nature suggests it is safe. More transparency would be beneficial.
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, well-structured, and free of fluff. It efficiently conveys the tool's purpose, the included metrics, and the default behavior in a few sentences.
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 there is no output schema, the description provides a good overview of the output content (statistical summary with specific breakdowns). It does not specify the exact output format or error conditions, but it gives enough context for an agent to understand what to expect.
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 already includes descriptions for both parameters ('desde' and 'hasta'), and the tool description adds the default behavior (current month) and clarifies the date range concept. This supplements the schema adequately.
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's function: it analyzes QualityControl sheets and generates a statistical summary. It enumerates specific metrics (species/variety breakdown, average brix, size distribution, and common defects) and mentions the default date range, making the purpose unambiguous and distinct from sibling tools like qc_get_inspections.
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 explains that a date range is optional and defaults to the current month, providing practical guidance on when to call the tool. It does not explicitly compare with sibling tools, but the summary nature is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qc_healthcheckA
Verifica el estado del servidor QualityControl MCP, la conectividad con la API y las estadísticas de sesión y caché.
| 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 full burden. It discloses what the tool checks, and 'Verifica' implies a read-only health check, but it does not explicitly state whether the tool mutates anything, requires authentication, or how it behaves on failures.
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 well-structured sentence that front-loads the core purpose and lists specific checked areas. No filler or redundant information is present.
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?
This is a low-complexity, zero-parameter tool, and the description captures what it checks. It does not describe the return shape or error behavior, but that is a minor gap for a health-check style tool with no output schema.
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 document beyond the schema. The description's scope list is sufficient; the baseline of 4 applies.
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 a specific verb ('Verifica el estado') and names the exact resource and scope: the QualityControl MCP server, API connectivity, and session/cache statistics. This clearly distinguishes it from the sibling connect/disconnect and inspection tools.
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 intended use is implicitly clear: call this when you need to check server health, API connectivity, or session/cache statistics. However, it does not explicitly state when to use it versus alternatives or mention any prerequisites.
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.
6 tool updates
v1.0.0- First observed
qc_connect - First observed
qc_disconnect - First observed
qc_get_inspection_by_id - First observed
qc_get_inspections - First observed
qc_get_quality_summary - First observed
qc_healthcheck
TDQS
Scored across 6 tools
Each tool has a clear, distinct purpose: connect, disconnect, list inspections, get by ID, generate summary, and health check. No overlapping functionality.
All tools use the 'qc_' prefix and follow a consistent lowercase snake_case pattern. Verbs (connect, disconnect, get, healthcheck) are clear and uniform, with 'healthcheck' being a minor but acceptable deviation.
Six tools is a well-scoped set for a QualityControl MCP server, covering connection management, data retrieval, summaries, and health monitoring without excess.
The tool surface fully covers the apparent read-only and connection-management domain: connect/disconnect, list/detail inspections, summary analytics, and health status. No obvious missing capabilities.
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
Connects AI assistants to QCDatabase.AI for everyday construction quality-control work.
Connects AI assistants to CloudQuell multi-cloud and AI cost, savings, anomaly, and budget data.
Interact with climate metrics via Riskthinking.AI's CDT Express API in supported AI chat experiences
Connect Amazon Seller Central to Claude or ChatGPT via MCP. Orders, inventory, pricing, fees, FBA.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude to interact with Qlik Cloud applications and extract data from visualizations through the Qlik Cloud API.11MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to perform QC Database tasks such as uploading records, managing project turnover packages, and signing off on inspections via natural language.41MIT
- FlicenseAqualityCmaintenanceEnables querying AgroClimate company data via natural language through ChatGPT or Claude.7-
- AlicenseNot gradedqualityAmaintenanceEnables interaction with climate metrics via Riskthinking.AI's CDT Express API, supporting climate exposure, impact, and distribution metrics, as well as physical assets, companies, and markets data. Integrates with AI chat experiences like Claude desktop app.1MIT
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/cogrowersqa/qualitycontrol-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server