Edit

Share via


Use MCP servers in Visual Studio (Preview)

Model Context Protocol (MCP) is an open standard that enables AI models to interact with external tools and services through a unified interface. In Visual Studio, MCP support enhances GitHub Copilot's agent mode by allowing you to connect any MCP-compatible server to your agentic coding workflow. This article guides you through setting up MCP servers and using tools with agent mode in Visual Studio.

Prerequisites

How do MCP and Visual Studio extend GitHub Copilot's agent?

  • MCP clients, such as Visual Studio connect to MCP servers and request actions on behalf of the AI model
  • MCP servers provide one or more tools that expose specific functionalities through a well-defined interface.
  • The Model Context Protocol (MCP) defines the message format for communication between clients and servers, including tool discovery, invocation, and response handling

For example, a file system MCP server might provide tools for reading, writing, or searching files and directories. GitHub's official MCP server offers tools to list repositories, create pull requests, or manage issues. MCP servers can run locally on your machine or be hosted remotely, and Visual Studio supports both configurations.

By standardizing this interaction, MCP eliminates the need for custom integrations between each AI model and each tool. This allows you to extend your AI assistant's capabilities by simply adding new MCP servers to your workspace. Learn more about the Model Context Protocol specification.

Configuration example with GitHub MCP server

  1. Create a new file: <SOLUTIONDIR>\.mcp.json. Using Visual Studio to edit this file is recommended so its JSON schema is automatically applied.
  2. Paste the following contents into the .mcp.json file
{
  "inputs": [
    {
      "id": "github_pat",
      "description": "GitHub personal access token",
      "type": "promptString",
      "password": true
    }
  ],
  "servers": {
    "github": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_pat}"
      }
    }
  }
}
  1. Get a Personal Access Token for your GitHub Account

  2. In Visual Studio, click the Ask dropdown in the GitHub Copilot Chat window, and then select Agent.

    Screenshot that shows Copilot agent mode selector.

  3. When prompted, paste your personal access token into the dialog.

    Screenshot that shows entering the personal access token.

  4. Select the tools you'd like to use, for example, list_issues

    Screenshot that shows MCP GitHub tools.

  5. Try a sample prompt: list issues assigned to me on GitHub

  6. Copilot asks for permission to use a tool made available to it by the MCP server, select Allow with the scope you wish to proceed with.

    Screenshot that shows the agent tools confirmation options.

Supported MCP capabilities

Visual Studio supports local standard input/output (stdio), server-sent events (sse), and streamable HTTP (http) for MCP server transport. Currently of the three primitives (tools, prompts, resources), servers can only provide tools to Copilot's agent mode. The list and descriptions of tools can be updated dynamically using list changed events. Visual Studio provides servers with the current solution folders using roots (spec).

Finding MCP servers

MCP's official server repository is a great starting point for reference, official, and community-contributed servers that showcase MCP's versatility. You can explore servers for various functionalities, such as file system operations, database interactions, and web services.

MCP is still a relatively new standard, and the ecosystem is rapidly evolving. As more developers adopt MCP, you can expect to see an increasing number of servers and tools available for integration with your projects.

Adding an MCP server

Create a file to manage configuration of MCP servers

If you do not already have an mcp.json file, you can create it in various locations depending on the repos, users, and IDEs you would like the servers to be available/used for.

File locations for automatic discovery of MCP configuration

Visual Studio also checks for MCP configurations set up by other development environments. MCP server configurations are read from the following directories, in the following order:

  1. %USERPROFILE%\.mcp.json
    Serves as a global MCP server configuration for a specific user. Adding an MCP server here would make it load for all Visual Studio solutions.
  2. <SOLUTIONDIR>\.vs\mcp.json
    Specific to Visual Studio and only loads the specified MCP servers for a specific user, for the specified solution.
  3. <SOLUTIONDIR>\.mcp.json
    Works well if you're looking for an MCP configuration that you can track in source control for a repo.
  4. <SOLUTIONDIR>\.vscode\mcp.json
    Scoped to the repository/solution and typically not source controlled.
  5. <SOLUTIONDIR>\.cursor\mcp.json
    Scoped to the repository/solution and typically not source controlled.

Some of these locations require .mcp.json while others require mcp.json.

MCP configuration format

You may define both remote (URL and credentials) and local (command-line invocation) servers.

It’s common to invoke tools via package managers. For example, npx -y @azure/mcp@latest or docker run ... mcp/github. Visual Studio respects whatever command you specify, allowing you to pin versions or pass flags as needed.

Format must follow the MCP specification, for example, an array of server objects, each with name, command or url, transport, etc.

Editing MCP configuration

With an existing mcp.json file, add the file location to Solution Items in Solution Explorer, if you're checking the file into your version control system.

When the file is saved with valid syntax, GitHub Copilot's agent restarts and reloads the configured servers.

Screenshot that shows adding the MCP configuration file location to Solution Items.

Tool Lifecycle

As soon as a server is discovered or added:

  • Visual Studio initializes the server (performs a handshake and queries the tool list).
  • Visual Studio subscribes to the MCP event notifications/tools/list_changed.
  • When that event fires, Visual Studio resets any prior acceptances or permissions on tools (to prevent rug-pull attacks), re-fetches the tool list, and updates the count/UI live.
  • When the server is successfully enabled, tools are made available to the Agent. The tools are disabled by default and must be manually enabled.
  • If a server is removed, Visual Studio immediately kills its process and withdraws all its tools from the UI.
  • If you edit a server definition, Visual Studio terminates and relaunches it, and then re-queries.

Manage tool approvals

When a tool is invoked, Copilot requests confirmation to run the tool. This is because tools might run locally on your machine and perform actions that modify files or data.

In the chat pane, after a tool invocation, use the Allow dropdown options to automatically confirm the specific tool for the current session, solution, or all future invocations.

Screenshot that shows managing agent tool approvals.

You can reset tool confirmation selections in Tools > Options > GitHub > Copilot > Tools.

Screenshot that shows the tools configuration setting.

Frequently asked questions

As an administrator, how do I control use of MCP servers in agent mode for Visual Studio users?

Agent mode and MCP usage in Visual Studio are governed by the Editor preview features flag in the GitHub Copilot dashboard for administrators. If the administrator turns off this setting, users under that subscription won’t be able to use agent mode or connect to MCP servers in Visual Studio.

For more information, see managing policies and features for copilot in your enterprise.