From ea71582aa7929f12756dbe91c86dccaf60f82e81 Mon Sep 17 00:00:00 2001 From: "aiste.grigaliunaite@decodo.com" Date: Thu, 8 Oct 2026 13:47:48 +0300 Subject: [PATCH 1/2] send integration header from server --- package-lock.json | 4 ++-- package.json | 2 +- src/clients/__tests__/scraper-api-client.test.ts | 12 ++++++++++++ src/clients/scraper-api-client.ts | 8 ++++++-- src/server/sapi-base-server.ts | 12 ++++++++++-- src/server/sapi-http-server.ts | 2 +- 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e3ad4f..4848993 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@decodo/mcp-server", - "version": "1.2.5", + "version": "1.2.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@decodo/mcp-server", - "version": "1.2.5", + "version": "1.2.6", "license": "ISC", "dependencies": { "@decodo/sdk-ts": "^2.3.0", diff --git a/package.json b/package.json index 01d2f50..2505566 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@decodo/mcp-server", - "version": "1.2.5", + "version": "1.2.6", "description": "Decodo MCP Server", "bin": { "decodo-mcp": "./build/index.js" diff --git a/src/clients/__tests__/scraper-api-client.test.ts b/src/clients/__tests__/scraper-api-client.test.ts index 7b4c9c9..a5562df 100644 --- a/src/clients/__tests__/scraper-api-client.test.ts +++ b/src/clients/__tests__/scraper-api-client.test.ts @@ -65,6 +65,18 @@ describe('ScraperApiClient', () => { }); }); + it('sends a custom integration header when configured', async () => { + const hostedClient = new ScraperApiClient({ + maxRetries: 1, + delayMs: 0, + integrationHeader: 'mcp-hosted', + }); + + await hostedClient.scrape(defaultArgs); + + expect(lastRequest().init.headers).toMatchObject({ 'x-integration': 'mcp-hosted' }); + }); + it('posts to the data API with Bearer auth when given an API key', async () => { await client.scrape({ ...defaultArgs, auth: apiKeyAuth }); diff --git a/src/clients/scraper-api-client.ts b/src/clients/scraper-api-client.ts index 6e44c95..44506ed 100644 --- a/src/clients/scraper-api-client.ts +++ b/src/clients/scraper-api-client.ts @@ -22,7 +22,6 @@ import { WAITING_INTERVAL_MS, } from './retry'; -const INTEGRATION_HEADER = 'mcp'; const REQUEST_TIMEOUT_MS = 180_000; const API_PARAM_ALIASES = new Map([ @@ -36,15 +35,20 @@ export class ScraperApiClient { delayMs: number; + integrationHeader: string; + constructor({ maxRetries = MAX_RETRIES, delayMs = BASE_RETRY_DELAY_MS, + integrationHeader = 'mcp', }: { maxRetries?: number; delayMs?: number; + integrationHeader?: string; } = {}) { this.maxRetries = maxRetries; this.delayMs = delayMs; + this.integrationHeader = integrationHeader; } transformScrapingParams = ({ @@ -165,7 +169,7 @@ export class ScraperApiClient { const { webScrapingApi } = new DecodoClient({ webScrapingApi: { ...this.sdkCredentials(auth), - integrationHeader: INTEGRATION_HEADER, + integrationHeader: this.integrationHeader, }, timeoutMs: REQUEST_TIMEOUT_MS, }); diff --git a/src/server/sapi-base-server.ts b/src/server/sapi-base-server.ts index a3e4921..0c2c260 100644 --- a/src/server/sapi-base-server.ts +++ b/src/server/sapi-base-server.ts @@ -46,12 +46,20 @@ export class ScraperAPIBaseServer { auth: AuthCredential; - constructor({ auth, toolsets = [] }: { auth: AuthCredential; toolsets: TOOLSET[] }) { + constructor({ + auth, + toolsets = [], + integrationHeader, + }: { + auth: AuthCredential; + toolsets: TOOLSET[]; + integrationHeader?: string; + }) { this.server = new McpServer({ name: 'decodo', version: PACKAGE_VERSION, }); - this.sapiClient = new ScraperApiClient({}); + this.sapiClient = new ScraperApiClient({ integrationHeader }); this.auth = auth; diff --git a/src/server/sapi-http-server.ts b/src/server/sapi-http-server.ts index 0552109..a41cf74 100644 --- a/src/server/sapi-http-server.ts +++ b/src/server/sapi-http-server.ts @@ -10,6 +10,6 @@ export class ScraperAPIHttpServer extends ScraperAPIBaseServer { sapiClient: ScraperApiClient; constructor({ toolsets = [], auth }: { toolsets: TOOLSET[]; auth: AuthCredential }) { - super({ auth, toolsets }); + super({ auth, toolsets, integrationHeader: 'mcp-hosted' }); } } From f63e65efd7ace53dae87458bf63f2e71558029b9 Mon Sep 17 00:00:00 2001 From: "aiste.grigaliunaite@decodo.com" Date: Thu, 8 Oct 2026 17:06:12 +0300 Subject: [PATCH 2/2] chore: update test --- src/server/__tests__/server-registration.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/__tests__/server-registration.test.ts b/src/server/__tests__/server-registration.test.ts index a8616b8..d06dc45 100644 --- a/src/server/__tests__/server-registration.test.ts +++ b/src/server/__tests__/server-registration.test.ts @@ -25,7 +25,7 @@ describe('Server registration', () => { expect(McpServer).toHaveBeenCalledWith({ name: 'decodo', - version: '1.2.5', + version: '1.2.6', }); });