From 0802da3fafba1d383e346fc7e79414bf5352769c Mon Sep 17 00:00:00 2001 From: alban bertolini Date: Tue, 10 Feb 2026 22:26:44 +0100 Subject: [PATCH 1/4] feat(mcp-server): add Forest Admin logo to MCP server metadata Add the Forest Admin SVG logo to the McpServer configuration so it displays in MCP clients (Claude Desktop, Cursor, etc.). Co-Authored-By: Claude Opus 4.6 --- packages/mcp-server/src/server.ts | 3 +++ packages/mcp-server/test/server.test.ts | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index d8ba6d32e..a40c0afe5 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -36,6 +36,8 @@ import { fetchForestSchema, getCollectionNames } from './utils/schema-fetcher'; import interceptResponseForErrorLogging from './utils/sse-error-logger'; import { NAME, VERSION } from './version'; +const LOGO_URL = 'https://app.forestadmin.com/img/logo-e8d1269ef22a94d210c8b6cbf8e9caca.svg'; + export type LogLevel = 'Debug' | 'Info' | 'Warn' | 'Error'; export type Logger = (level: LogLevel, message: string) => void; @@ -136,6 +138,7 @@ export default class ForestMCPServer { this.mcpServer = new McpServer({ name: NAME, version: VERSION, + icons: [{ src: LOGO_URL, mimeType: 'image/svg+xml' }], }); } diff --git a/packages/mcp-server/test/server.test.ts b/packages/mcp-server/test/server.test.ts index 8eb57b019..c2f42d68d 100644 --- a/packages/mcp-server/test/server.test.ts +++ b/packages/mcp-server/test/server.test.ts @@ -2282,3 +2282,13 @@ describe('ForestMCPServer Instance', () => { }); }); }); + +describe('Logo URL', () => { + it('should reference an accessible SVG image', async () => { + const logoUrl = 'https://app.forestadmin.com/img/logo-e8d1269ef22a94d210c8b6cbf8e9caca.svg'; + const response = await fetch(logoUrl, { method: 'HEAD' }); + + expect(response.ok).toBe(true); + expect(response.headers.get('content-type')).toContain('svg'); + }); +}); From 73df98390fef58cd689c62b272e54d01afde48e7 Mon Sep 17 00:00:00 2001 From: scra Date: Wed, 11 Feb 2026 13:23:50 +0100 Subject: [PATCH 2/4] fix: location MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent MoliniƩ --- packages/mcp-server/src/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index a40c0afe5..24dd9c0ac 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -36,7 +36,7 @@ import { fetchForestSchema, getCollectionNames } from './utils/schema-fetcher'; import interceptResponseForErrorLogging from './utils/sse-error-logger'; import { NAME, VERSION } from './version'; -const LOGO_URL = 'https://app.forestadmin.com/img/logo-e8d1269ef22a94d210c8b6cbf8e9caca.svg'; +const LOGO_URL = 'https://forest-assets.s3.us-east-1.amazonaws.com/logo-green.png'; export type LogLevel = 'Debug' | 'Info' | 'Warn' | 'Error'; export type Logger = (level: LogLevel, message: string) => void; From 26c3d6a351fdd1bbc6f62c6e0cfae3fbb3e2e83c Mon Sep 17 00:00:00 2001 From: alban bertolini Date: Wed, 11 Feb 2026 14:30:41 +0100 Subject: [PATCH 3/4] fix(mcp-server): update logo mimeType and test for PNG Co-Authored-By: Claude Opus 4.6 --- packages/mcp-server/src/server.ts | 2 +- packages/mcp-server/test/server.test.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 24dd9c0ac..f83f17802 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -138,7 +138,7 @@ export default class ForestMCPServer { this.mcpServer = new McpServer({ name: NAME, version: VERSION, - icons: [{ src: LOGO_URL, mimeType: 'image/svg+xml' }], + icons: [{ src: LOGO_URL, mimeType: 'image/png' }], }); } diff --git a/packages/mcp-server/test/server.test.ts b/packages/mcp-server/test/server.test.ts index c2f42d68d..fc18d065f 100644 --- a/packages/mcp-server/test/server.test.ts +++ b/packages/mcp-server/test/server.test.ts @@ -2284,11 +2284,11 @@ describe('ForestMCPServer Instance', () => { }); describe('Logo URL', () => { - it('should reference an accessible SVG image', async () => { - const logoUrl = 'https://app.forestadmin.com/img/logo-e8d1269ef22a94d210c8b6cbf8e9caca.svg'; + it('should reference an accessible PNG image', async () => { + const logoUrl = 'https://forest-assets.s3.us-east-1.amazonaws.com/logo-green.png'; const response = await fetch(logoUrl, { method: 'HEAD' }); expect(response.ok).toBe(true); - expect(response.headers.get('content-type')).toContain('svg'); + expect(response.headers.get('content-type')).toContain('image/png'); }); }); From 978da8fbacad1a52c365c2e4c8e4039b5554f3d9 Mon Sep 17 00:00:00 2001 From: alban bertolini Date: Wed, 11 Feb 2026 14:51:40 +0100 Subject: [PATCH 4/4] refactor(mcp-server): use exported LOGO_URL constant in test Co-Authored-By: Claude Opus 4.6 --- packages/mcp-server/src/server.ts | 2 +- packages/mcp-server/test/server.test.ts | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index f83f17802..49dbe7190 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -36,7 +36,7 @@ import { fetchForestSchema, getCollectionNames } from './utils/schema-fetcher'; import interceptResponseForErrorLogging from './utils/sse-error-logger'; import { NAME, VERSION } from './version'; -const LOGO_URL = 'https://forest-assets.s3.us-east-1.amazonaws.com/logo-green.png'; +export const LOGO_URL = 'https://forest-assets.s3.us-east-1.amazonaws.com/logo-green.png'; export type LogLevel = 'Debug' | 'Info' | 'Warn' | 'Error'; export type Logger = (level: LogLevel, message: string) => void; diff --git a/packages/mcp-server/test/server.test.ts b/packages/mcp-server/test/server.test.ts index fc18d065f..023c16a05 100644 --- a/packages/mcp-server/test/server.test.ts +++ b/packages/mcp-server/test/server.test.ts @@ -7,7 +7,7 @@ import request from 'supertest'; import createMockForestServerClient from './helpers/forest-server-client'; import getAvailablePort from './test-utils/get-available-port'; import MockServer from './test-utils/mock-server'; -import ForestMCPServer from '../src/server'; +import ForestMCPServer, { LOGO_URL } from '../src/server'; import { clearSchemaCache } from '../src/utils/schema-fetcher'; function shutDownHttpServer(server: http.Server | undefined): Promise { @@ -2285,8 +2285,7 @@ describe('ForestMCPServer Instance', () => { describe('Logo URL', () => { it('should reference an accessible PNG image', async () => { - const logoUrl = 'https://forest-assets.s3.us-east-1.amazonaws.com/logo-green.png'; - const response = await fetch(logoUrl, { method: 'HEAD' }); + const response = await fetch(LOGO_URL, { method: 'HEAD' }); expect(response.ok).toBe(true); expect(response.headers.get('content-type')).toContain('image/png');