Trimble Claude MCP
Integrates with Trimble Connect, using Trimble Identity OAuth to access user-authorized data through the Trimble Connect API.
Click on "Deploy 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., "@Trimble Claude MCPshow projects I have access to in Trimble Connect"
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.
Trimble Connect MCP — Render + Firebase
Node.js MCP server and OAuth backend for Trimble Connect, with a Firebase-hosted extension UI and optional local Tekla and SketchUp bridges.
Architecture
GitHub: source control
Render: Node.js MCP + OAuth backend
Firebase Hosting: Trimble Connect extension frontend
Trimble Identity: per-user OAuth
Trimble Connect API: user-authorized data
Anthropic API: optional Claude orchestration
Related MCP server: Remote MCP Server on Cloudflare
MCP connector setup
For Trimble Agent Studio or another remote MCP client, use the deployed MCP
endpoint, including the /mcp path:
https://YOUR-RENDER-SERVICE.onrender.com/mcpFor this deployment, the endpoint is:
https://trimble-claude-mcp-g86i.onrender.com/mcpThe MCP initialize, notifications/initialized, and tools/list requests
are accepted without a user session so a connector can complete its handshake
and discover tools. For OAuth-capable clients, an unauthenticated tool call
returns the MCP OAuth challenge so the client can open its sign-in flow. The
server advertises protected-resource and authorization-server metadata at
/.well-known/oauth-protected-resource and
/.well-known/oauth-authorization-server; it also supports the MCP
protected-resource discovery paths ending in /mcp. Trimble Agent Studio
clients receive a manual sign-in/session-header instruction because they do
not handle the HTTP authentication challenge as an interactive sign-in flow.
Set PUBLIC_BASE_URL in Render to the public HTTPS origin, without a trailing
slash, for example https://YOUR-RENDER-SERVICE.onrender.com. OAuth discovery,
callback URLs, resource identifiers, and generated download links rely on this
value. Set TRIMBLE_REDIRECT_URI to
https://YOUR-RENDER-SERVICE.onrender.com/oauth/callback and register that
same callback URL in the Trimble application.
TRIMBLE_SCOPE supplies any additional scopes requested from Trimble Identity
and defaults to openid profile email. The server always includes openid,
profile, and email so it can resolve the signed-in account email. Those are
upstream Trimble OAuth scopes, not MCP-specific scopes advertised by this
server. If Agent Studio has a separate scope field, follow its connector
requirements; this server does not publish an MCP scope list. Whether a
Trimble Agent Studio tenant permits a particular hosting domain is controlled
by Trimble policy, not by this server.
The MCP/OAuth endpoints support cross-origin connector requests. Other API and
extension routes retain the configured EXTENSION_ORIGIN CORS policy.
WhatsApp sign-in
WhatsApp Trimble sessions are isolated by chat. If a chat has not signed in, or its Trimble credentials have expired, the bot responds with a sign-in link for that chat. After completing OAuth, the user should resend the request. WhatsApp login links are encrypted, expire after 24 hours, and are not tied to one server process, so Render restarts do not invalidate a link. Links are reusable until they expire, so WhatsApp link previews cannot invalidate them; each OAuth attempt still uses its own single-use state. Chat-to-session mappings use the server's in-memory store, so users may need to sign in again after a server restart.
Available integrations
The MCP tool catalog includes Trimble Connect operations for users, regions, projects, folders, files, models and entities, groups, organizer todos/views, property sets, BCF issues/topics and related resources, and Status Sharing. It also includes PDF schedule extraction/export, tender extraction, Python testing, workspace workflows, and bridge selection. Tekla and SketchUp tools are available through their respective local bridge integrations; a deployed Render service cannot directly reach software running on a user's workstation without a reachable bridge or relay.
Important production notes
The included session store is intentionally in-memory for development. Replace it with Firestore, Redis, or PostgreSQL before multi-instance production.
Set
FIREBASE_STORAGE_BUCKETin Render to enable shared temporary PDF uploads across restarts and instances. Uploads expire after 15 minutes.Set
PUBLIC_BASE_URLandTRIMBLE_REDIRECT_URIto the deployed HTTPS URLs described above.Verify the Trimble OAuth endpoints and requested
TRIMBLE_SCOPEagainst your registered Trimble application.Do not commit
.envor secrets.MCP initialization and tool discovery are unauthenticated, but tool calls are protected. Keep the OAuth configuration and token/session storage secure.
The Firebase UI is a starter shell. Replace placeholder service URLs and wire chat orchestration to your desired Claude/MCP flow.
Local run
npm install
SESSION_SECRET=replace-with-a-long-random-value npm startOpen http://localhost:3000/health.
The Workflow Builder's name field provides a dropdown of saved workflows and accepts new names. Save workflow creates or updates the named entry; Load workflow restores the selected entry from the server. These actions require Trimble sign-in, and saved workflows are visible from any browser or device after signing in.
When FIREBASE_PROJECT_ID, FIREBASE_CLIENT_EMAIL, FIREBASE_PRIVATE_KEY
and FIREBASE_DATABASE_URL are set, workflows are stored in the Firebase
Realtime Database under workflowbuilder/, which survives Render restarts and
redeploys. Create the database first in the Firebase Console (Build → Realtime
Database → Create database) and copy its URL into FIREBASE_DATABASE_URL.
Without Firebase, it falls back to
pages/datastorage/workflowbuilder.json on the server's local disk, which is
wiped on Render's ephemeral filesystem.
For Trimble Connect OAuth locally, configure TRIMBLE_CLIENT_ID,
TRIMBLE_CLIENT_SECRET, TRIMBLE_AUTHORIZATION_ENDPOINT, TRIMBLE_TOKEN_ENDPOINT,
TRIMBLE_REDIRECT_URI, and PUBLIC_BASE_URL in the environment. TRIMBLE_SCOPE
is optional and defaults to openid profile email.
SketchUp status bridge
The optional SketchUp Ruby bridge is in sketchup/SUBridge.rb. In SketchUp,
open Window > Ruby Console, paste the file contents, and run it. It starts
a loopback-only HTTP server at http://127.0.0.1:43127/status and evaluates
SketchUp model state on SketchUp's UI thread.
Check it locally with:
curl http://127.0.0.1:43127/statusThis endpoint is a status bridge only. It does not implement MCP tool listing
or tool calls. The existing MCP integration uses
@parkhill/mcp-server-for-sketchup on port 9876; keep that backend running
when using the sketchup_* MCP tools. A deployed Render service cannot reach a
desktop SketchUp instance through 127.0.0.1; use a local Node service or an
authenticated tunnel/relay for that topology.
Extract a client-side PDF
The extract_column_schedule MCP tool accepts either a server-visible pdfPath or
the PDF contents as pdfBase64 when the file exists on the client:
{
"name": "extract_column_schedule",
"arguments": {
"pdfBase64": "JVBERi0x..."
}
}The base64 value may also be a data:application/pdf;base64,... value. Do not
send both pdfPath and pdfBase64 in the same request.
For a browser, Swagger, or another upload client, first POST the PDF as the
file field to /api/pdf/uploads. The response contains a temporary uploadId
that can be passed to the MCP tool:
{
"name": "extract_column_schedule",
"arguments": {
"uploadId": "returned-upload-id"
}
}The existing /api/pdf/extract-column-schedule endpoint remains available for
the HTML exporter and extracts the uploaded file directly in the same request.
GitHub
git init
git add .
git commit -m "Initial Trimble Claude MCP"
git branch -M main
git remote add origin https://github.com/YOUR-USERNAME/trimble-claude-mcp.git
git push -u origin mainRender
Connect the GitHub repository as a Web Service or use render.yaml as a Blueprint. Build: npm install; Start: npm start.
Set the required SESSION_SECRET and Trimble OAuth variables in Render. Set
PUBLIC_BASE_URL to the public service origin. Set TRIMBLE_REDIRECT_URI to:
https://YOUR-RENDER-NAME.onrender.com/oauth/callback
Firebase
firebase login
firebase init hosting
firebase deployUse public as the hosting directory. Replace the Render URL in public/index.html.
Production follow-up
Firestore token/session persistence with encryption at rest
Validate the MCP HTTP transport against the client versions you intend to support
Rate limiting, CSRF protection, audit logging, and structured logging
Trimble Connect extension SDK context and selected-object integration "# trimble-claude-mcp"
This server cannot be deployed
Maintenance
Related MCP Connectors
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
- StytchOAuthdev.stytch.mcp
The Stytch MCP server is a reference implementation that demonstrates remote MCP server authentication and authorization using Stytch Connected Apps. It provides OAuth 2.1-compliant authorization (including PKCE), Dynamic Client Registration, and validates Stytch-issued access tokens to enable AI agents to securely interact with external services through permissioned access, supporting scopes like openid, email, profile, and manage:project_data.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceA Cloudflare-deployable server that implements Model Context Protocol (MCP) capabilities, allowing AI assistants like Claude to access custom tools via OAuth authentication flows.-
- FlicenseNot gradedqualityCmaintenanceEnables deploying a Model Context Protocol (MCP) server on Cloudflare Workers with built-in OAuth authentication. It allows local clients like Claude Desktop to securely connect to and use remote tools through an HTTP/SSE transport.-
- FlicenseNot gradedqualityCmaintenanceEnables deploying and running a Model Context Protocol (MCP) server on Cloudflare Workers with built-in OAuth authentication. It allows users to host and access tools remotely via Server-Sent Events (SSE) transport from clients like Claude Desktop.-
- FlicenseNot gradedqualityDmaintenanceA remote Model Context Protocol server that lets Claude on claude.ai browse your Autodesk Construction Cloud (ACC) hubs/projects/files and hand you a link that opens the actual model in a hosted Autodesk Viewer page.-