home / mcp / 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.
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.
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.
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=http3) Build and start the server
npm run build
npm start4) Development mode with hot reload (optional)
npm run devYou 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=stdioYou 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" ]
}
}
}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"
}
}
}The server dynamically generates a set of tools based on the ImproveDigital API surface. Core tools include the following endpoints mapped to MCP tools.
GET /publisher/v1/publishers/{publisherId}/inventories - List all inventories for a publisher
GET /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones - List zones for an inventory
GET /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements - List placements in a zone
GET /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements/{placementId} - Get a specific placement
POST /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements - Create a new placement in a zone
PUT /publisher/v1/publishers/{publisherId}/inventories/{inventoryId}/zones/{zoneId}/placements/{placementId} - Update an existing placement