yt-dlp-mcp/package.json
yachi 8892f3df92
feat: Add Streamable HTTP remote server support (#4)
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
2025-10-19 18:17:15 +01:00

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"
}
}