mcp_cosmosdb_go

Sample implementation of a MCP server for Cosmos DB built using the Go SDK

GitHub Stars

5

User Rating

Not Rated

Favorites

0

Views

11

Forks

1

Issues

0

README
MCP server for Azure Cosmos DB using the Go SDK

This is an implementation of a MCP server for Azure Cosmos DB built using its Go SDK. It exposes the following tools for interacting with Azure Cosmos DB:

  • List Databases: Retrieve a list of all databases in a Cosmos DB account.
  • List Containers: Retrieve a list of all containers in a specific database.
  • Read Container Metadata: Fetch metadata or configuration details of a specific container.
  • Create Container: Create a new container in a specified database with a defined partition key.
  • Add Item to Container: Add a new item to a specified container in a database.
  • Read Item: Read a specific item from a container using its ID and partition key.
  • Execute Query: Execute a SQL query on a Cosmos DB container with optional partition key scoping.

The project uses mcp-go as the MCP implementation.

Here is a demo (recommend watching at 2x speed 😉) using VS Code in Agent Mode:

Demo: MCP server for Azure Cosmos DB using the Go SDK

How to run

Word(s) of caution: As much as I want folks to benefit from this, I have to call out that Large Language Models (LLMs) are non-deterministic by nature and can make mistakes. I would recommend you to always validate the results and queries before making any decisions based on them.

git clone https://github.com/abhirockzz/mcp_cosmosdb_go
cd mcp_cosmosdb_go

go build -o mcp_azure_cosmosdb main.go
Configure the MCP server

This will differ based on the MCP client/tool you use. For VS Code you can follow these instructions on how to configure this server using a mcp.json file.

Here is an example of the mcp.json file:

{
  "servers": {
    "Azure Cosmos DB MCP (Golang)": {
      "type": "stdio",
      "command": "enter path to binary e.g. /Users/demo/Desktop/mcp_azure_cosmosdb"
    }
  }
}

Here is an example of Claude Desktop configuration:

{
  "mcpServers": {
    "Azure Cosmos DB MCP (Golang)": {
      "command": "enter path to binary e.g. /Users/demo/Desktop/mcp_azure_cosmosdb",
      "args": []
    }
    //other MCP servers...
  }
}
Azure Cosmos DB RBAC permissions and authentication
  • The user principal you will be using should have permissions (control and data plane) to execute CRUD operations on database, container, and items.

  • Authentication

    • Local credentials - Just login locally using Azure CLI (az login) and the MCP server will use the DefaultAzureCredential implementation automatically.
    • Or, you can set the COSMOSDB_ACCOUNT_KEY environment variable in the MCP server configuration:
    {
      "servers": {
        "CosmosDB Golang MCP": {
          "type": "stdio",
          "command": "/Users/demo/mcp_azure_cosmosdb",
          "env": {
            "COSMOSDB_ACCOUNT_KEY": "enter the key"
          }
        }
      }
    }
    

You are good to go! Now spin up VS Code in Agent Mode, or any other MCP tool (like Claude Desktop) and try this out!

Local dev/testing

Start with MCP inspector - npx @modelcontextprotocol/inspector ./mcp_azure_cosmosdb