The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Itcons.app listing page.
Model Context Protocol server for connecting AI assistants to Itcons.app.
Itcons.app is a business operations platform for managing work reports, work orders, projects, clients, users, and related operational resources. It is designed to help teams digitize field and office workflows around daily reports, assignments, task tracking, and service execution.
This package can run in two modes:
stdio mode for clients such as Codex, Claude Desktop, and other local MCP hosts.With this MCP server, an assistant can query Itcons.app data, search work reports and work orders, list operational catalogs such as statuses, users, resources, projects, and clients, and create supported Itcons.app records when the configured user has permission to do so.
POST /api/login_check.ITCONS_DOMAIN.Webhooks are intentionally not included in this MCP server. The remote HTTP mode is for MCP client traffic, not inbound Itcons.app webhook delivery.
From npm:
From this repository:
If Node was installed with Homebrew and node/npm are not in your PATH, use:
The local stdio server reads Itcons.app credentials from environment variables.
For https://demo.itcons.app, set:
You may use an existing Bearer token instead of username/password:
ITCONS_API_BASE_URL is optional. If omitted, the server uses:
Example configuration using a globally installed package:
Start the remote MCP server:
The remote server exposes:
https://mcp.example.com/mcphttps://mcp.example.com/reports-mcphttps://mcp.example.com/ssehttps://mcp.example.com/oauth/authorizehttps://mcp.example.com/oauth/tokenhttps://mcp.example.com/oauth/registerhttps://mcp.example.com/healthFor ChatGPT's "Create app" screen, use the public MCP URL:
For a narrow public app focused only on work reports, use:
If a client specifically asks for an SSE URL, use:
When the user connects the app, the OAuth login page asks for their Itcons.app email and password. If ITCONS_DOMAIN_LOOKUP_URL is configured, the page tries to detect the Itcons.app domain from the email; otherwise the user can type the domain manually. The server validates those credentials with Itcons.app and stores an in-memory session token for subsequent MCP calls.
Example configuration using a local checkout:
Read-only tools:
itcons_check_connectionitcons_list_workorder_typesitcons_list_work_report_modelsitcons_list_projectsitcons_list_clientsitcons_list_statusesitcons_list_usersitcons_list_resourcesitcons_search_workordersitcons_list_pending_workordersitcons_search_work_reportsitcons_list_work_reports_by_dateitcons_list_today_work_reportsCreate tools:
itcons_create_workorderitcons_create_useritcons_create_projectitcons_create_clientReports-only profile tools exposed by /reports-mcp:
itcons_check_connectionitcons_list_work_report_modelsitcons_search_work_reportsitcons_list_work_reports_by_dateitcons_list_today_work_reportsTool annotations:
readOnlyHint: true, destructiveHint: false, and openWorldHint: false because they only read private Itcons.app data.readOnlyHint: false, destructiveHint: false, and openWorldHint: false because they create records only inside a private Itcons.app workspace and do not publish to public internet surfaces.| Variable | Required | Description |
|---|---|---|
ITCONS_DOMAIN | Yes | Installation subdomain. For https://demo.itcons.app, use demo. |
ITCONS_USERNAME | Yes, unless ITCONS_TOKEN is set | Itcons.app username or email. |
ITCONS_PASSWORD | Yes, unless ITCONS_TOKEN is set | Itcons.app password. |
ITCONS_TOKEN | No | Existing Bearer token. If set, login is skipped. |
ITCONS_API_BASE_URL | No | Alternative API base URL. |
ITCONS_TIMEZONE | No | Time zone used by itcons_list_today_work_reports. Defaults to Europe/Madrid. |
PORT | No | HTTP server port. Defaults to 3000. |
HOST | No | HTTP server bind host. Defaults to 127.0.0.1. |
ITCONS_MCP_PUBLIC_URL | Yes for remote mode | Public HTTPS origin, for example https://mcp.example.com. |
ITCONS_MCP_PATH | No | Remote MCP endpoint path. Defaults to /mcp. |
ITCONS_MCP_SSE_PATH | No | SSE-compatible endpoint path. Defaults to /sse. |
ITCONS_MCP_ALLOWED_HOSTS | Recommended for remote mode | Comma-separated allowed Host headers, for example mcp.example.com. |
ITCONS_OAUTH_CLIENT_ID | No | OAuth client ID expected by the remote server. Defaults to itcons-app-chatgpt. |
ITCONS_OAUTH_CLIENT_SECRET | Recommended for remote mode | OAuth client secret expected by the remote server. |
ITCONS_OAUTH_CLIENTS_FILE | Recommended for public apps | JSON file used to persist dynamically registered OAuth clients. |
ITCONS_DOMAIN_LOOKUP_URL | No | Endpoint used to detect the Itcons.app domain from an email. Defaults to https://auto.itcons.app/webhook/my-domain. |
ITCONS_HTTP_AUTH_DISABLED | No | Set to 1 only for local HTTP smoke tests. Disables remote MCP bearer auth. |
4.itcons_search_workorders fetches /workorders and applies filters locally.itcons_list_work_reports_by_date filters on the date field returned by /2.0/partes.itcons_create_workorder sends status: 4 and isArchived: 0.itcons_create_user sends an array payload to /2.0/users, matching the current API.itcons_create_client sends an array payload to /clients and returns the first array item when applicable.Run syntax checks:
Run a local MCP discovery smoke test:
Run a local HTTP MCP smoke test:
Run a live read-only HTTP smoke test against Itcons.app:
Run a live OAuth smoke test that simulates a ChatGPT-style connection:
Run a live read-only smoke test against Itcons.app:
Publish the public npm package:
Do not commit .env files or real credentials. The package excludes .env, node_modules, and debug logs from npm publication.
Create tools perform real writes in Itcons.app. Use them only with credentials and installations where the MCP client is allowed to make changes.
The built-in remote OAuth implementation stores authorization codes and access tokens in memory. Use a single Node.js process for the first deployment, or replace the in-memory maps with persistent storage such as Redis before running multiple replicas.