{"record":{"id":"d2bffc46b46bbd10","repo":"paperclipai/paperclip","slug":"google-sheets-mcp-token-is-required-when-google-sh","errorCode":null,"errorMessage":"GOOGLE_SHEETS_MCP_TOKEN is required when GOOGLE_SHEETS_MCP_HOST is not loopback.","messagePattern":"GOOGLE_SHEETS_MCP_TOKEN is required when GOOGLE_SHEETS_MCP_HOST is not loopback\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/google-sheets-mcp-server/src/config.ts","lineNumber":136,"sourceCode":"  }\n\n  const serviceAccount = serviceAccountSchema.parse(parsed);\n  return {\n    serviceAccount,\n    allowedSpreadsheetIds,\n    secretRedactions: [\n      raw,\n      serviceAccount.private_key,\n      serviceAccount.client_email,\n    ].filter((value) => value.length >= 8),\n  };\n}\n\nexport function createGoogleSheetsMcpHttpConfig(input: GoogleSheetsMcpHttpConfigInput): GoogleSheetsMcpHttpConfig {\n  const token = input.token?.trim();\n  const host = normalizeBindHost(input.host);\n  if (!token && !isLoopbackBindHost(host)) {\n    throw new Error(\"GOOGLE_SHEETS_MCP_TOKEN is required when GOOGLE_SHEETS_MCP_HOST is not loopback.\");\n  }\n  return {\n    mcpConfig: createGoogleSheetsMcpConfig(input),\n    port: parsePort(input.port),\n    host,\n    token: token ? token : null,\n  };\n}\n\nexport function readConfigFromEnv(\n  env: NodeJS.ProcessEnv = process.env,\n  argv: string[] = process.argv.slice(2),\n): GoogleSheetsMcpConfig {\n  const args = parseArgs(argv);\n  return createGoogleSheetsMcpConfig({\n    serviceAccountJson: args.serviceAccountJson ?? env.GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON,\n    serviceAccountJsonPath: args.serviceAccountJsonPath ?? env.GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON_PATH,\n    allowedSpreadsheetIds: args.allowedSpreadsheetIds","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/packages/google-sheets-mcp-server/src/config.ts#L118-L154","documentation":"Error \"GOOGLE_SHEETS_MCP_TOKEN is required when GOOGLE_SHEETS_MCP_HOST is not loopback.\" thrown in paperclipai/paperclip.","triggerScenarios":"Thrown at packages/google-sheets-mcp-server/src/config.ts:136 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set GOOGLE_SHEETS_MCP_TOKEN to a strong bearer token, or bind GOOGLE_SHEETS_MCP_HOST to 127.0.0.1 (loopback)."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}