mistral-slides-mcp
Stores generated Google Slides presentations in the authenticated user's Google Drive.
Creates Google Slides presentations from a topic, with configurable slide count, audience, and tone, and returns the presentation ID and URL.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mistral-slides-mcpMake a Google Slides deck about the benefits of remote work"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Slides
Create and edit Google Slides through chat in Vibe. Mistral generates the content and cover image; presentations are saved in your connected Google Drive.
Connect and use
Connector URL: https://mistral-slides-mcp-production.up.railway.app/mcp
In Vibe, add a Custom MCP Connector named Mistral Slides using the URL above.
Leave authentication on Auto-detect. No API key or custom authorization header is needed.
Connect, choose your approved Google account, and grant access.
Enable the connector in a chat and ask: “Create a 3-slide presentation about a weekend in Paris.”
Open the returned Google Slides link.
Access is limited to approved company Google accounts and invited personal accounts. If your account is denied, contact the operator for access.
Continue in the same chat:
“Make slide 2 less technical.”
“Add a slide about costs after slide 2.”
“Make this deck's titles dark blue and use Georgia.”
Attach an image and ask: “Add this image to slide 2.”
“Use cream backgrounds and Georgia by default for future presentations.”
Generation supports 1–6 total slides, including an image cover. Content layouts include key messages, bullets, comparisons, and numbered steps. Edits preserve the same presentation link. Your own images can be added or explicitly replaced on short key-message and bullet slides, with one image per slide.
This is a focused connector: arbitrary templates, slide removal/reordering, and converting existing layouts are unsupported. See the user guide for more examples and capabilities for precise limits.
Related MCP server: Google Workspace MCP Server
Set up your own instance
You need Python 3.12+, uv, a Mistral API key with access to the configured text
and image-generation models, and a Google Cloud project with a web OAuth client.
1. Install
git clone https://github.com/aamorel/mistral-slides-mcp.git
cd mistral-slides-mcp
uv sync --locked
cp .env.example .env2. Configure Google and the server
Enable the Google Slides API in your Google Cloud project. Configure the OAuth consent screen and create an OAuth client of type Web application with these scopes:
https://www.googleapis.com/auth/drive.fileopenidhttps://www.googleapis.com/auth/userinfo.email
Choose a public HTTPS origin for your server. For local development, forward a
public HTTPS tunnel to port 8000. Google must reach the server's temporary image
URLs to insert generated covers and attachments; localhost alone does not support
that full flow.
Fill in .env with your own values:
GOOGLE_CLIENT_ID=your-google-web-client-id
GOOGLE_CLIENT_SECRET=your-google-web-client-secret
MISTRAL_API_KEY=your-mistral-api-key
PUBLIC_BASE_URL=https://your-public-host
TOKEN_DB_PATH=.secrets/tokens.sqlite3
GOOGLE_ALLOWED_DOMAIN=
GOOGLE_ALLOWED_EMAILS=you@example.comPUBLIC_BASE_URL is the origin, without /mcp. Register
https://your-public-host/auth/google/callback as an authorized redirect URI in
your Google OAuth client. If the tunnel address changes, update both values.
Admission requires either a verified Google Workspace domain matching
GOOGLE_ALLOWED_DOMAIN or a verified email listed in GOOGLE_ALLOWED_EMAILS.
Replace the sample allowlists with your own; leaving both empty denies everyone.
If your Google OAuth app is in Testing, also add your account as a Google test user.
See authentication setup for consent-screen,
publishing, and troubleshooting details; substitute your own origin for the hosted
service's URLs.
3. Run and connect
uv run --env-file .env mcp-slidesThe server listens on port 8000 by default (PORT overrides it). Check
https://your-public-host/health, then add https://your-public-host/mcp to Vibe
and follow the connection steps above. Start authentication from the MCP client;
opening the Google callback directly does not start a valid connection.
4. Run tests
uv run python -m unittest discover -s tests -vTests mock Google and Mistral and cover tool behavior, OAuth, account isolation, usage limits, and safe presentation updates. The protocol test uses a temporary localhost port. CI runs the same suite. To check your own provider configuration, connect, create a deck, open its link, and revise a slide.
Deploy on Railway
Deploy the repository using railway.json, which starts
uv run mcp-slidesand checks/health.Attach a persistent volume at
/dataand setTOKEN_DB_PATH=/data/tokens.sqlite3.Set the variables from .env.example in Railway using your own credentials and allowlists. Set
PUBLIC_BASE_URLto your service's HTTPS origin.Register that origin's
/auth/google/callbackURL in your Google OAuth client and configure the homepage (/) and privacy-policy (/privacy) URLs.Keep one process/replica. Deploy, then connect to your service's
/mcpURL.
Pushing .env.example does not change Railway variables. Preserve the database
across deployments and restart after changing access rules to purge excluded
accounts' connections.
Pilot usage controls
All users share the operator's Mistral API key. Defaults allow 100 paid provider call attempts over the database's lifetime and two concurrent paid calls. These count calls, not presentations or currency; failures and validation retries count too. Reads, styling, and attachment placement do not use this allowance.
PILOT_MAX_PAID_CALLS: raise the lifetime ceiling to grant more usage.PILOT_MAX_CONCURRENT_CALLS: limit concurrent paid calls.PILOT_PAID_CALLS_ENABLED=false: pause new paid calls after restart/redeployment.
How it works
server.py exposes nine MCP tools. presentation_service.py coordinates creation:
Mistral produces validated content and a cover, then fixed layouts become Google
Slides API requests. Existing-deck operations read the current revision before
writing to avoid overwriting concurrent changes.
See architecture for the component diagram, workflows, storage model, and design tradeoffs.
Google credentials belong to each connection; there is no shared Drive account. They are stored unencrypted in the private SQLite volume, so protect access and backups. Source text goes to Mistral. Attached images are temporarily served for Google to fetch and are not sent to Mistral. Disconnecting does not delete presentations or revoke Google consent upstream.
If a write times out, check the returned presentation link or Google Drive before retrying: the operation may have completed. Google writes are not automatically replayed, and deck creation has no cross-request duplicate prevention.
Further documentation
Application code lives in src/mcp_slides/, with tests in tests/.
Development history and experiments live in docs/history/ and
scripts/investigation/; they are not required to run the connector.
This server cannot be deployed
Maintenance
Related MCP Connectors
Upload AI-written HTML presentations and manage expiring, revocable share links over OAuth.
Presentations.AI MCP server — create designed slide decks from a topic, text, or document.
Create polished slide decks from text or YouTube links in seconds. Fetch video transcripts to tran…
Generate, edit, and export AI presentations to PDF, PPTX, or a shareable link.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables interaction with Google Slides presentations through OAuth2 authentication. Supports creating new slides, adding rectangles, and managing presentation content through natural language commands.6-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control Google Workspace services (Slides, Sheets, Drive) through natural language.142ISC
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to create and update presentations via Slidev, with hosted slides that can be shared via a permanent URL.5-
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered slide deck creation using natural language, allowing users to generate, edit, and manage presentations through MCP clients like Cursor and Claude Code.13MIT