microsoft-office-mcp
Create PowerPoint Presentation with ERD from Text Prompt
This project uses LangChain's MultiServerMCPClient to connect to a custom MCP server (Microsoft Office/Visio MCP) and generate a PowerPoint presentation containing an ERD (Entity-Relationship Diagram) visualization.
Prerequisites
Python 3.8+
Microsoft Office (PowerPoint/Visio) installed
MCP Server running with Visio/PowerPoint tools
Installation
Clone the repository:
git clone <repository-url> cd microsoft-office-mcpInstall dependencies:
pip install -r requirements.txt
Usage
Start MCP Server
Run the MCP server that exposes Visio/PowerPoint tools:
python server.pyRun the Agent
Execute the agent script with a prompt describing the desired ERD:
python agent.pyModify the main() function in agent.py to customize the prompt:
async def main():
agent = ERDAgent()
prompt = """
Create a PowerPoint presentation with an ERD diagram for this scenario:
[Your ERD description here]
Key requirements:
- Use Crow's Foot notation for relationships
- Keep entities within slide boundaries
- Save as vsdx file
"""
await agent.run(prompt)How It Works
server.py: Implements a FastMCP server that exposes:init_new_visio_document: Creates a new Visio/PowerPoint documentdraw_erd_entity: Draws ERD entity shapes with specified coordinatesconnect_entities: Creates relationship connectors between entitiessave_as_vsdx: Saves the diagram as a .vsdx file
agent.py: A LangGraph agent that:Connects to the MCP server using
MultiServerMCPClientUses
create_react_agentwith Ollama (or another LLM) for reasoningExecutes the MCP tools sequentially to build the diagram
Streams the agent's thought process to the console
Customization
LLM Model: Change
OLLAMA_MODELin.envorconfig.pyMCP Server URL: Update
MCP_SERVER_URLin.envDiagram Design: Modify the prompt in
agent.pyto change:Entities and attributes
Relationships and cardinality
Document layout and styling
Example Prompt
"""
Design a simple ERD diagram for a gym membership system.
Entities:
- MEMBERS (member_id, name, email, phone, address)
- CLASSES (class_id, name, capacity, instructor)
- MEMBERSHIPS (membership_id, type, start_date, end_date)
Relationships:
- A MEMBER can have one MEMBERSHIP (1:1)
- A MEMBER can attend multiple CLASSES (M:N)
- A CLASS has one instructor (1:1)
Requirements:
- Use Crow's Foot notation
- Keep the diagram clean and organized
- Save as vsdx file with appropriate filename
"""Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/jacobNar/microsoft-office-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server