Skip to main content

Let Claude Desktop interact with local Powerpoint and Word documents

On Monday I talked about interacting with Word and Powerpoint documents directly through GitHub Copilot. After writing that post, a colleague reached out to me asking if the same is possible through Claude Desktop. As the original MCP protocol was created by Anthropic(the company that created Claude Desktop), the answer is 'of course'.

Remark: If you want a general introduction about MCP servers, check out my previous post.

The use case

Part of my job is working on presales activities. Typically, this involves answering RFI's and RFP's by creating solution designs, project plans and describe the supporting processes. The end result is typically a Word document containing all the details about our offer in combination with a PowerPoint to present our offer to the customer. I was wondering if I could let an AI agent interact directly with these documents to help me create and finetune our proposals.

Use an MCP server to talk to Microsoft Office

To realize the scenario I mentioned in the intro, we need the following components:

  • An MCP client: in this case Claude Desktop
  • An MCP server that can talk to Microsoft Office

Thanks to the MCP standard we can re-use the same MCP server for Claude Desktop. So check the details in my previous post to get the MCP server up and running:

However as Claude Desktop does not support the HTTP SSE transport, we don’t need to start the MCP server yet. This will be done through a command directly from Claude Desktop as you see later in this post.

Integrate an MCP server in Claude Desktop

Now that we have an MCP server available to interact with Word and PowerPoint, we only need to configure Claud Desktop tu use it.  Let me walk you through the steps required:

  • Open Claude Desktop and go to Settings through File –> Settings

  • Go to the Developer tab and click on Edit config.

  • This will create a Claude claude_desktop_config.json file in %APPDATA%\Claude\.
  • Now open this file in the editor of your choice and enter the configuration details.  Save the file afterwards.
    • Claude Desktop does not support SSE so we have to start and run the tool directly through Claude Desktop using the standard input/output(stdio).
  • After saving the file, you need to restart Claude Desktop before your changes are picked up.
    • Remark: Be aware that it is not sufficient to close the application window as Claude Desktop will keep running in the system tray.
  • When you open Claude Desktop again you should see a hammer icon in the bottom right corner of the input box.

 

  • Click on the hammer icon to see the list of available tools:

 

  • Now Claude Desktop can use this tool when handling our prompts

 

In case you get into trouble, have a look at the Troubleshooting guide available here:

Generate the MCP client config

Depending on the MCP server you are using, different configuration settings are needed. To help you with this, you can try the free Claude Desktop MCP Configuration Generator:

 

Enter the Github url of the MCP server and if it’s found in the database, you get the configuration details back:

    Re-use your Claude Desktop MCP configurations in VS Code

    The good news is that when you have done all the configuration work in Claude Desktop, you can re-use that configuration in Visual Studio Code to access the same MCP servers.

    Therefore add the following configuration to your settings.json file in Visual Studio Code:

    "chat.mcp.discovery.enabled": true

    Visual Studio Code will discover find your existing configuration and use it in your Visual Studio Code instance.

    More information

    Let GitHub Copilot interact with your local PowerPoint and Word documents

    Download - Claude

    Extending Copilot Chat with the Model Context Protocol (MCP) - GitHub Docs

    For Claude Desktop Users - Model Context Protocol

    Generate claude_desktop_config.json | Claude Desktop MCP Config Generator

    Popular posts from this blog

    Azure DevOps/ GitHub emoji

    I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.

    Kubernetes–Limit your environmental impact

    Reducing the carbon footprint and CO2 emission of our (cloud) workloads, is a responsibility of all of us. If you are running a Kubernetes cluster, have a look at Kube-Green . kube-green is a simple Kubernetes operator that automatically shuts down (some of) your pods when you don't need them. A single pod produces about 11 Kg CO2eq per year( here the calculation). Reason enough to give it a try! Installing kube-green in your cluster The easiest way to install the operator in your cluster is through kubectl. We first need to install a cert-manager: kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.yaml Remark: Wait a minute before you continue as it can take some time before the cert-manager is up & running inside your cluster. Now we can install the kube-green operator: kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml Now in the namespace where we want t...

    Podman– Command execution failed with exit code 125

    After updating WSL on one of the developer machines, Podman failed to work. When we took a look through Podman Desktop, we noticed that Podman had stopped running and returned the following error message: Error: Command execution failed with exit code 125 Here are the steps we tried to fix the issue: We started by running podman info to get some extra details on what could be wrong: >podman info OS: windows/amd64 provider: wsl version: 5.3.1 Cannot connect to Podman. Please verify your connection to the Linux system using `podman system connection list`, or try `podman machine init` and `podman machine start` to manage a new Linux VM Error: unable to connect to Podman socket: failed to connect: dial tcp 127.0.0.1:2655: connectex: No connection could be made because the target machine actively refused it. That makes sense as the podman VM was not running. Let’s check the VM: >podman machine list NAME         ...