home / mcp / improvedigital mcp server

ImproveDigital MCP Server

Provides access to ImproveDigital API for publisher inventories with OAuth authentication and tools to list, view, create, and update inventories, zones, and placements.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "azerion-improvedigital-publisher-mcp-server": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "PORT": "3000",
        "TRANSPORT": "http",
        "IMPROVE_DIGITAL_CLIENT_ID": "abc123",
        "IMPROVE_DIGITAL_API_BASE_URL": "https://api.360yield.com",
        "IMPROVE_DIGITAL_CLIENT_SECRET": "$SECRET",
        "IMPROVE_DIGITAL_API_TIMEOUT_MS": "60000"
      }
    }
  }
}

You run an MCP server that exposes Highly-structured tools to manage ImproveDigital publisher inventories via a secure, OAuth-enabled API. It dynamically generates tools from the API surface, so you can list, view, create, and update inventories, zones, and placements through natural prompts and standard MCP tooling.

How to use

You connect your MCP-enabled client to the ImproveDigital Publisher MCP Server to manage publisher inventories. The server exposes tools that let you list inventories, view inventory zones and placements, and create or update placements. Use natural language prompts to trigger the corresponding tool calls handled by the server. The server handles OAuth token management and routes requests to the ImproveDigital API on your behalf.

How to install

Prerequisites include Node.js 18+ and npm or yarn. Follow these steps to install and run the MCP server locally.

# 1) Clone the project and install dependencies
git clone <repository-url>
cd improvedigital-publisher-mcp-server
npm install

# 2) Copy and edit environment configuration
cp .env.example .env
# Edit .env to set your API credentials and server settings
# Environment variables to set in .env
IMPROVE_DIGITAL_CLIENT_ID=your_client_id
IMPROVE_DIGITAL_CLIENT_SECRET=your_client_secret
IMPROVE_DIGITAL_API_BASE_URL=https://api.360yield.com
IMPROVE_DIGITAL_API_TIMEOUT_MS=60000
PORT=3000
TRANSPORT=http

3) Build and start the server

npm run build
npm start

4) Development mode with hot reload (optional)

npm run dev

Configuration and connection options

You can connect using either an HTTP MCP endpoint or via stdio for local development. The following examples show typical configurations you may use in your clients.

# HTTP transport example (production)
TRANSPORT=http
PORT=3000
# Stdio transport example (development)
TRANSPORT=stdio

Using in Claude (stdio and http configurations)

You can integrate the MCP server with Claude by providing an appropriate configuration that points Claude to the local MCP server. The following examples show two common approaches.

{
  "mcpServers": {
    "improvedigital_mcp_server": {
      "type": "stdio",
      "command": "node",
      "args": [
        "/your/path/to/improvedigital-publisher-mcp-server/dist/src/index.js"
      ],
      "env": {
        "IMPROVE_DIGITAL_CLIENT_ID": "...",
        "IMPROVE_DIGITAL_CLIENT_SECRET": "...",
        "IMPROVE_DIGITAL_API_BASE_URL": "https://api.360yield.com",
        "IMPROVE_DIGITAL_API_TIMEOUT_MS": "60000",
        "TRANSPORT": "stdio"
      }
    }
  }
}

HTTP-based integration with Claude can also be configured as follows.

{
  "mcpServers": {
    "improvedigital_mcp_server": {
      "command": "npx",
      "args": [ "mcp-remote", "http://<MCP_SERVER>:3000/mcp", "--allow-http" ]
    }
  }
}

Using in Cursor

In Cursor, add a new MCP server with the endpoint that points to your MCP server. Then enable the tool.

{
  "mcpServers": {
    "improvedigital_mcp_server": {
      "url": "http://<MCP_SERVER>:3000/mcp"
    }
  }
}

Generated tools and API surface

The server dynamically generates a set of tools based on the ImproveDigital API surface. Core tools include the following endpoints mapped to MCP tools.

Available tools

inventories_get_inventories

GET /publisher/v1/publishers/{publisherId}/inventories - List all inventories for a publisher

inventories_get_inventory_zones

GET /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones - List zones for an inventory

inventories_get_inventory_placements

GET /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements - List placements in a zone

inventories_get_inventory_placement

GET /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements/{placementId} - Get a specific placement

inventories_create_inventory_placement

POST /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements - Create a new placement in a zone

inventories_update_inventory_placement

PUT /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements/{placementId} - Update an existing placement