{"_id":"@daanvanhulsen/loom-transcript-mcp","_rev":"8-f9ee357dbc6e5a79f53e4ca6e17bea40","name":"@daanvanhulsen/loom-transcript-mcp","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@daanvanhulsen/loom-transcript-mcp","version":"1.0.0","_id":"@daanvanhulsen/loom-transcript-mcp@1.0.0","maintainers":[{"name":"daanvanhulsen","email":"daan@minimum.studio"}],"dist":{"shasum":"ceee2d4994b32614cffa472b17e45ec02365ab44","tarball":"https://registry.npmjs.org/@daanvanhulsen/loom-transcript-mcp/-/loom-transcript-mcp-1.0.0.tgz","fileCount":3,"integrity":"sha512-enSiea1845UH1V6ZB0K4P1qtm9GIjPCF7OOl5hUUFsQD+rlVs3w10icwSU5kyqCtX7ziBRDkLX3gUbVEX3WmAQ==","signatures":[{"sig":"MEUCIGG36uK8dcJbocLJVcNR/kO2vYNqZgLb0lJNIjXSBTL7AiEAuXkRxIOGrYIy0sVCwlEQPQTpOsaXcbIuQvwjAOaFOw0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12919},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"6fbc61fb24a68bcb41148707172d62288cbfe15d","scripts":{"dev":"tsc-watch --onSuccess \"node dist/index.js\"","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"daanvanhulsen","email":"daan@minimum.studio"},"_npmVersion":"10.1.0","description":"MCP tool for fetching Loom video transcripts","directories":{},"_nodeVersion":"20.9.0","dependencies":{"zod":"^3.22.4","axios":"^1.6.2","ts-node":"^10.9.2","typescript":"^5.3.3","@modelcontextprotocol/sdk":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"tsc-watch":"^6.0.4","typescript":"^5.3.3","@types/node":"^20.11.19","@types/axios":"^0.14.4"},"_npmOperationalInternal":{"tmp":"tmp/loom-transcript-mcp_1.0.0_1744748776825_0.19474181236375543","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@daanvanhulsen/loom-transcript-mcp","version":"1.0.1","_id":"@daanvanhulsen/loom-transcript-mcp@1.0.1","maintainers":[{"name":"daanvanhulsen","email":"daan@minimum.studio"}],"bin":{"loom-transcript-mcp":"dist/index.js"},"dist":{"shasum":"3f1621a63886275a3f33c6d0e44da1fbef877f72","tarball":"https://registry.npmjs.org/@daanvanhulsen/loom-transcript-mcp/-/loom-transcript-mcp-1.0.1.tgz","fileCount":3,"integrity":"sha512-zuPSU59jqS+6QPzffP/RX2QvXuL/TvwCMGRzjvhdhI0aFoN9/7Wb9x2MwLQUaqwG4O0o0iNyCQlI2Me4dRshoQ==","signatures":[{"sig":"MEUCICx0YSxKs8L3XJuxkyj/GMwmY5hS/RAqyxnLyw745w4bAiEA+PQQsON68BbiThh6VlGoAk5k0xEzbgAngVbs/dewdm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13000},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"f1837be0f6abb6c9cb55d6792679644a50fa8ab9","scripts":{"dev":"tsc-watch --onSuccess \"node dist/index.js\"","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"daanvanhulsen","email":"daan@minimum.studio"},"_npmVersion":"10.1.0","description":"MCP tool for fetching Loom video transcripts","directories":{},"_nodeVersion":"20.9.0","dependencies":{"zod":"^3.22.4","axios":"^1.6.2","ts-node":"^10.9.2","typescript":"^5.3.3","@modelcontextprotocol/sdk":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"tsc-watch":"^6.0.4","typescript":"^5.3.3","@types/node":"^20.11.19","@types/axios":"^0.14.4"},"_npmOperationalInternal":{"tmp":"tmp/loom-transcript-mcp_1.0.1_1744749622204_0.20984354416038475","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@daanvanhulsen/loom-transcript-mcp","version":"1.0.2","_id":"@daanvanhulsen/loom-transcript-mcp@1.0.2","maintainers":[{"name":"daanvanhulsen","email":"daan@minimum.studio"}],"bin":{"loom-transcript-mcp":"dist/index.js"},"dist":{"shasum":"b33b6b611995de8935f0948324f17df2b86617c9","tarball":"https://registry.npmjs.org/@daanvanhulsen/loom-transcript-mcp/-/loom-transcript-mcp-1.0.2.tgz","fileCount":3,"integrity":"sha512-bGUVR48oVt5Q330mSWBOsxxc3RaxXm2bZUS6qU8vJcvbXhNueb+7hBbSs1CYpqZz9966G2V/7d4jB0NzycuRjA==","signatures":[{"sig":"MEYCIQCv3RKk1GHero55eNW8KeDilarLLqvKFd1JFqkO3dclOwIhAIrtopFL48AeAsx9X2ZpIcOTReiDvFAiqIu0LCm3UAR6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13000},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"2a4af0afefdfe6fc628af7850336eb3a9760ac3f","scripts":{"dev":"tsc-watch --onSuccess \"node dist/index.js\"","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"daanvanhulsen","email":"daan@minimum.studio"},"_npmVersion":"10.1.0","description":"MCP tool for fetching Loom video transcripts","directories":{},"_nodeVersion":"20.9.0","dependencies":{"zod":"^3.22.4","axios":"^1.6.2","ts-node":"^10.9.2","typescript":"^5.3.3","@modelcontextprotocol/sdk":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"tsc-watch":"^6.0.4","typescript":"^5.3.3","@types/node":"^20.11.19","@types/axios":"^0.14.4"},"_npmOperationalInternal":{"tmp":"tmp/loom-transcript-mcp_1.0.2_1745912356726_0.8131602063376926","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@daanvanhulsen/loom-transcript-mcp","version":"1.0.3","_id":"@daanvanhulsen/loom-transcript-mcp@1.0.3","maintainers":[{"name":"daanvanhulsen","email":"daan@minimum.studio"}],"bin":{"loom-transcript-mcp":"dist/index.js"},"dist":{"shasum":"4a8c4c4220eb94b32d8b5f5fe3262be738d4788f","tarball":"https://registry.npmjs.org/@daanvanhulsen/loom-transcript-mcp/-/loom-transcript-mcp-1.0.3.tgz","fileCount":3,"integrity":"sha512-sA/9BT4LmIUIrFduEffTdlyXQuadK6Q0XahMczeZXnSSslSlPdR6xkwubwmj+w8+0fVh6cHhYd+nB+quElS6Eg==","signatures":[{"sig":"MEYCIQCeBDxA0/pXEe4Jbn+o687Vi17rZh1cCnWhRQblG7Hg/gIhANVZUv1zizECGSPvy+xPywed9mftUkPkhtX5kJ9wCODC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12851},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"2a4af0afefdfe6fc628af7850336eb3a9760ac3f","scripts":{"dev":"tsc-watch --onSuccess \"node dist/index.js\"","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","rebuild":"npm run clean && npm run build"},"_npmUser":{"name":"daanvanhulsen","email":"daan@minimum.studio"},"_npmVersion":"10.1.0","description":"MCP tool for fetching Loom video transcripts","directories":{},"_nodeVersion":"20.9.0","dependencies":{"zod":"^3.22.4","axios":"^1.6.2","ts-node":"^10.9.2","typescript":"^5.3.3","@modelcontextprotocol/sdk":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"tsc-watch":"^6.0.4","typescript":"^5.3.3","@types/node":"^20.11.19","@types/axios":"^0.14.4"},"_npmOperationalInternal":{"tmp":"tmp/loom-transcript-mcp_1.0.3_1745912646932_0.262587638731665","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@daanvanhulsen/loom-transcript-mcp","version":"1.0.4","description":"MCP tool for fetching Loom video transcripts","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"loom-transcript-mcp":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js","dev":"tsc-watch --onSuccess \"node dist/index.js\"","clean":"rm -rf dist","rebuild":"npm run clean && npm run build","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@modelcontextprotocol/sdk":"^1.4.0","axios":"^1.6.2","ts-node":"^10.9.2","typescript":"^5.3.3","zod":"^3.22.4"},"devDependencies":{"@types/axios":"^0.14.4","@types/node":"^20.11.19","tsc-watch":"^6.0.4","typescript":"^5.3.3"},"_id":"@daanvanhulsen/loom-transcript-mcp@1.0.4","gitHead":"2a4af0afefdfe6fc628af7850336eb3a9760ac3f","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-ocjBMhrDgQqlvLQE1UrJUU70OOEeeStdTMmHuSgDuk1xnrnUGH7AjDr/8l4yX0fhDqMoCDUBVn+ceGjp+zdn0g==","shasum":"6b10917a91e3c23f3ccd5b0b20d1010864a9829b","tarball":"https://registry.npmjs.org/@daanvanhulsen/loom-transcript-mcp/-/loom-transcript-mcp-1.0.4.tgz","fileCount":3,"unpackedSize":12293,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICsS1UPh69zqrZKYbHD/Iq0yCcHxxKZcIJTgUuHy3r9tAiEAuzS8LUmwBHGw9eP3kAH+A+MCnNToBW/IFDGPUdDlBDU="}]},"_npmUser":{"name":"daanvanhulsen","email":"daan@minimum.studio"},"directories":{},"maintainers":[{"name":"daanvanhulsen","email":"daan@minimum.studio"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/loom-transcript-mcp_1.0.4_1746964605339_0.42850707348089"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-15T20:26:16.710Z","modified":"2025-05-11T11:56:45.692Z","1.0.0":"2025-04-15T20:26:17.046Z","1.0.1":"2025-04-15T20:40:22.377Z","1.0.2":"2025-04-29T07:39:16.891Z","1.0.3":"2025-04-29T07:44:07.132Z","1.0.4":"2025-05-11T11:56:45.522Z"},"description":"MCP tool for fetching Loom video transcripts","maintainers":[{"name":"daanvanhulsen","email":"daan@minimum.studio"}],"readme":"# Loom Transcript MCP\n\nA Model Context Protocol (MCP) tool for fetching transcripts from Loom videos.\n\n## Purpose\n\nThis tool allows you to fetch the transcript text from any Loom video URL. It extracts the video ID from the URL, makes a request to Loom's GraphQL API to get the transcript details, and then fetches and parses the VTT captions file to provide the transcript as plain text.\n\n## Installation\n\n1. Clone the repository\n2. Install dependencies:\n```bash\nnpm install\n```\n3. Build the project:\n```bash\nnpm run build\n```\n\n## Usage\n\n### Running the MCP Server\n\n```bash\nnpm start\n```\n\n### Adding to Cursor Settings\n\n1. Build the project to create the `dist` folder with the compiled code\n2. Right-click on the `dist/index.js` file in the file explorer and copy the full path\n3. In Cursor, click on the top left \"Cursor\" menu\n4. Go to \"Cursor Settings\"\n5. Go to \"Features\"\n6. Scroll down to \"MCP Servers\"\n7. Click on \"Add New MCP Server\"\n8. Enter a name for your tool, e.g., \"Loom Transcript\"\n9. Select \"Command\" from the dropdown\n10. Enter the following command: `node /path/to/dist/index.js` (replace with your actual path)\n11. Click \"Save\"\n12. Restart Cursor\n\n## Tool Details\n\n### getLoomTranscript\n\nGets the transcript text from a Loom video URL.\n\n**Input Parameters:**\n- `videoUrl` (string): The Loom video URL (e.g., https://www.loom.com/share/123456)\n\n**Output:**\n- The transcript text from the video\n\n**Example:**\n```\nHey Cursor, can you get the transcript from this Loom video? https://www.loom.com/share/98bd39050a3e40b8adbf3e6228b488eb\n```\n\n## Error Handling\n\nThe tool handles several potential errors:\n- Invalid Loom URL (unable to extract video ID)\n- Video not found or transcript not available\n- Network errors when fetching the transcript\n- Parsing errors with the VTT content\n\n## Implementation Details\n\nThe tool works in three steps:\n1. Extract the video ID from the Loom URL\n2. Make a GraphQL request to Loom's API to fetch the transcript/captions URL\n3. Fetch the VTT file from the URL and convert it to plain text ","readmeFilename":"README.md"}