crepe-mcp
Provides academic paper search capabilities via Semantic Scholar API, allowing users to find and cite scholarly articles.
Provides tools for searching and reading Wikipedia articles, enabling access to encyclopedia content for research and presentation creation.
Click on "Install 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., "@crepe-mcpCreate a 5-slide presentation about machine learning basics"
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.
CREPE — Compile, Research, Export, Presentation Engine
An MCP server for Goose that turns an AI agent into a capable slide author: draft decks in Pandoc Markdown, compile to Beamer PDF or PowerPoint, validate visually with PNG exports, and pull in research from the web, Wikipedia and Semantic Scholar.
Tools (12 total)
Presentation (stateful)
Tool | Purpose |
| Start a new deck, set all metadata |
| Inspect metadata + slide list |
| Read a single slide's full content |
| Add or replace a slide (index < len → replace, else append) |
| Compile to PDF (Beamer/lualatex) or PPTX (pandoc) |
| Render compiled artifact to PNG sequence for validation |
| Delete a presentation's in-memory state and on-disk scratch dir |
Research & utilities
Tool | Purpose |
| Semantic Scholar (no key needed) |
| Tavily API web search |
| Wikipedia article search |
| Full Wikipedia article text |
| Extract text from any URL (headless browser or urllib) |
Related MCP server: agent-reader
Installation
# From PyPI (once published)
uv tool install crepe-mcp
# From source
git clone https://github.com/mariolpantunes/crepe-mcp
cd crepe-mcp
uv tool install .System requirements
pandoc — slide compilation
lualatex — PDF/Beamer output (
texlive-fullor MacTeX)pymupdf — PDF→PNG rendering (installed via pip, no system dep)
PPTX→PNG rendering — platform-dependent:
Linux: LibreOffice is required (native
soffice/libreofficeon PATH, or installed as a Flatpak —flatpak install flathub org.libreoffice.LibreOffice, auto-detected at runtime, no config needed). There is no fallback on Linux: aspose-slides' embedded .NET runtime dynamically loadslibssl.so.1.1, which distros that ship only OpenSSL 3 (Slackware, recent Arch, etc.) no longer have, and no newer aspose-slides release has moved off it. Without LibreOffice,render_slides_as_pngs(format="pptx") returns a clean error instead of a crash.macOS (and other platforms): LibreOffice is preferred if found (native binary or
/Applications/LibreOffice.app); otherwise falls back to aspose-slides (installed via pip — no OpenSSL 1.1 issue on macOS). Aspose is a commercial library; withoutCREPE_ASPOSE_LICENSE_PATHit runs in evaluation mode and watermarks output PNGs.
Environment variables
All variables are prefixed with CREPE_ to avoid collisions.
Variable | Required | Purpose |
| No | Enables |
| No | Path to Chromium-compatible browser for |
| No | Path to a |
| No | Path to Aspose |
macOS & Headless Browser Setup
To enable JavaScript-rendered webpage fetching via fetch_webpage on macOS, set CREPE_HEADLESS_BROWSER_PATH to any Chromium-based browser application path:
Google Chrome:
/Applications/Google Chrome.app/Contents/MacOS/Google ChromeBrave Browser:
/Applications/Brave Browser.app/Contents/MacOS/Brave BrowserMicrosoft Edge:
/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge
Note on Safari: Apple's native Safari (
safaridriver) does not support CLI--headlessmode for DOM dumping (--dump-dom). If you only have Safari installed or choose not to setCREPE_HEADLESS_BROWSER_PATH,fetch_webpageautomatically falls back to pure Pythonurllib+ HTML stripping, which works instantaneously for all static articles, documentation, and Wikipedia pages.
Goose integration
You can automate this entire configuration using our built-in interactive setup script:
# Auto-detect browsers/keys, export profile variables, and register in ~/.config/goose/config.yaml
./setup.py --install
# To remove and clean up later:
./setup.py --uninstallAlternatively, you can add crepe-mcp manually to ~/.config/goose/config.yaml using one of the options below.
Use envs (literal values), not env_keys. Goose resolves every env_keys
entry against its own keyring/secrets store — it does not fall back to a
plain shell environment variable of the same name. All of CREPE's env vars are
optional, and declaring one under env_keys without a matching Goose secret
makes the whole extension fail to start with Failed to fetch secret ... not found. Only fill in the values you actually need (all are optional; omit any
you don't use):
Option 1: Run directly from your local clone (Recommended for testing)
If you cloned the repository locally (e.g. to ~/git/crepe-mcp), you can tell Goose to execute it directly via uv run without installing it globally:
extensions:
crepe:
name: crepe
type: stdio
cmd: uv
args: ["--directory", "/home/username/git/crepe-mcp", "run", "crepe-mcp"]
envs:
CREPE_TAVILY_API_KEY: ""
CREPE_HEADLESS_BROWSER_PATH: ""
CREPE_ASPOSE_LICENSE_PATH: ""
CREPE_LIBREOFFICE_PATH: ""(Replace /home/username/git/crepe-mcp with your actual absolute path to the repository).
Option 2: Run as an installed tool (uv tool install .)
If you ran uv tool install . inside the project directory (or installed via pip), crepe-mcp is on your PATH:
extensions:
crepe:
name: crepe
type: stdio
cmd: crepe-mcp
args: []
envs:
CREPE_TAVILY_API_KEY: ""
CREPE_HEADLESS_BROWSER_PATH: ""
CREPE_ASPOSE_LICENSE_PATH: ""
CREPE_LIBREOFFICE_PATH: ""Option 3: Run ephemerally via uvx (Once published to PyPI)
If running directly from PyPI without local installation:
extensions:
crepe:
name: crepe
type: stdio
cmd: uvx
args: ["crepe-mcp"]
envs:
CREPE_TAVILY_API_KEY: ""
CREPE_HEADLESS_BROWSER_PATH: ""
CREPE_ASPOSE_LICENSE_PATH: ""
CREPE_LIBREOFFICE_PATH: ""Option 4: Add via Goose CLI (goose configure)
If you prefer Goose's interactive terminal setup instead of editing config.yaml:
Run
goose configurein your terminal.Select
Add Extension→Command-line Extension (stdio).For Name, enter:
crepeFor Command, enter either:
crepe-mcp(if installed globally)OR
uv --directory /path/to/crepe-mcp run crepe-mcp(for local repo)
When prompted for environment variables, add them as literal values (
CREPE_TAVILY_API_KEY, etc.) — all are optional, so only add the ones you use. Ifgoose configureonly offers a secrets/keyring option rather than a plain value, prefer editingconfig.yamldirectly (Options 1-3 above) to useenvsinstead.
Typical agent workflow
# Build a deck
create_presentation(title="My Talk", author="Ada Lovelace")
set_slide(id, 0, "Introduction", "- Point one\n- Point two")
set_slide(id, 1, "Results", "$$E=mc^2$$")
# Validate PDF layout
compile_presentation(id, "/tmp/deck.pdf", format="pdf")
render_slides_as_pngs(id, format="pdf") # → slide_001.png …
# Deliver as PPTX
compile_presentation(id, "/tmp/deck.pptx", format="pptx")
render_slides_as_pngs(id, format="pptx") # validate PPTX layoutPandoc slide syntax quick reference
Element | Syntax |
Section divider |
|
Bullet |
|
Incremental bullet |
|
Math block |
|
Code |
|
Image |
|
Speaker notes |
|
Two-column layout |
|
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mariolpantunes/crepe-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server