You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Title: MCP Server β Python PowerPoint Editor Implementation ("pptx-server")
Goal
Develop pptx-server, a Python MCP server that provides comprehensive PowerPoint presentation editing capabilities using the python-pptx library. The server enables programmatic creation, modification, and management of PPTX files through MCP tool invocations.
The project demonstrates:
Full PowerPoint presentation lifecycle management (create, read, update, delete)
filename: string, slide_index: number, position?: number
Duplicates slide and places at specified position
pptx.get_slide_count
Get number of slides in presentation
filename: string
Returns total slide count
pptx.get_slide_layouts
List available slide layouts
filename: string
Returns array of layout names and indices
pptx.save_as
Save presentation with new filename
filename: string, new_filename: string
Saves copy of presentation
pptx.get_presentation_info
Get presentation metadata
filename: string
Returns title, author, slide count, creation date, etc.
πββοΈ User Stories & Acceptance Criteria
User Story 1 β Quick Server Start
Scenario: Start pptx-server locallyGiven Python β₯3.8 and python-pptx are installed
When I execute "python -m pptx_server --transport=stdio"Then the process starts and responds to MCP protocol
And tools/list returns all pptx.* tools
User Story 2 β Create New Presentation
Scenario: Create blank presentationWhen I invoke pptx.create_presentation with filename="new_deck.pptx"Then file "new_deck.pptx" is created
And tool result indicates success
User Story 3 β Add Slide with Content
Scenario: Add slide with title and contentGiven presentation "deck.pptx" exists
When I invoke pptx.add_slide with layout_index=1
And I invoke pptx.add_text with text="Welcome" at position (100, 100)
Then the slide contains the text "Welcome"And the presentation has one additional slide
User Story 4 β Insert Image
Scenario: Add image to slideGiven presentation "deck.pptx" exists with at least one slide
And image file "chart.png" exists
When I invoke pptx.add_image with slide_index=0, image_path="chart.png"Then the slide contains the inserted image
And tool result confirms successful insertion
User Story 5 β Format Text Content
Scenario: Apply text formattingGiven slide has text content at shape_index=0
When I invoke pptx.format_text with font_name="Arial", font_size=24, bold=true
Then the text formatting is applied
And the text appears in Arial, 24pt, bold
User Story 6 β Presentation Management
Scenario: Manage slide orderGiven presentation with 3 slides
When I invoke pptx.duplicate_slide with slide_index=1, position=0
And I invoke pptx.remove_slide with slide_index=3
Then presentation has 3 slides with duplicated slide at beginning
And original slide 3 is removed
π Design Sketch (Mermaid)
sequenceDiagram
participant Client
participant Gateway as MCP Gateway
participant PptxSrv as pptx-server
Client->>Gateway: JSON-RPC pptx.add_slide
Gateway->>PptxSrv: pptx.add_slide request
PptxSrv->>PptxSrv: Load presentation
PptxSrv->>PptxSrv: Add slide with layout
PptxSrv->>PptxSrv: Save presentation
PptxSrv-->>Gateway: success response
Gateway-->>Client: slide added confirmation
π§ Epic
Title: MCP Server β Python PowerPoint Editor Implementation ("pptx-server")
Goal
Develop
pptx-server, a Python MCP server that provides comprehensive PowerPoint presentation editing capabilities using the python-pptx library. The server enables programmatic creation, modification, and management of PPTX files through MCP tool invocations.The project demonstrates:
Repository root:
mcp-servers/python/pptx_serverπ§ Type of Feature
π Tool Catalogue
pptx.create_presentationfilename: stringβ output file pathtemplate?: stringβ optional template pathpptx.add_slidefilename: string,layout_index?: number,position?: numberpptx.add_textfilename: string,slide_index: number,text: string,left?: number,top?: number,width?: number,height?: numberpptx.add_imagefilename: string,slide_index: number,image_path: string,left?: number,top?: number,width?: number,height?: numberpptx.add_tablefilename: string,slide_index: number,rows: number,cols: number,left?: number,top?: numberpptx.format_textfilename: string,slide_index: number,shape_index: number,font_name?: string,font_size?: number,bold?: bool,italic?: boolpptx.remove_slidefilename: string,slide_index: numberpptx.duplicate_slidefilename: string,slide_index: number,position?: numberpptx.get_slide_countfilename: stringpptx.get_slide_layoutsfilename: stringpptx.save_asfilename: string,new_filename: stringpptx.get_presentation_infofilename: stringπββοΈ User Stories & Acceptance Criteria
User Story 1 β Quick Server Start
User Story 2 β Create New Presentation
User Story 3 β Add Slide with Content
User Story 4 β Insert Image
User Story 5 β Format Text Content
User Story 6 β Presentation Management
π Design Sketch (Mermaid)
sequenceDiagram participant Client participant Gateway as MCP Gateway participant PptxSrv as pptx-server Client->>Gateway: JSON-RPC pptx.add_slide Gateway->>PptxSrv: pptx.add_slide request PptxSrv->>PptxSrv: Load presentation PptxSrv->>PptxSrv: Add slide with layout PptxSrv->>PptxSrv: Save presentation PptxSrv-->>Gateway: success response Gateway-->>Client: slide added confirmationπ Filesystem Layout
π Component Matrix
main.pyserver.pytools/presentation.pytools/slides.pytools/content.pytools/formatting.pyutils/validation.pyutils/pptx_helpers.pyrequirements.txtpyproject.tomlREADME.mdπ Global Acceptance Checklist
π Roll-Out Plan
mcp-servers/python/pptx_serverwith structure above.