- Home
- MCP servers
- ImproveDigital
ImproveDigital
- typescript
0
GitHub Stars
typescript
Language
7 months ago
First Indexed
3 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
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
- Build and start the server
npm run build
npm start
- 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