Skip to main content

Command Palette

Search for a command to run...

Unlocking the Power of MCP Servers on Linux: A Quickstart Guide

Updated
3 min read
Unlocking the Power of MCP Servers on Linux: A Quickstart Guide

What is MCP and why should I use it?

I spent this weekend exploring MCP (Model Context Protocol), a protocol that allows LLMs (Large Language Models) to interact with other systems. This means you can connect your LLM, like Claude, to your file system, for example. You can then instruct your LLM to "change all my file names with whitespace to underscores," and it will execute the commands on your system, making the actual changes. This enables you to use natural language to interact with the systems you're working with, potentially transforming how we engage with our systems.

How do I interact with MCP?

To interact with an MCP, you need a client that can communicate with an MCP server. See here for a matrix of supported clients. In this post, I will use Claude Desktop. Since I’m running Linux and there’s no officially supported version of Claude, I’m using the unofficial desktop version of Claude Desktop. NB: Read and evaluate the code before you run it!

Adding an MCP server

After installing the desktop version, you can add your first MCP server. Our MCP server in this example will require npx. Check if you have it installed:

npx --version

If not, install it.

We will then add an MCP server to your Claude desktop config that interacts with your local file system:

vim .config/Claude/claude_desktop_config.json

Add the following:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/home/oystein/Desktop",
        "/home/oystein/Downloads"
      ]
    }
  }
}

This list will specify the directories in which the LLM can operate. Replace <myhomedir> with the name of your home directory.

Restart Claude Desktop. You will now see a hammer with a number, indicating that you have MCP tools available:

You can also select the “attach” button to the right of the hammer to see connected MCP servers:

You can see that I have two file servers installed.

Make changes to your local filesystem

You can now start interacting with Claude to make changes to your file system. Here, I ask it to create a script in my Desktop directory:

You will have to confirm when it wants to execute commands on your system:

Claude does its work:

And to confirm that it actually exists:

As you can see, the file now exists locally in my file system.

A very basic example, but full of potential. Let’s take it a bit further and see how we can interact with Azure DevOps.

Interacting with Azure DevOps

In this example, I will use the mcp-server-azure-devops for interacting with Azure DevOps. Note: I recommend using this only in your personal lab Azure DevOps organization.

Start by adding the Azure DevOps MCP server to your Claude Desktop config:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/home/oystein/Desktop",
        "/home/oystein/Downloads"
      ]
    },
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/<myorg>",
        "AZURE_DEVOPS_AUTH_METHOD": "pat",
        "AZURE_DEVOPS_PAT": "<redacted>",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "Demo"
      }
    }
  }
}

Add your organization in <myorg> and your Azure DevOps PAT to <redacted>. I granted the PAT read access with write access to tasks.

Restart Claude and ask it to:

It will start listing all tasks assigned to me and their states:

I can even add comments and close tasks:

Conclusion

This was a quick introduction to the how and why of the MCP server. Even though it’s early, I believe this will significantly change our daily workflow, and it will be interesting to see what MCP server capabilities people will develop. However powerful it is, security departments will have a lot to monitor going forward, and the chance of user mistakes can increase since one can quickly select “yes” to all prompts asked by the LLM.