{"_id":"@alxpark/propresenter-mcp","_rev":"2-eff263b4abe27f070eced79fd58133ff","name":"@alxpark/propresenter-mcp","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@alxpark/propresenter-mcp","version":"1.0.0","keywords":["mcp","propresenter","presentation","api"],"author":"","license":"MIT","_id":"@alxpark/propresenter-mcp@1.0.0","maintainers":[{"name":"alxpark","email":"axsprk@gmail.com"}],"homepage":"https://github.com/alxpark/propresenter-mcp#readme","bugs":{"url":"https://github.com/alxpark/propresenter-mcp/issues"},"bin":{"propresenter-mcp":"build/index.js"},"dist":{"shasum":"0786f3b8f8d5333e1b99543f203b9be33267ae67","tarball":"https://registry.npmjs.org/@alxpark/propresenter-mcp/-/propresenter-mcp-1.0.0.tgz","fileCount":174,"integrity":"sha512-QQZD882fSR/ZccURVxt20glNv3B1WxsjIVG8y+w+YPvh7XerttKJzi1SgXQ6JOG+RMGUhql5KQlfLM7k18VmIw==","signatures":[{"sig":"MEUCIQDp33qyDP83TCK+jcl6Y5SyoTKjaGjjS1BQDa+VnqdCpwIgFnK9qAz5CGk/F1hQKRTUq9WsS65EDEvtR4z126PHOwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":694671},"main":"build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"1cf300aff02c004a9a44738f6725104bfc548888","mcpName":"io.github.alxpark/propresenter","scripts":{"build":"tsc","watch":"tsc --watch","prepare":"npm run build"},"_npmUser":{"name":"alxpark","email":"axsprk@gmail.com"},"repository":{"url":"git+https://github.com/alxpark/propresenter-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"ProPresenter 7 MCP server","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.3","@types/node":"^22.10.5"},"_npmOperationalInternal":{"tmp":"tmp/propresenter-mcp_1.0.0_1769837547002_0.3969673715333215","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alxpark/propresenter-mcp","version":"1.0.1","mcpName":"io.github.alxpark/propresenter-mcp","description":"ProPresenter 7 MCP server","type":"module","main":"build/index.js","scripts":{"build":"tsc","watch":"tsc --watch","prepare":"npm run build"},"keywords":["mcp","propresenter","presentation","api"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/alxpark/propresenter-mcp.git"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.4"},"devDependencies":{"@types/node":"^22.10.5","typescript":"^5.7.3"},"bin":{"propresenter-mcp":"build/index.js"},"gitHead":"57fed45741d5d6349979729f85ba6328099b5c9a","types":"./build/index.d.ts","_id":"@alxpark/propresenter-mcp@1.0.1","bugs":{"url":"https://github.com/alxpark/propresenter-mcp/issues"},"homepage":"https://github.com/alxpark/propresenter-mcp#readme","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Th/HN12mw1rHVv1zoe+nfgKLBHzCi11mFxCONCgvX6TifJJpuRYfhjTAAgxIE8OZ3zs9vRpv2mdu2SslAhwahQ==","shasum":"72d8010643bd0a5d7f909b387a9d192468143399","tarball":"https://registry.npmjs.org/@alxpark/propresenter-mcp/-/propresenter-mcp-1.0.1.tgz","fileCount":175,"unpackedSize":695640,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDKgqE9GEnUpjraK4Rk0yNhpBP80/b7u7DXDa7BOnsoQAIhAOwOACl/e0qMdHK2Hk+Kcy9s5tBgZ7s39u6aI6pzTTvD"}]},"_npmUser":{"name":"alxpark","email":"axsprk@gmail.com"},"directories":{},"maintainers":[{"name":"alxpark","email":"axsprk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/propresenter-mcp_1.0.1_1769838607690_0.14991730465942377"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-31T05:32:26.942Z","modified":"2026-01-31T05:50:07.990Z","1.0.0":"2026-01-31T05:32:27.196Z","1.0.1":"2026-01-31T05:50:07.883Z"},"bugs":{"url":"https://github.com/alxpark/propresenter-mcp/issues"},"license":"MIT","homepage":"https://github.com/alxpark/propresenter-mcp#readme","keywords":["mcp","propresenter","presentation","api"],"repository":{"type":"git","url":"git+https://github.com/alxpark/propresenter-mcp.git"},"description":"ProPresenter 7 MCP server","maintainers":[{"name":"alxpark","email":"axsprk@gmail.com"}],"readme":"# propresenter-mcp\n\nA comprehensive Model Context Protocol (MCP) server that provides complete control over ProPresenter presentations via the ProPresenter API. This server implements the full ProPresenter API specification with **231 endpoints** organized into **27 API groups** and exposed through modular client classes.\n\n## Features\n\nThis MCP server provides complete coverage of the ProPresenter API across all major control surfaces:\n\n### 📊 Status & System\n- Get ProPresenter version and build information (/version)\n- Get/set audience and stage screen status (/v1/status)\n- Get layer status information\n- Get slide/cue information\n- Aggregate status updates from multiple endpoints\n\n### 🎬 Presentation Controls\n- **31 endpoints** for complete presentation control\n- Get focused/active presentations\n- Get current slide index and chord charts\n- Focus and trigger presentations\n- Navigate through slides (next, previous, by index)\n- Timeline operations (play, pause, rewind)\n- Group-based triggering\n- Thumbnail generation for any slide\n\n### 📢 Announcement Controls\n- **9 endpoints** for announcement management\n- Get active announcements and slide index\n- Focus and trigger announcements\n- Navigate through announcement cues\n- Timeline operations for announcements\n\n### 🎵 Audio & Media Playlists\n- **21 audio endpoints** + **22 media endpoints**\n- List and manage playlists\n- Get playlist contents with pagination\n- Focus playlists (next, previous, specific, active)\n- Trigger playlists and individual items\n- Real-time playlist updates\n- Navigate through playlist items\n\n### 📋 Presentation Playlists\n- **30 endpoints** for playlist management\n- Complete CRUD operations for playlists\n- Focus management (active, focused, next, previous)\n- Separate presentation/announcement destinations\n- Trigger items by index\n- Thumbnail generation\n- Real-time playlist change updates\n\n### 📹 Capture Controls\n- **4 endpoints** for recording control\n- Get capture status and time\n- Start/stop capture operations\n- Get capture settings\n- Get available capture encodings (disk, RTMP, Resi)\n\n### 🧹 Clear Controls\n- **9 endpoints** for clearing layers\n- Clear specific layers (audio, props, messages, announcements, slide, media, video_input)\n- Full CRUD operations for clear groups\n- Custom group icons\n- Trigger clear groups\n\n### 📚 Library Controls\n- **4 endpoints** for library access\n- List all configured libraries\n- Get library contents\n- Trigger presentations from libraries\n- Trigger specific cues in library presentations\n\n### 👁️ Looks\n- **8 endpoints** for audience screen control\n- List all configured looks\n- Get/set current live look\n- Full CRUD operations for looks\n- Trigger looks to make them live\n\n### ⚙️ Macros\n- **12 endpoints** for macro automation\n- List all configured macros\n- Full CRUD for macros and macro collections\n- Custom macro icons\n- Trigger macros\n\n### 🎭 Props\n- **14 endpoints** for prop management\n- Full CRUD for props and prop collections\n- Trigger and clear props\n- Auto-clear timer control (pause/resume)\n- Prop thumbnails\n\n### 📱 Stage Displays\n- **11 endpoints** for stage screen control\n- Show/hide stage messages\n- Get/set stage layout maps\n- Manage stage screens and layouts\n- Layout thumbnails\n\n### 💬 Messages\n- **7 endpoints** for message control\n- Full CRUD operations for messages\n- Show/hide messages with token support\n- Clear all messages\n\n### ⏱️ Timers\n- **12 endpoints** for timer management\n- Full CRUD operations for timers\n- Start/stop/reset operations\n- Get system time and video countdown\n- Increment timer values\n- Get all timer states\n\n### 🎨 Themes\n- **5 endpoints** for theme management\n- List all themes and theme slides\n- Get/set theme slide details\n- Theme slide thumbnails\n\n### 🎭 Masks\n- **3 endpoints** for mask control\n- List all configured masks\n- Get mask details\n- Mask thumbnails\n\n### 🎮 Transport Controls\n- **10 endpoints** for media transport\n- Play/pause controls for presentation, announcement, and audio layers\n- Skip forward/backward by time\n- Get/set playback time\n- Go to end\n- Auto-advance control\n\n### 🔧 Global Groups\n- **1 endpoint** for global group management\n- List all configured global groups\n\n### 🎯 Trigger Controls\n- **6 endpoints** for quick triggering\n- Trigger next/previous for audio and media\n- Universal next/previous for active content\n\n### 📹 Video Inputs\n- **2 endpoints** for video input control\n- List video inputs playlist\n- Trigger video inputs\n\nEach module follows a consistent three-layer architecture:\n- **Clients**: API call wrappers with type-safe methods\n- **Tools**: MCP tool definitions with JSON schemas\n- **Handlers**: Request processors that map tool calls to client methods\n\nAll client modules include comment headers referencing API group numbers for easy cross-reference with `api/api.md`.\n\n## Prerequisites\n\n- Node.js 18 or higher\n- ProPresenter 7 with API enabled\n- ProPresenter running and accessible on your network\n\n## Installation\n\n1. Clone this repository or download the source code\n\n2. Install dependencies:\n```bash\nnpm install\n```\n\n3. Build the project:\n```bash\nnpm run build\n```\n\n## Configuration\n\nThe server connects to ProPresenter using environment variables:\n\n- `PROPRESENTER_URL` - The URL of your ProPresenter instance (default: `http://localhost:50000`)\n- `PROPRESENTER_PASSWORD` - The API password (if configured in ProPresenter)\n\n### ProPresenter Setup\n\n1. Open ProPresenter preferences\n2. Go to the Network tab\n3. Enable \"Network\" and note the port number (default: 50000)\n4. Optionally set a password for API access\n\n## Usage\n\n### With Claude Desktop\n\nAdd this to your Claude Desktop configuration file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"propresenter\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/propresenter-mcp/build/index.js\"],\n      \"env\": {\n        \"PROPRESENTER_URL\": \"http://localhost:50000\",\n        \"PROPRESENTER_PASSWORD\": \"your-password-if-needed\"\n      }\n    }\n  }\n}\n```\n\nReplace `/absolute/path/to/propresenter-mcp` with the actual path to this project.\n\n### With VS Code\n\nThis server can be debugged directly in VS Code using the included MCP configuration.\n\n1. Open this project in VS Code\n2. The server is automatically configured for debugging via `.vscode/mcp.json`\n3. Use the MCP extension to test and debug the server\n\n## Example Commands\n\nOnce connected, you can ask Claude to control ProPresenter:\n\n**Status & Information:**\n- \"What version of ProPresenter is running?\"\n- \"Show me the status of all screens\"\n- \"What's the status of audience screens?\"\n- \"Get the current slide information\"\n\n**Presentations:**\n- \"What presentation is currently active?\"\n- \"Trigger the presentation with UUID [uuid]\"\n- \"Go to the next slide\"\n- \"Go to slide number 5\"\n- \"Play the presentation timeline\"\n- \"Show me the chord chart\"\n- \"Get a thumbnail of slide 3\"\n\n**Announcements:**\n- \"What announcement is currently active?\"\n- \"Trigger the next announcement cue\"\n- \"Show me the announcement timeline status\"\n- \"Go to announcement cue 2\"\n\n**Audio & Media:**\n- \"List all audio playlists\"\n- \"Show me the contents of audio playlist [id]\"\n- \"Play the next song in the active playlist\"\n- \"Trigger the focused audio playlist\"\n- \"List all media playlists\"\n- \"Trigger media item [id] in playlist [playlist_id]\"\n\n**Playlists:**\n- \"List all presentation playlists\"\n- \"Show me the active playlist\"\n- \"Focus the next playlist\"\n- \"Trigger the first item in the focused playlist\"\n- \"Create a new playlist called 'Sunday Service'\"\n\n**Capture:**\n- \"What's the current capture status?\"\n- \"Start recording\"\n- \"Stop the capture\"\n- \"Show me available capture encodings for RTMP\"\n\n**Clear:**\n- \"Clear the announcements layer\"\n- \"Show me all clear groups\"\n- \"Trigger the clear group [id]\"\n- \"Create a new clear group\"\n\n**Library:**\n- \"List all my libraries\"\n- \"Show presentations in library [id]\"\n- \"Trigger presentation [id] from library [library_id]\"\n\n**Looks:**\n- \"Show me all configured looks\"\n- \"What look is currently live?\"\n- \"Switch to look [id]\"\n- \"Create a new look\"\n\n**Macros:**\n- \"List all macros\"\n- \"Trigger macro [id]\"\n- \"Show me all macro collections\"\n- \"Create a new macro\"\n\n**Props:**\n- \"List all props\"\n- \"Trigger prop [id]\"\n- \"Clear prop [id]\"\n- \"Pause auto-clear for prop [id]\"\n- \"List all prop collections\"\n\n**Stage:**\n- \"Show me the current stage message\"\n- \"Display stage message [message]\"\n- \"Hide the stage message\"\n- \"List all stage layouts\"\n- \"Set stage layout [layout_id] for screen [screen_id]\"\n\n**Messages:**\n- \"Show me all messages\"\n- \"Display message [id]\"\n- \"Hide message [id]\"\n- \"Create a new message\"\n\n**Timers:**\n- \"List all timers\"\n- \"Start timer [id]\"\n- \"Stop timer [id]\"\n- \"Reset the sermon timer\"\n- \"Create a countdown timer\"\n- \"Get the current system time\"\n\n**Themes:**\n- \"List all themes\"\n- \"Show me details of theme [id]\"\n- \"Get theme slide [slide_id] from theme [theme_id]\"\n\n**Transport:**\n- \"Play the presentation layer\"\n- \"Pause the audio layer\"\n- \"Skip forward 30 seconds on the announcement layer\"\n- \"Go to the end of the presentation\"\n- \"Get the current playback time\"\n\n**Masks:**\n- \"List all masks\"\n- \"Show me details of mask [id]\"\n\n**Triggers:**\n- \"Trigger the next cue\"\n- \"Trigger the previous media item\"\n\n## Development\n\n### Build\n```bash\nnpm run build\n```\n\n### Watch Mode\n```bash\nnpm run watch\n```\n\n## API Reference\n\nThis server implements the complete ProPresenter API documented at https://openapi.propresenter.com/\n\n### API Coverage\n\n- **Total Endpoints**: 231 REST API endpoints\n- **API Groups**: 27 functional groups\n- **Client Modules**: 18 TypeScript client classes\n- **Tool Definitions**: 18 MCP tool modules\n- **Handler Modules**: 18 request handler modules\n- **HTTP Methods**: Full support for GET, POST, PUT, DELETE operations\n- **Architecture**: Complete three-layer implementation (clients → tools → handlers)\n\nSee `api/api.md` for complete API documentation with all 231 endpoints organized by group.\n\n### API Groups Reference\n\n| Group | Path | Client Module | Endpoints |\n|-------|------|---------------|-----------|\n| 1 | /v1/announcement | AnnouncementClient | 9 |\n| 2 | /v1/audio | AudioClient | 21 |\n| 3 | /v1/capture | CaptureClient | 4 |\n| 4 | /v1/clear | ClearClient | 9 |\n| 6 | /v1/group | GlobalGroupsClient | 1 |\n| 7 | /v1/library | LibraryClient | 4 |\n| 8 | /v1/look | LooksClient | 8 |\n| 9-11 | /v1/macro* | MacrosClient | 12 |\n| 12 | /v1/mask | MasksClient | 3 |\n| 14 | /v1/message | MessagesClient | 7 |\n| 15 | /v1/playlist | PlaylistsClient | 30 |\n| 16 | /v1/presentation | PresentationClient | 31 |\n| 17-19 | /v1/prop* | PropsClient | 14 |\n| 20 | /v1/stage | StageClient | 11 |\n| 21 | /v1/status | StatusClient | 8 |\n| 22 | /v1/theme | ThemesClient | 5 |\n| 23 | /v1/timer | TimersClient | 12 |\n| 24 | /v1/transport | TransportClient | 10 |\n| 27 | /version | StatusClient | 1 |\n\n*Groups 9-11 include /v1/macro, /v1/macro_collection, and /v1/macros  \n*Groups 17-19 include /v1/prop, /v1/prop_collection, and /v1/props\n\n## Troubleshooting\n\n**Connection Issues:**\n- Verify ProPresenter is running and the API is enabled\n- Check that the URL and port are correct\n- Ensure no firewall is blocking the connection\n- Verify the password if authentication is enabled\n\n**Server Not Starting:**\n- Make sure you've built the project with `npm run build`\n- Check that Node.js 18+ is installed\n- Verify all dependencies are installed with `npm install`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}