Skip to main content

Let GitHub Copilot interact with your local PowerPoint and Word documents

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 GitHub Copilot interact directly with these documents to help me create and finetune our proposals.

Thanks to the rise of the Model Context Protocol (MCP) and a growing list of MCP servers, we can easily do this. But before I dive in the details, let me briefly explain what MCP is all about.

What is MCP?

MCP, or Model Context Protocol, is an open protocol designed to standardize how applications provide context to large language models (LLMs).  In the documentation they describe it like a USB-C port for AI applications—just as USB-C allows devices to connect seamlessly, MCP enables AI models to integrate with various data sources and tools. Before multiple vendors each had their own way to provide tooling integration and extensibility. With the introduction of MCP we get a standard way that is supported by most AI platforms and agents.

It follows a client-server architecture, where AI models can request data from MCP servers, which then retrieve relevant information from local or remote sources. This enhances AI reasoning, accessibility, and tool integration, making AI assistants more powerful and adaptable

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 GitHub Copilot that recently got MCP support
  • An MCP server that can talk to Microsoft Office

The good news is that we don’t have to create an MCP server from scratch. As part of the SemanticWorkBench project on Github, multiple MCP server implementations are available. One of them for interacting with open Word or Powerpoint apps.

Perfect! So let me show you how to get this MCP server up and running:

  • Clone the SemanticWorkBench project on your local machine:

git clone https://github.com/microsoft/semanticworkbench.git

  • To build the application a makefile is available. To use this file, we need make available on our local machine. The easiest way is through Chocolatey:

choco install make

  • Once make is installed, open a command prompt and go to the mcp-servers/mcp-server-office folder. There run the make command:

make

  • This will install all the required development dependencies. Once the command completes, run the build command to generate the executable:

make package

  • You can now run the executable from the command prompt:
./dist/mcp-server-office.exe
  • This will start the server in SSE mode running on port 25566

Remark: As MCP servers can interact with almost anything on your machine, only download MCP servers from trusted sources.

Integrate the MCP server into Github Copilot

Now that we have our MCP server up and running, we only need to register it as a tool:

  • Start by opening the Copilot Chat window in VS Code and switch to Agent mode

 

  • Click on the Select Tools… icon

 

  • You get a list of already available and active tools.

 

  • Scroll down to the bottom of the list and click on Add more tools

  • Choose the Add MCP server option from the dropdown

 

  • Choose HTTP (Server-sent events) from the list

 

  • Enter the server URL and hit enter
    • Use the following URI: http://localhost:25566/sse
  • Enter a server id and hit enter
    • We use 'mcp-server-office' in this example
  • We want to store this configuration only for this project so choose Workspace Settings

  • Our local mcp.json file is shown and the new mcp server is added to the list:

 

  • Click on Start above the specific MCP server configuration to activate the integration.
  • If you open up the Tool section again, you can see the list of available tools:
  • Now open the Word document or PowerPoint presentation that you want to manipulate on your local machine.
    • Remark: Be careful to not have any other documents open at the same time as it can be that the MCP server changes your files.
  • Let’s now try a prompt that could invoke the registered tool:
  • As you can see, Github Copilot recognizes the available tools and asks to interact with my open PowerPoint presentation through the MCP server:

More information

Introduction - Model Context Protocol

microsoft/semanticworkbench: A versatile tool designed to help prototype intelligent assistants, agents and multi-agentic systems

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         ...