archiveInterface
⚠️ ADMIN OPERATION ⚠️ Archives an interface. This permanently removes the interface from active use. Corresponds to POST /api/stations/v1/interfaces/{interfaceId}/archive. Requires stations:write scope. [ADMIN]
Read and write a Tulip manufacturing workspace — tables, machines, stations, apps — from an MCP client.
LABSCO SUMMARY
A default launch switches on only the read-only tools. Everything that creates, changes, archives or deletes comes on only when you add its category to ENABLED_TOOLS, and the scopes on your Service Account are the boundary that actually holds.
A server for one Tulip instance that puts the Tulip API in front of an MCP client. It runs from npx against a file holding your instance URL and API credentials.
Node.js, and a .env file, in any folder, holding TULIP_API_KEY, TULIP_API_SECRET and TULIP_BASE_URL. TULIP_WORKSPACE_ID applies only to an Account API key — a Workspace API key leaves it blank.
One command plus a key — npx @tulip/mcp-server, then supply credentials
USE CASES
List stations, machines and users from the instance instead of clicking through the workspace.
Listing, counting and reading table records works on a default install; adding or updating records needs the write category added to ENABLED_TOOLS.
Add the write category to ENABLED_TOOLS and the writing tools appear; leave the admin category out and archiving stays unavailable.
A Workspace API key needs no workspace id; an Account API key does, and the file has to say which one you used.
Listed in project code.
archiveInterface⚠️ ADMIN OPERATION ⚠️ Archives an interface. This permanently removes the interface from active use. Corresponds to POST /api/stations/v1/interfaces/{interfaceId}/archive. Requires stations:write scope. [ADMIN]
archiveStation⚠️ ADMIN OPERATION ⚠️ Archives a station. This permanently removes the station from active use. Corresponds to POST /api/stations/v1/stations/{stationId}/archive. Requires stations:write scope. [ADMIN]
archiveStationGroup⚠️ ADMIN OPERATION ⚠️ Archives a station group. This permanently removes the station group from active use. Corresponds to POST /api/stations/v1/station-groups/{stationGroupId}/archive. Requires stations:write scope. [ADMIN]
countTableRecordsCounts records in a Tulip Table. Corresponds to GET /tables/{tableId}/count. Requires tables:read scope. [READ-ONLY]
createInterfaceCreates a new interface. Corresponds to POST /api/stations/v1/interfaces. Requires stations:write scope. [WRITE]
createStationCreates a new station. Corresponds to POST /api/stations/v1/stations. Requires stations:write scope. [WRITE]
createStationAppAssignmentCreates an app assignment for a station. Corresponds to POST /api/stations/v1/stations/{stationId}/app-assignments. Requires stations:write scope. [WRITE]
createStationGroupCreates a new station group. Corresponds to POST /api/stations/v1/station-groups. Requires stations:write scope. [WRITE]
createStationGroupAppAssignmentCreates an app assignment for a station group. Corresponds to POST /api/stations/v1/station-groups/{stationGroupId}/app-assignments. Requires stations:write scope. [WRITE]
createTableCreates a new Tulip Table. Corresponds to POST /tables. Requires tables:write scope. [WRITE]
createTableAggregationCreates a new Tulip Table aggregation in the specified Table. Corresponds to POST /tables/{tableId}/aggregations. Requires tables:write scope. [WRITE]
createTableLinkCreates a table link relationship. Corresponds to POST /tableLinks. Requires tables:write scope. [WRITE]
createTableQueryCreate a Tulip Table Query in specified Table. Corresponds to POST /tables/{tableId}/queries. Requires tables:write scope. [WRITE]
createTableRecordCreates a new record in a Tulip Table. Corresponds to POST /tables/{tableId}/records. Requires tables:write scope. [WRITE]
createUserCreates a new Tulip User with specified role. This creates actual user accounts in your Tulip instance. Use with extreme caution. Corresponds to POST /users. Requires users:write scope. [ADMIN]
deleteAllTableRecords[DANGEROUS] Deletes ALL records from a Tulip Table permanently. This will wipe all data in the table and cannot be undone. Use with extreme caution. Corresponds to DELETE /tables/{tableId}/records. Requires tables:write scope. [ADMIN]
deleteInterfaceStationAssignmentUnassigns an interface from a station by deleting its station assignment. Corresponds to DELETE /api/stations/v1/interfaces/{interfaceId}/station-assignment. Requires stations:write scope. [WRITE]
deleteStationAppAssignment⚠️ ADMIN OPERATION ⚠️ Deletes an app assignment from a station. Corresponds to DELETE /api/stations/v1/stations/{stationId}/app-assignments/{appAssignmentId}. Requires stations:write scope. [ADMIN]
deleteStationGroupAppAssignment⚠️ ADMIN OPERATION ⚠️ Deletes an app assignment from a station group. Corresponds to DELETE /api/stations/v1/station-groups/{stationGroupId}/app-assignments/{appAssignmentId}. Requires stations:write scope. [ADMIN]
deleteTableAggregation⚠️ ADMIN OPERATION ⚠️ Removes a Tulip Table aggregation by id. Corresponds to DELETE /tables/{tableId}/aggregation/{aggregationId}. Requires tables:write scope. [ADMIN]
deleteTableQuery⚠️ ADMIN OPERATION ⚠️ Removes a Tulip Table query by id. Corresponds to DELETE /tables/{tableId}/query/{queryId}. Requires tables:write scope. [ADMIN]
deleteTableRecord[DANGEROUS OPERATION] Deletes a specific record from a Tulip Table permanently. This action cannot be undone. Corresponds to DELETE /tables/{tableId}/records/{recordId}. Requires tables:write scope. [ADMIN]
generateMachineActivityArchive⚠️ ADMIN OPERATION ⚠️ Generates a machine activity archive for a given machine ID. This creates server load and should be used sparingly. Corresponds to POST /machines/archive/{machineID}. Requires the machines:write API key scope. [ADMIN]
getInterfaceGets details about a specific interface. Corresponds to GET /api/stations/v1/interfaces/{interfaceId}. Requires stations:read scope. [READ-ONLY]
getStationGets details about a specific station. Corresponds to GET /api/stations/v1/stations/{stationId}. Requires stations:read scope. [READ-ONLY]
getStationGroupGets details about a specific station group. Corresponds to GET /api/stations/v1/station-groups/{stationGroupId}. Requires stations:read scope. [READ-ONLY]
getTableGets details about a Tulip Table. Corresponds to GET /tables/{tableId}. Requires tables:read scope. [READ-ONLY]
getTableAggregationLooks up a table aggregation for a Tulip Table by id. Corresponds to GET /tables/{tableId}/aggregation/{aggregationId}. Requires tables:read scope. [READ-ONLY]
getTableLinkFetches information about a table link. Corresponds to GET /tableLinks/{tableLinkId}. Requires tables:read scope. [READ-ONLY]
getTableQueryLooks up a table query for a Tulip Table by id. Corresponds to GET /tables/{tableId}/query/{queryId}. Requires tables:read scope. [READ-ONLY]
getTableRecordGets a specific record from a Tulip Table. Corresponds to GET /tables/{tableId}/records/{recordId}. Requires tables:read scope. [READ-ONLY]
getUserGets details about a specific user. Corresponds to GET /api/users/v1/users/{userId}. Requires users:read scope. [READ-ONLY]
getUserGroupGets details about a specific user group. Corresponds to GET /api/users/v1/user-groups/{userGroupId}. Requires users:read scope. [READ-ONLY]
getUserGroupUsersGets users in a specific user group. Corresponds to GET /api/users/v1/user-groups/{userGroupId}/users. Requires users:read scope. [READ-ONLY]
getUserRoleGets details about a specific user role. Corresponds to GET /api/users/v1/roles/{userRoleId}. Requires users:read scope. [READ-ONLY]
incrementTableRecordFieldIncrements/decrements a field in a table record. Corresponds to PATCH /tables/{tableId}/records/{recordId}/increment. Requires tables:write scope. [WRITE]
linkTableRecordsLinks two records given a table link relationship. Corresponds to PUT /tableLinks/{tableLinkId}/link. Requires tables:write scope. [WRITE]
listAppGroupsRetrieves a list of all Tulip App Groups and their containing apps. Corresponds to GET /appGroups. Requires the apps:read API key scope. [READ-ONLY]
listInterfacesGets a paginated, filtered, and sorted list of interfaces. Corresponds to GET /api/stations/v1/interfaces. Requires stations:read scope. [READ-ONLY]
listMachineTypesRetrieves a list of all Tulip machine types and their corresponding machines. Corresponds to GET /machines. Requires the machines:read API key scope. [READ-ONLY]
listStationAppAssignmentsGets app assignments for a station. Corresponds to GET /api/stations/v1/stations/{stationId}/app-assignments. Requires stations:read scope. [READ-ONLY]
listStationGroupAppAssignmentsGets app assignments for a station group. Corresponds to GET /api/stations/v1/station-groups/{stationGroupId}/app-assignments. Requires stations:read scope. [READ-ONLY]
listStationGroupsGets a paginated, filtered, and sorted list of station groups. Corresponds to GET /api/stations/v1/station-groups. Requires stations:read scope. [READ-ONLY]
listStationsGets a paginated, filtered, and sorted list of stations. Corresponds to GET /api/stations/v1/stations. Requires stations:read scope. [READ-ONLY]
listTableAggregationsLists the aggregations for a Tulip Table. Corresponds to GET /tables/{tableId}/aggregations. Requires tables:read scope. [READ-ONLY]
listTableQueriesLists queries for a Tulip Table. Corresponds to GET /tables/{tableId}/queries. Requires tables:read scope. [READ-ONLY]
listTableRecordsLists records of a Tulip Table. Corresponds to GET /tables/{tableId}/records. Requires tables:read scope. [READ-ONLY]
listTablesRetrieves a list of all Tulip Tables. Corresponds to GET /tables. Requires tables:read scope. [READ-ONLY]
listUserGroupsGets a list of user groups. Corresponds to GET /api/users/v1/user-groups. Requires users:read scope. [READ-ONLY]
listUserRolesGets a list of user roles. Corresponds to GET /api/users/v1/roles. Requires users:read scope. [READ-ONLY]
listUserUserGroupsReturns an array of user group IDs that the user is currently a member of. Corresponds to GET /api/users/v1/users/{userId}/user-groups. Requires users:read scope. [READ-ONLY]
listUsersGets a list of users. Corresponds to GET /api/users/v1/users. Requires users:read scope. [READ-ONLY]
manageStationAppAssignmentUpdates a specific app assignment for a station. Corresponds to PUT /api/stations/v1/stations/{stationId}/app-assignments/{appAssignmentId}. Requires stations:write scope. [WRITE]
manageStationGroupAppAssignmentUpdates a specific app assignment for a station group. Corresponds to PUT /api/stations/v1/station-groups/{stationGroupId}/app-assignments/{appAssignmentId}. Requires stations:write scope. [WRITE]
removeAllStationAppAssignments⚠️ ADMIN OPERATION ⚠️ Removes all app assignments for the given station. Corresponds to DELETE /api/stations/v1/stations/{stationId}/app-assignments. Requires stations:write scope. [ADMIN]
removeAllStationGroupAppAssignments⚠️ ADMIN OPERATION ⚠️ Removes all app assignments for the given station group. Corresponds to DELETE /api/stations/v1/station-groups/{stationGroupId}/app-assignments. Requires stations:write scope. [ADMIN]
reportAttributesReports new values for machine attributes. Corresponds to POST /attributes/report. Requires attributes:write scope. [WRITE]
retrieveMachineActivityArchiveRetrieves machine activity archive status. Corresponds to GET /machines/archive/csv/{jobID}. Requires machines:read scope. [READ-ONLY]
runTableAggregationRuns an aggregate function on a table field. Corresponds to GET /tables/{tableId}/runAggregation. Requires tables:read scope. [READ-ONLY]
signUrlsSigns cloud storage URLs. Corresponds to POST /signURLs. Requires appropriate scope. [WRITE]
unlinkTableRecordsUnlinks two records given a table link relationship. Corresponds to PUT /tableLinks/{tableLinkId}/unlink. Requires tables:write scope. [WRITE]
updateInterfaceUpdates an interface. Corresponds to PATCH /api/stations/v1/interfaces/{interfaceId}. Requires stations:write scope. [WRITE]
updateInterfaceStationAssignmentUpdates which station this interface is assigned to. Corresponds to PUT /api/stations/v1/interfaces/{interfaceId}/station-assignment. Requires stations:write scope. [WRITE]
updateStationUpdates a station. Corresponds to PATCH /api/stations/v1/stations/{stationId}. Requires stations:write scope. [WRITE]
updateStationGroupUpdates a station group. Corresponds to PATCH /api/stations/v1/station-groups/{stationGroupId}. Requires stations:write scope. [WRITE]
updateStationGroupStationsUpdates the list of stations in a station group. Corresponds to PATCH /api/stations/v1/station-groups/{stationGroupId}/stations. Requires stations:write scope. [WRITE]
updateTableUpdates a Tulip Table. This modifies table structure and can affect existing data. Corresponds to PUT /tables/{tableId}. Requires tables:write scope. [WRITE]
updateTableAggregationUpdates an aggregation in a Tulip Table by the aggregation id. Corresponds to PUT /tables/{tableId}/aggregation/{aggregationId}. Requires tables:write scope. [WRITE]
updateTableLinkLabelsUpdates column labels for a table link. Corresponds to PUT /tableLinks/{tableLinkId}. Requires tables:write scope. [WRITE]
updateTableQueryUpdates a query in a Tulip Table by the query id. Corresponds to PUT /tables/{tableId}/query/{queryId}. Requires tables:write scope. [WRITE]
updateTableRecordUpdates a specific record in a Tulip Table. Corresponds to PUT /tables/{tableId}/records/{recordId}. Requires tables:write scope. [WRITE]
BEFORE YOU INSTALL
Docs list 71; a default launch gives you 30.
The documented client runs the server on your machine.
INSTALLATION
npx @tulip/mcp-server{
"mcpServers": {
"tulip-mcp": {
"command": "npx",
"args": [
"@tulip/mcp-server",
"--env",
"<YOUR_PATH_TO_ENV>"
]
}
}
}<YOUR_PATH_TO_ENV> is the full path to your own .env file. To copy it, Option-right-click the file on a Mac and choose Copy ".env" as Pathname, or Shift-right-click it on Windows and choose Copy as path, then write each backslash twice, as the example does. Without that path, the server may not find your credentials.