Add production-ready HTTP server for remote access to yt-dlp-mcp tools using the official MCP Streamable HTTP transport protocol. Features: - MCP spec-compliant Streamable HTTP transport with SSE - API key authentication with timing-safe comparison - CORS configuration with credential handling - Rate limiting per session (60 req/min default) - Session management with automatic cleanup - Request size limits (4MB) and input validation - Health check endpoint - Graceful shutdown handling - Memory leak protection (1000 events/session max) New binary: - yt-dlp-mcp-http - HTTP server (separate from stdio server) Configuration via environment variables: - YTDLP_HTTP_PORT (default: 3000) - YTDLP_HTTP_HOST (default: 0.0.0.0) - YTDLP_API_KEY (recommended for production) - YTDLP_CORS_ORIGIN (default: *) - YTDLP_RATE_LIMIT (default: 60) - YTDLP_SESSION_TIMEOUT (default: 1 hour) Endpoints: - POST/GET/DELETE /mcp - MCP protocol endpoint - GET /health - Health check endpoint Documentation: - Comprehensive guide in docs/remote-server.md - Quick start, deployment examples, security best practices - Client configuration for Claude Desktop and Cline
65 lines
1.7 KiB
JSON
65 lines
1.7 KiB
JSON
{
|
|
"name": "@kevinwatt/yt-dlp-mcp",
|
|
"version": "0.7.0",
|
|
"description": "An MCP server implementation that integrates with yt-dlp, providing video and audio content download capabilities (e.g. YouTube, Facebook, Tiktok, etc.) for LLMs.",
|
|
"keywords": [
|
|
"mcp",
|
|
"youtube",
|
|
"yt-dlp",
|
|
"dive",
|
|
"llm"
|
|
],
|
|
"homepage": "https://github.com/kevinwatt/yt-dlp-mcp#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/kevinwatt/yt-dlp-mcp/issues"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/kevinwatt/yt-dlp-mcp.git"
|
|
},
|
|
"bin": {
|
|
"yt-dlp-mcp": "lib/index.mjs",
|
|
"yt-dlp-mcp-http": "lib/server-http.mjs"
|
|
},
|
|
"files": [
|
|
"lib",
|
|
"README.md"
|
|
],
|
|
"main": "./lib/index.mjs",
|
|
"scripts": {
|
|
"prepare": "tsc --skipLibCheck && chmod +x ./lib/index.mjs && chmod +x ./lib/server-http.mjs",
|
|
"test": "PYTHONPATH= PYTHONHOME= node --experimental-vm-modules node_modules/jest/bin/jest.js --detectOpenHandles --forceExit",
|
|
"start:http": "node lib/server-http.mjs",
|
|
"dev:http": "tsc --skipLibCheck && node lib/server-http.mjs"
|
|
},
|
|
"author": "Dewei Yen <k@funmula.com>",
|
|
"license": "MIT",
|
|
"type": "module",
|
|
"exports": {
|
|
".": {
|
|
"import": "./lib/index.mjs"
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"@modelcontextprotocol/sdk": "^1.20.1",
|
|
"cors": "^2.8.5",
|
|
"express": "^5.0.1",
|
|
"express-rate-limit": "^7.5.0",
|
|
"rimraf": "^6.0.1",
|
|
"spawn-rx": "^4.0.0",
|
|
"zod": "^4.1.12"
|
|
},
|
|
"devDependencies": {
|
|
"@jest/globals": "^29.7.0",
|
|
"@types/cors": "^2.8.17",
|
|
"@types/express": "^5.0.0",
|
|
"@types/jest": "^29.5.14",
|
|
"@types/node": "^22.10.5",
|
|
"jest": "^29.7.0",
|
|
"shx": "^0.3.4",
|
|
"ts-jest": "^29.2.5",
|
|
"ts-node": "^10.9.2",
|
|
"typescript": "^5.6.3"
|
|
}
|
|
}
|