Atlas / MCP servers / transloadit / Transloadit JavaScript/TypeScript SDKs

Transloadit JavaScript/TypeScript SDKsCAUTION

mcp/transloadit/node-sdk

Transloadit's official Node.js SDK

Verdict
CAUTION
Grade
D
Trust score
64 /100
Exposed tools
1 1r · 0w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
73
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/transloadit/node-sdk/actions/workflows/ci.yml) [](https://codecov.io/gh/transloadit/node-sdk)

Monorepo for Transloadit SDKs, shared packages, and the MCP server.

[](https://glama.ai/mcp/servers/transloadit/node-sdk)

Packages

  • @transloadit/viewer — Published alpha for responsive images from Storage and Smart CDN

Templates. See the Viewer guide.

  • @transloadit/node — Node.js SDK + CLI. See packages/node/README.md.
  • transloadit — Stable unscoped package (built from @transloadit/node).
  • @transloadit/mcp-server — MCP server (Streamable HTTP + stdio). See packages/mcp-server/README.md.
  • @transloadit/types — Shared TypeScript types.
  • @transloadit/utils — Shared utilities.
  • @transloadit/zod — Zod schemas for Transloadit APIs.

Quick start

Node SDK

import { Transloadit } from '@transloadit/node'

const client = new Transloadit({
authKey: process.env.TRANSLOADIT_KEY as string,
authSecret: process.env.TRANSLOADIT_SECRET as string,
})

const result = await client.createAssembly({
params: {
steps: {
':original': { robot: '/upload/handle' },
Read from source at commit 636cd031a0e9OBSERVED · 2026-10-13
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add mcp-server --env TRANSLOADIT_SECRET=${TRANSLOADIT_SECRET} -- npx -y @transloadit/[email protected] stdio
03

Exposed tools (1)

1 read · 0 write · 0 destructive.

ToolRiskDescription
custom_echoread
04

Trust audit

CAUTIONgrade D · trust 64/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (4 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills
.claude/skills
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.codex/skills
.codex/skills
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.cursor/rules/coding-style.mdc
.cursor/rules/coding-style.mdc
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.cursor/rules/general.mdc
.cursor/rules/general.mdc
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.cursor/rules/playwright.mdc
.cursor/rules/playwright.mdc
Why it matters. link not followed
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/img/test/next-server.test.tsx:148
urlParams: { token: 'never-log-query-token' },
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/utils/test/storageGrant.test.ts:10
const SECRET = 'test-secret-0123456789abcdef0123456789abcdef'
LOWInventory / provenance · inv.hidden_file · CWE-1104
.yarnrc.yml
.yarnrc.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/node/src/cli/commands/storage.ts:215
const hash = createHash('md5')
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/node/src/storageImage.ts:124
const checksum = createHash('md5')
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/node/test/e2e/cli/assemblies-create.test.ts:108
const actualMd5 = crypto.createHash('md5').update(downloadedBuffer).digest('hex')
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/node/test/unit/cli/storage-store.test.ts:157
const md5hash = createHash('md5').update(bytes).digest('hex')
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/node/test/unit/cli/storage-store.test.ts:231
const md5hash = createHash('md5').update(bytes).digest('hex')
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/img/test/next-config.test.ts:29
const repoRoot = resolve(import.meta.dirname, '../../..')
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/img/test/packaging.test.ts:10
await readFile(new URL('../../utils/package.json', import.meta.url), 'utf8'),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server/src/ui/assembly-result-widget.ts:3
import packageJson from '../../package.json' with { type: 'json' }
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server/test/e2e/http-server.ts:8
import { createTransloaditMcpHttpHandler } from '../../src/index.ts'
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server/test/e2e/lint-assembly.test.ts:5
import { lintAssemblyInstructions } from '../../../node/src/lintAssemblyInstructions.ts'
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/img/docs/reference.md:51
"baseUrl": "http://127.0.0.1:3020/file/{workspace}",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/img/test/conventional.test.tsx:102
baseUrl: 'http://127.0.0.1:32189/file/{workspace}',
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/img/test/conventional.test.tsx:107
expect(html).toContain('http://127.0.0.1:32189/file/catalog-app/')
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/img/test/next-config.test.ts:126
baseUrl: 'http://127.0.0.1:32189/file/{workspace}',
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/img/test/storage-factory.test.tsx:249
baseUrl: 'http://127.0.0.1:32189/file/{workspace}',
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
packages/img/src/placeholder.ts:18
? atob(hash)
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
packages/utils/src/storageGrant.ts:73
const binary = atob(padded)

Gates applied: no_behavioural_pass.

Audited 2026-10-13 · audit v0.4.1 · source sha 636cd031a0e9full audit observations/trust-audit/mcp-server/transloadit__node-sdk.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-13636cd031a0e9CAUTIOND64first audit
06

Questions

What is the @transloadit/mcp-server MCP server?

Transloadit's official Node.js SDK

What tools does @transloadit/mcp-server expose?

1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @transloadit/mcp-server safe to connect to an agent?

With care. The audit graded it D (64/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does @transloadit/mcp-server need?

It reads TRANSLOADIT_ASSEMBLY_KEY, TRANSLOADIT_ASSEMBLY_SECRET, TRANSLOADIT_CREDENTIALS_FILE, TRANSLOADIT_KEY, TRANSLOADIT_MCP_METRICS_PASSWORD, TRANSLOADIT_MCP_TOKEN, TRANSLOADIT_MCP_UPSTREAM_SECRET, TRANSLOADIT_SECRET, TRANSLOADIT_SMART_CDN_KEY and TRANSLOADIT_SMART_CDN_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @transloadit/mcp-server run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as transloadit-img-next-fixture at 0.5.0.

How current is this page?

The grade is for one exact copy of the source (636cd031a0e9), read on 2026-10-13. The repository is watched and re-audited when it changes.

Advertisement