Catalog npm
Back to packageRELEASE DETAILS

0.2.1

npm

2slides-mcp

MCP server exposing 2slides.com tools (slides generate, jobs get, themes search)

2slidesclaudemcpmodelcontextprotocolslides
Published21 Oct 2025
Direct dependencies8
Transitive dependenciesNot calculated

README

Current package documentation

2slides MCP Server

2slides

Expose 2slides.com tools to MCP clients: generate PowerPoint decks and custom-designed slides, add AI voice narration, and get the finished files back as download links.

Get Your API Key

Before connecting, get an API key from 2slides.com/api.

Connect

2slides runs a hosted Streamable HTTP MCP endpoint, and also ships this stdio package. Both expose the same 7 tools against the same account and the same credits.

Streamable HTTPstdio (this package)
Setupone command, nothing to installneeds Node.js 18+, npx fetches the package
Updatesserver-side, always currentre-downloaded on your machine
Runs inany remote-capable MCP clientany client that can spawn a local process

Anthropic's MCP docs call HTTP "the recommended option for connecting to remote MCP servers", and 2slides is a hosted service with no local files or processes to reach, so start here.

Claude Code

claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_2SLIDES_API_KEY"

Verify with claude mcp list — the server should report ✔ Connected.

Project config (.mcp.json, shared with your team)

{
  "mcpServers": {
    "2slides": {
      "type": "http",
      "url": "https://2slides.com/api/mcp?apikey=YOUR_2SLIDES_API_KEY"
    }
  }
}

Claude Desktop / claude.ai: add it as a custom connector at claude.ai/customize/connectors with the same URL.

Option 2 — stdio (local process)

Use this when the client can only spawn local processes, when the machine has no direct route to 2slides.com, or when you want to pin and patch the server yourself.

Claude Code

claude mcp add 2slides -e API_KEY=YOUR_2SLIDES_API_KEY -- npx -y 2slides-mcp@latest

Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json (%APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "2slides": {
      "command": "npx",
      "args": ["-y", "2slides-mcp@latest"],
      "env": {
        "API_KEY": "YOUR_2SLIDES_API_KEY"
      }
    }
  }
}

The -y flag lets npx install the package without prompting. Fully restart Claude Desktop afterwards; in a chat, open the tools panel and you should see the tools below.

Available Tools


slides_generate (POST /api/v1/slides/generate)

Generate a PowerPoint presentation using a pre-built theme (Fast PPT). Use themes_search first to find a themeId.

  • Args:
    • userInput (string, required) — presentation content
    • themeId (string, required) — theme ID from themes_search
    • responseLanguage (string, optional, default: Auto) — output language; supported values: Auto, English, Spanish, Arabic, Portuguese, Indonesian, Japanese, Russian, Hindi, French, German, Greek, Vietnamese, Turkish, Thai, Polish, Italian, Korean, Simplified Chinese, Traditional Chinese
    • mode (optional, default: sync) — sync returns downloadUrl immediately; async returns a jobId to poll with jobs_get
  • Credits: 1 per page
  • Example:
    {
      "themeId": "st-1756528793701-fcg5fblt2",
      "userInput": "Generate a 5-slide intro to machine learning",
      "responseLanguage": "English",
      "mode": "sync"
    }
    

themes_search (GET /api/v1/themes/search)

Search pre-built themes to use with slides_generate.

  • Args:
    • query (string, required) — search keyword (e.g. business, minimal, dark)
    • limit (number, optional, default: 10, range: 1–100)
  • Returns: array of themes with id, name, description, previewUrl, tags
  • Credits: free
  • Example:
    { "query": "business", "limit": 5 }
    

jobs_get (GET /api/v1/jobs/{jobId})

Poll a job's status and retrieve the result when ready.

  • Args:
    • jobId (string, required)
  • Returns: jobId, status (pending / processing / success / failed), message, downloadUrl (when success), slidePageCount, createdAt, updatedAt, duration (ms), jobUrl (Nano Banana jobs only)
  • Credits: free
  • Note: Poll every 20 seconds until status is success or failed.
  • Example:
    { "jobId": "D8h9VYDGdTlZ6wWSEoctF" }
    

slides_create_like_this (POST /api/v1/slides/create-like-this)

Generate slides (Nano Banana) that match the style of a reference image.

  • Args:
    • userInput (string, required) — presentation content
    • referenceImageUrl (string, required) — URL of the style reference image
    • responseLanguage (string, optional, default: Auto)
    • aspectRatio (string, optional, default: 16:9) — valid values: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
    • resolution (string, optional, default: 2K) — 1K, 2K, 4K
    • page (number, optional, default: 0) — 0 = auto-detect, 1–100 = exact page count
    • contentDetail (string, optional, default: standard) — concise or standard
    • mode (string, optional, default: async) — async returns jobId; sync returns downloadUrl immediately
  • Credits: 100 per page (1K/2K) or 200 per page (4K)
  • Example:
    {
      "userInput": "Create a presentation about AI trends",
      "referenceImageUrl": "https://example.com/style-reference.jpg",
      "aspectRatio": "16:9",
      "resolution": "2K",
      "page": 5,
      "contentDetail": "standard",
      "mode": "async"
    }
    

slides_create_pdf_slides (POST /api/v1/slides/create-pdf-slides)

Generate custom-designed slides (Nano Banana) from text content without a reference image.

  • Args:
    • userInput (string, required) — presentation content
    • designStyle (string, optional) — free-text description of the visual style; leave empty for default styling
    • responseLanguage (string, optional, default: Auto)
    • aspectRatio (string, optional, default: 16:9) — valid values: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
    • resolution (string, optional, default: 2K) — 1K, 2K, 4K
    • page (number, optional, default: 0) — 0 = auto-detect, 1–100 = exact page count
    • contentDetail (string, optional, default: standard) — concise or standard
    • mode (string, optional, default: async) — async returns jobId; sync returns downloadUrl immediately
  • Credits: 100 per page (1K/2K) or 200 per page (4K)
  • Example:
    {
      "userInput": "Quarterly business review for Q3 2025",
      "designStyle": "modern, dark background, bold typography",
      "aspectRatio": "16:9",
      "resolution": "2K",
      "page": 8,
      "mode": "async"
    }
    

slides_generate_narration (POST /api/v1/slides/generate-narration)

Add AI voice narration to a completed Nano Banana job (slides_create_like_this or slides_create_pdf_slides only; Fast PPT not supported). Always async — poll result with jobs_get.

  • Args (single speaker, mode: "single" default):

    • jobId (string, required) — UUID of a completed Nano Banana job
    • mode (string, optional, default: single) — single or multi
    • speakerName (string, optional) — narrator name
    • voice (string, optional) — one of 30 voices (see list below)
    • contentMode (string, optional, default: standard) — concise or standard
    • includeIntro (boolean, optional, default: true)
  • Args (two speakers, mode: "multi"):

    • jobId (string, required)
    • mode (string, required) — multi
    • speaker1Name (string, required)
    • speaker2Name (string, required)
    • speaker1Voice (string, optional) — voice for speaker 1
    • speaker2Voice (string, optional) — voice for speaker 2
    • contentMode (string, optional, default: standard) — concise or standard
  • Supported voices (30): Puck, Aoede, Charon, Kore, Fenrir, Zephyr, Leda, Orus, Callirrhoe, Autonoe, Enceladus, Iapetus, Umbriel, Algieba, Despina, Erinome, Algenib, Rasalgethi, Laomedeia, Achernar, Alnilam, Schedar, Gacrux, Pulcherrima, Achird, Zubenelgenubi, Vindemiatrix, Sadachbia, Sadaltager, Sulafat

  • Credits: 210 per page (10 text + 200 audio)

  • Example:

    {
      "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "mode": "multi",
      "speaker1Name": "Alice",
      "speaker2Name": "Bob",
      "speaker1Voice": "Aoede",
      "speaker2Voice": "Puck",
      "contentMode": "standard"
    }
    

slides_download_slides_pages_voices (POST /api/v1/slides/download-slides-pages-voices)

Export slide pages and audio narration as a ZIP file. The job must be completed and have narration generated.

  • Args:
    • jobId (string, required) — UUID of a job with completed narration
  • Returns: downloadUrl (expires in 1 hour), fileName, expiresIn (3600 seconds)
  • ZIP contents:
    pages/
      page_01.png, page_02.png, …
    voices/
      page_01.wav, page_02.wav, …
    transcript.txt
    
  • Credits: free
  • Example:
    { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }
    

Typical Workflows

Fast PPT (theme-based PowerPoint):

  1. themes_search → get a themeId
  2. slides_generate (sync) → get downloadUrl directly

Nano Banana (custom-designed slides):

  1. slides_create_like_this or slides_create_pdf_slides (async) → get jobId
  2. jobs_get (poll every 20s) → get downloadUrl when status: "success"

Nano Banana with narration:

  1. slides_create_like_this or slides_create_pdf_slides → get jobId
  2. jobs_get → wait for slides to complete
  3. slides_generate_narration → get narration jobId
  4. jobs_get → wait for narration to complete
  5. slides_download_slides_pages_voices → get ZIP download link

Troubleshooting (Claude Desktop)

  • If tools don't appear in Claude, verify the config path is absolute and restart the app.
  • Check Claude MCP logs:
tail -n 50 -f ~/Library/Logs/Claude/mcp*.log
  • For stdio MCP servers, avoid logging to stdout; this server only logs errors to stderr.

References

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 8

Native requirements
8 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
zod
Environment
{
  "local_name": "zod",
  "alias": false,
  "peer_metadata": null
}
^3.25.76runtime
dotenv
Environment
{
  "local_name": "dotenv",
  "alias": false,
  "peer_metadata": null
}
^17.2.2runtime
node-fetch
Environment
{
  "local_name": "node-fetch",
  "alias": false,
  "peer_metadata": null
}
^3.3.2runtime
@types/dotenv
Environment
{
  "local_name": "@types/dotenv",
  "alias": false,
  "peer_metadata": null
}
^6.1.1runtime
@modelcontextprotocol/sdk
Environment
{
  "local_name": "@modelcontextprotocol/sdk",
  "alias": false,
  "peer_metadata": null
}
^1.18.1runtime
tsx
Environment
{
  "local_name": "tsx",
  "alias": false,
  "peer_metadata": null
}
^4.20.5development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^5.9.2development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^24.5.2development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "1ba333f41842825a7c9ca74cffa1bdd6d1e98f77",
  "tarball": "https://registry.npmjs.org/2slides-mcp/-/2slides-mcp-0.2.1.tgz",
  "fileCount": 11,
  "integrity": "sha512-T8nnegf25JrS5TEmqnx3NTXeRnLxMm3ovXnzXD8mjM1XDs8SESSJH+z/nIC9tPQVOUBvNGRdAy2h6nvb6d4NnA==",
  "signatures": [
    {
      "sig": "MEUCIQDB3YO3ip1d0ZLF8i2bFL9yTeEwV41X6iIJjVil/XCMiAIgCqetvJhgez38W54ab6AOFXFrJ9RB2p/Rk6GQdYf44zk=",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    }
  ],
  "unpackedSize": 13122
}

Repository

PENDING
2slides/2slides-mcp

Shared repository data · GitHub

License detected in repository
Not collected

Repository

ACCESSIBLE
2slides/mcp-2slides

Shared repository data · GitHub

License detected in repository
MIT
License branch / ref
main
Last push
1 Sept 2026
Archived
No
Contributor identities
— · partial collection

Public sponsor counts have not been collected. These signals belong to the repository owner.

Downloads & popularity

14count
Gauge · observed snapshots24 Oct 2026
1470
2026-10-24: 14 · observed 2026-10-24T10:52:29.8759008Z
24 Oct24 Oct

github · 1 observations shown. Missing days are unknown.

View observed values
Date / source periodValueObserved at
2026-10-24142026-10-24T10:52:29.8759008Z

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:18 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:bc5b6c3a13d8832cd1fa9d051697f28cd7b86878a03faf85ce3d914a00f6fa91

Other collected versions

0.2.51 Sept0.2.420 Feb0.2.31 Jan0.2.013 Oct0.1.213 Oct0.1.123 SeptView all collected versions →