trafft-mcp-readonly
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., "@trafft-mcp-readonlylist today's appointments"
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.
Trafft MCP Read-Only
Project status — remote-access upgrade in review (August 2026)
The hardened July 2026 read-only implementation remains the verified baseline. Development was reopened on August 9, 2026 to add an authenticated remote MCP transport so the same validated tool surface can be hosted for remote MCP clients.
Trafft's current public documentation describes a broader API surface than was available during the July validation. This branch does not infer or enable write tools from high-level documentation alone. Stable tools remain read-only until exact endpoint, request-body, cancellation, and failure semantics are verified against Trafft's current official contract.
A hardened Model Context Protocol server for inspecting Trafft booking data without exposing mutation tools. It supports both local stdio and bearer-protected remote Streamable HTTP transports.
This repository is a clean derivative of mjmirza/trafft-mcp at commit c8793116e564a6c84d4e727ee0d4c7f24aef45ff. It retains the upstream MIT terms and documents material changes in UPSTREAM.md and NOTICE.
Stable tool surface
list_servicesget_servicefind_services_by_namelist_employeesget_employeelist_locationsget_locationlist_appointmentslist_customersget_customerfind_duplicate_customersget_available_timescompare_services_to_expected
get_available_times accepts one service and one date, then maps them to Trafft's documented calendar_start_date, calendar_end_date, and service query parameters. Optional employee, location, and additional-guest inputs are mapped to the published API names.
No create, update, cancel, reschedule, pricing-write, webhook-write, booking, coupon, or delete tool is compiled into the stable tool surface.
Six experimental read-only probes—webhooks, notifications, working hours, Special Days, Days Off, and settings—remain disabled unless TRAFFT_ENABLE_EXPERIMENTAL_READS=true. They should not be enabled without fresh verification against Trafft's current official API.
Related MCP server: finance-reconcile-mcp
Local stdio transport
npm ci --ignore-scripts
npm run build
npm run start:stdioThe original stdio transport is preserved for local MCP clients.
Remote Streamable HTTP transport
The remote server exposes:
GET /healthz— non-sensitive health responsePOST /mcp— stateless MCP endpointbearer authentication on every
/mcprequestbounded JSON request bodies
the same Trafft origin allowlist, path confinement, redirect refusal, response limits, sanitized errors, and audit logging used by the stdio build
Configure the normal TRAFFT_* values plus a separate MCP_ACCESS_TOKEN of at least 32 characters. The MCP access token is not a Trafft API credential.
npm ci --ignore-scripts
npm run build
MCP_ACCESS_TOKEN='use-a-secure-secret-store' npm run start:remoteLocal binding defaults to 127.0.0.1:3000. Hosted containers should set MCP_BIND_HOST=0.0.0.0 behind an HTTPS ingress or reverse proxy. The included Dockerfile does this automatically for the container runtime.
Remote client configuration
A remote MCP client should target the hosted HTTPS endpoint ending in /mcp and send:
Authorization: Bearer <MCP_ACCESS_TOKEN>Never put TRAFFT_CLIENT_ID or TRAFFT_CLIENT_SECRET into the MCP client configuration. Those credentials belong only in the server-side secret store.
Container deployment
Build and run the included production container with all secrets injected at runtime. Do not bake .env files, API credentials, or MCP access tokens into the image.
The container exposes port 3000, starts build/remote.js, and keeps audit storage writable for the non-root Node user. Production ingress must provide HTTPS.
Security architecture
Local stdio and remote Streamable HTTP MCP transports
Separate bearer secret for remote MCP access
HTTPS-only Trafft origin
Exact Trafft hostname allowlist
API-path confinement and encoded-traversal rejection
Redirect refusal
GET-only Trafft REST policy, except the authentication POST
In-memory Trafft bearer token
Sanitized errors and request identifiers
Bounded safe-GET retries
Streaming response-size enforcement
Bounded remote request bodies
Valid-JSON MCP response limits
Privacy-minimized JSONL operation log
No deep/write audit mode
See SECURITY.md for the verified baseline guarantees and limitations.
Development gate
npm ci --ignore-scripts
npm run check
npm audit --audit-level=high
npm pack --dry-runThe mock security suite does not call Trafft and does not require credentials.
Secret handling
Never commit credentials or paste them into chat, issues, screenshots, fixtures, or shell history. Use an OS secret store or approved private runtime injection.
Historical API boundary
The July 2026 implementation intentionally compiled only read operations after Trafft Support described a much narrower mutation surface at that time. Those findings remain part of the project history, but should not be treated as a claim about Trafft's present-day API.
Current write support will be considered only from exact, current, official Trafft request contracts and controlled validation. Undocumented dashboard endpoints are out of scope.
Questions and comments
Use the standing project-status issue for general questions and compatibility discussion. Security concerns should be reported privately through GitHub Security Advisories.
Independence
This project is not affiliated with, endorsed by, or sponsored by Trafft. Trafft is a trademark of its respective owner.
This server cannot be installed
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 Servers
- Flicense-qualityDmaintenanceMock MCP server for validating Constructoo Copilot data access, exposing read-only tools like counting customer properties, retrieving project status, and fetching appointments.
- AlicenseAqualityDmaintenanceRead-only MCP server for reconciling SimpleFIN bank data against Firefly III ledger, enabling audit and review workflows without mutation.19191MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for querying Timely time tracking data, providing tools for project overviews, time spent summaries, and work log entries.3MIT
- Alicense-qualityCmaintenanceA read-only MCP server that provides tools to list and read devices, MDM servers, blueprints, configurations, apps, packages, users, and other resources from Apple Business Manager and Apple School Manager.MIT
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Read-only MCP server for Muovi, Argentina's trust-first local services marketplace (6 tools).
Federated commerce search across independent WooCommerce merchants. Keyless, read-only MCP server.
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/Mad-Logic-Studio/trafft-mcp-readonly'
If you have feedback or need assistance with the MCP directory API, please join our Discord server