LectureForge MCP
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., "@LectureForge MCPCreate a 10-slide presentation on renewable energy for university students."
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.
LectureForge MCP
LectureForge lets any MCP-compatible LLM create, validate, revise, and export editable PowerPoint presentations. The connected LLM writes the content; LectureForge renders the .pptx.
Use it locally with Docker
Clone and build the image:
git clone https://github.com/WaniAnimesh/prompt-2-ppt-MCP.git
Set-Location prompt-2-ppt-MCP
docker build --file Dockerfile.mcp --tag lectureforge-mcp:0.3.1 .Create a permanent data directory:
New-Item -ItemType Directory -Force C:\absolute\path\to\lectureforge-dataAdd this server to your MCP client's configuration. Replace the example data path with its absolute path:
{
"mcpServers": {
"lectureforge": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "C:\\absolute\\path\\to\\lectureforge-data:/data",
"lectureforge-mcp:0.3.1",
"python", "-m", "compiler.app.mcp_server",
"--data-dir", "/data"
]
}
}
}Restart the MCP client and confirm that
lectureforgeis connected.Ask the LLM:
Create a 10-slide presentation about renewable energy for university students. Use LectureForge, validate it, render it, and return the PowerPoint artifact.Open the returned PowerPoint artifact. Files are also saved inside the data directory from step 2.
For a hosted installation, deploy the image using the remote deployment guide, then add its HTTPS /mcp URL as a custom MCP connector.
Available Tools
7 toolsget_artifactC
Get safe metadata and resource/file URIs for one generated artifact.
Artifact choices are powerpoint, source_bundle, presentation_ir, manifest, validation, and python_source.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | latest | |
| artifact | Yes | ||
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only lookup via 'safe metadata' but never states that nothing is mutated, nor does it cover auth requirements, availability of a missing artifact, or the 'latest' default resolution behavior. With zero annotation coverage this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the core purpose leads and the enumeration supports it. The list formatting is slightly awkward but costs nothing in comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value shape need not be described. For a 3-parameter lookup tool this is roughly adequate, but the absence of annotations plus undocumented project_id/version semantics leaves gaps an agent may hit when constructing a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so well for the critical 'artifact' parameter by enumerating the six valid choices, which the schema lacks as an enum, but it says nothing about project_id or the version parameter (including how 'latest' is resolved).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get safe metadata and resource/file URIs for one generated artifact') and enumerates the artifact kinds, so an agent knows exactly what comes back. It does not, however, differentiate itself from siblings like get_presentation_ir or list_versions, leaving the boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no named alternative, even though get_presentation_ir and list_versions are plausible competing entry points. The artifact enumeration implies the tool is the entry point for any artifact type, but that is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_irC
Read the canonical Presentation IR for a project version or the latest version.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | latest | |
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. The word 'Read' implies a safe read-only operation, but there is no disclosure of auth requirements, failure behavior for missing projects/versions, or rate limits. Thin for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is appropriately sized for a simple read tool, though brevity here partly reflects omission of useful detail rather than editorial tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with 0% parameter schema coverage and no annotations the description leaves key semantics undocumented. For a lookup tool with two params, it should do more to orient the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only alludes to the version parameter via 'a project version or the latest version'. It adds no format, acceptable values, or meaning for project_id beyond what the parameter names already convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read), a specific resource (the canonical Presentation IR), and the scoping (project version or latest). An agent can grasp what it returns, though it does not distinguish itself from the sibling get_artifact, which could plausibly also return IR-like content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus siblings like get_artifact or get_project, and no prerequisites or exclusions. The 'version or latest' phrasing only hints at a parameter choice, not at when this tool is the right one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectB
Get one project's current state, immutable versions, and artifact references.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the returned content surfaces (current state, immutable versions, artifact references), which usefully signals this is a composite read. It says nothing about permissions, error behavior, or whether the read is safe/non-mutating beyond the verb 'Get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the verb, the target, and the returned scope with no filler. It is efficiently sized, though the enumerated payload list is doing double duty since an output schema already exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not strictly required, yet the description still needs to cover the read-only nature and identity of the target given the absence of annotations. It does the former implicitly via 'Get' but leaves permissions and error cases unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single project_id parameter has 0% schema description coverage, so the description must compensate. The phrase 'one project's' implies that an identifier selects the target, but no format, source, or example for project_id is given, leaving the semantics largely assumed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('one project') and enumerates the payload scope (current state, immutable versions, artifact references). It does not, however, distinguish itself from siblings like get_artifact or list_versions, which overlap on the version/artifact content it advertises.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as list_projects for enumeration or get_artifact when only an artifact is needed. The singular 'one project' faintly implies a single-ID lookup, but this is inference rather than stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List locally rendered presentation projects, most recently updated first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden, and it does add one useful behavioral trait: results are ordered most-recently-updated first. However, it says nothing about pagination, result limits, permissions, or whether 'locally rendered' implies only a subset of projects is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and the ordering constraint front-loaded. Every word earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument read-only listing tool with an output schema that already defines return values, describing the resource and sort order is largely sufficient. It could still note result limits or whether the list is workspace-scoped, but nothing essential for invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document and the baseline of 4 applies. The description correctly adds no misleading parameter claims.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List') and resource ('locally rendered presentation projects'), and the singular sibling get_project contrasts reasonably well with this plural listing tool. It is clear about what it returns but does not explicitly name or distinguish itself from siblings like list_versions or get_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_project, list_versions, or get_presentation_ir. The phrase 'locally rendered' hints at scope, but no prerequisites, conditions, or alternatives are stated, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsC
List all successfully rendered versions of a presentation project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose one useful trait — only *successfully rendered* versions are returned, implying failed renders are excluded — but says nothing about ordering, pagination, result limits, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One well-formed sentence with the resource and scope front-loaded and no wasted words. It is appropriately terse for a simple list operation, though it borders on under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and this is a simple one-parameter read. However, the missing parameter documentation, absent usage guidance, and lack of pagination/ordering behavior leave the definition only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter, so the description must compensate. The phrase 'of a presentation project' only loosely ties project_id to a project, adding no format, source, or validation semantics for the identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb ('List') and resource ('successfully rendered versions of a presentation project'), so the operation is unambiguous. It stops short of differentiating itself from siblings like get_artifact or get_presentation_ir, which also retrieve presentation artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus get_artifact, get_presentation_ir, or render_presentation, nor any stated prerequisites. The agent must infer the selection criteria from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_presentationA
Render complete Presentation IR into an editable PPTX and source bundle.
Omit project_id for a new project. For a revision, pass the existing project_id and its current version as expected_base_version. Each successful call creates a new immutable version; it never overwrites an earlier deck.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | ||
| presentation | Yes | ||
| expected_base_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose the key trait: every successful call produces a new immutable version and never overwrites an earlier deck. It omits auth requirements, what happens on a base-version mismatch, and any rate/performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the operation and its outputs before the parameter-mode guidance. No filler and every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the versioning model is well covered. What remains thin is the expected shape of the nested 'presentation' object and the failure path when expected_base_version does not match.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it usefully explains project_id (omit for a new project) and expected_base_version (the current version for revisions). The third parameter, the nested 'presentation' IR payload, is left entirely undefined, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Render'), the precise input ('complete Presentation IR'), and both outputs ('editable PPTX and source bundle'). That output profile cleanly separates it from siblings like validate_presentation and get_presentation_ir without the agent opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly covers the two operating modes: omit project_id for a new project, or pass project_id plus expected_base_version for a revision. It does not mention alternatives or prerequisites (e.g., validate first), so it stops short of the full when/when-not/alternatives bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_presentationA
Validate complete Presentation IR without writing files.
Call this before render_presentation. Set include_canonical when the model needs LectureForge's normalized form with default theme fields filled in.
| Name | Required | Description | Default |
|---|---|---|---|
| presentation | Yes | ||
| include_canonical | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It usefully discloses the dry-run nature ('without writing files') and the recommended call order, but says nothing about what validation checks, whether failures raise errors or return a report, or what happens with a malformed IR.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and side-effect guarantee, then usage, then parameter hint. No filler, though the phrase 'when the model needs' is slightly ambiguous about who the consumer is.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema removes any need to describe return values, and the workflow role is clear. However, with zero annotations and full behavioral burden on the description, missing failure-mode behavior leaves gaps for a validation tool operating on a nested object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so well for include_canonical, explaining the normalized form and default theme fields the schema never mentions; the required 'presentation' parameter relies entirely on its self-evident name and the surrounding context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Validate complete Presentation IR') and immediately scopes it with 'without writing files', which separates it from the sibling render_presentation. An agent can distinguish this from get_presentation_ir and render_presentation without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this before render_presentation' gives an explicit sequencing condition tied to a named sibling, and the include_canonical sentence adds a conditional use case. There is no explicit 'do not use when' guidance, so it falls just short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.3.1- First observed
get_artifact - First observed
get_presentation_ir - First observed
get_project - First observed
list_projects - First observed
list_versions - First observed
render_presentation - First observed
validate_presentation
TDQS
Scored across 7 tools
Each tool targets a distinct object: projects (list_projects, get_project), versions (list_versions), IR content (get_presentation_ir), validation, rendering, and artifacts (get_artifact). Mild overlap exists because get_project returns artifact references and versions, which could be confused with get_artifact and list_versions, but the descriptions differentiate them well.
All tools use consistent snake_case with a predictable verb_noun pattern: list_projects, get_project, list_versions, get_artifact, get_presentation_ir, validate_presentation, render_presentation. No deviations in style or casing.
Seven tools is well-scoped for a presentation rendering pipeline covering project listing/inspection, version listing, IR retrieval, validation, rendering, and artifact access. Each tool earns its place with no redundancy.
The lifecycle is largely covered: create (render_presentation), read (get_project, get_presentation_ir, get_artifact), list, and validate, with immutability handled via versioning. Minor gaps exist (no delete/prune for projects or versions, no export beyond PPTX), but core workflows are complete.
Maintenance
Related MCP Connectors
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Presentations.AI MCP server — create designed slide decks from a topic, text, or document.
Generate PDF, Word (.docx) and PowerPoint (.pptx) documents from Markdown over MCP.
AI presentation and report generation: slides, diagrams, PPTX export, live preview MCP App.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA FastMCP-powered server for programmatically creating, editing, and rendering PowerPoint (PPTX) presentations with features for slide creation, content insertion, and PNG rendering.35Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables creation of professional PowerPoint presentations with AI-generated content and images, supporting multiple LLMs and image services via MCP protocol.MIT
- FlicenseAqualityDmaintenanceA production-ready MCP server that enables LLMs to create, modify, and export PowerPoint presentations programmatically using PptxGenJS.101-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables creating, editing, and manipulating PowerPoint presentations programmatically through Claude and other MCP-compatible clients.MIT