From 1c7c1fedcb7e6a97287905ecc243378c53cad594 Mon Sep 17 00:00:00 2001 From: Shivam Kaushik Date: Fri, 3 Jul 2026 15:14:22 +0530 Subject: [PATCH 1/5] feat(server): propose changes to align mcp server as per anthropic's mcp server policy --- packages/mcp-server/README.md | 70 ++++++++++++++++++++ packages/mcp-server/build | 1 + packages/mcp-server/icon.png | Bin 0 -> 54978 bytes packages/mcp-server/manifest.json | 19 +++++- packages/mcp-server/server.json | 41 ++++++++++++ packages/mcp-server/src/code-tool.ts | 9 ++- packages/mcp-server/src/docs-search-tool.ts | 2 + 7 files changed, 138 insertions(+), 4 deletions(-) create mode 100644 packages/mcp-server/icon.png create mode 100644 packages/mcp-server/server.json diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 2fe6b778..5b3163fd 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -102,3 +102,73 @@ A configuration JSON for this server might look like this, assuming the server i } } ``` + +## Usage Examples + +Once connected, you can drive the server with natural-language prompts. The agent will +call `search_docs` to look up the right SDK methods and then `execute` to run the code. + +### Example 1: Upload and organize + +```yaml +1. "Upload https://example.com/photo.jpg to ImageKit into the folder /products as 'hero'" +2. "Create a folder called /products/2026-spring" +3. "Move the file 'hero' into /products/2026-spring" +``` + +### Example 2: Search and filter your library + +```yaml +1. "Find all image files tagged 'banner' created in the last 7 days" +2. "List the 20 most recent videos in the /marketing folder" +3. "Show me the details and tags for file ID " +``` + +### Example 3: Tag and update metadata + +```yaml +1. "Add the tags 'featured' and 'homepage' to file ID " +2. "List my custom metadata fields" +3. "Set the custom metadata field 'campaign' to 'spring-2026' on file ID " +``` + +### Example 4: Build a transformation URL + +```yaml +1. "Generate a URL for 'hero.jpg' resized to 800x600 with auto format and quality" +2. "Create a thumbnail URL for 'hero.jpg' at 200x200 cropped to a face" +``` + +## Privacy Policy + +This connector processes your prompts and the ImageKit account data required to fulfill +your requests. See ImageKit's privacy policy for full details: +[https://imagekit.io/privacy-policy/](https://imagekit.io/privacy-policy/). + +- **Data collected**: the code/instructions you send to the `execute` tool and the + ImageKit API requests it makes on your behalf (e.g. file listings, uploads, metadata). +- **Authentication**: your ImageKit private key (or an OAuth-issued token for the hosted + server) is used only to authenticate ImageKit API calls. Executed code runs in an + isolated sandbox with network access restricted to the ImageKit API hosts; it cannot + read the host process environment or other secrets. +- **Usage & storage**: an optional `intent` string may be logged to improve the service. + ImageKit does not sell your data. Asset data is stored in your own ImageKit account. +- **Third-party sharing**: none beyond the ImageKit API required to perform your request. +- **Retention**: operational logs are retained per ImageKit's standard retention policy. +- **Contact**: [developer@imagekit.io](mailto:developer@imagekit.io). + +## Support + +- **Documentation**: [https://imagekit.io/docs/api-reference](https://imagekit.io/docs/api-reference) +- **Issues**: [https://github.com/imagekit-developer/imagekit-nodejs/issues](https://github.com/imagekit-developer/imagekit-nodejs/issues) +- **Email**: [developer@imagekit.io](mailto:developer@imagekit.io) + +### Troubleshooting + +- **`Deno is required for code execution`** — install Deno from + [https://deno.land](https://deno.land) or run `npm install deno`; the `execute` tool + runs your code in a Deno sandbox. +- **Authentication errors** — verify `IMAGEKIT_PRIVATE_KEY` (starts with `private_`) is + set and valid in the [ImageKit dashboard](https://imagekit.io/dashboard/developer/api-keys). +- **Tool times out** — individual API requests time out at 30s and total execution at + ~5 minutes; narrow your query with filters or paginate within a single `execute` call. diff --git a/packages/mcp-server/build b/packages/mcp-server/build index 90381d31..46ef4c92 100644 --- a/packages/mcp-server/build +++ b/packages/mcp-server/build @@ -47,6 +47,7 @@ cd .. # pack bundle cp manifest.json dist-bundle +cp icon.png dist-bundle npx mcpb pack dist-bundle imagekit_nodejs_api.mcpb diff --git a/packages/mcp-server/icon.png b/packages/mcp-server/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd018c3ff84ee155ffb2878dfcd93b7dfa3648c GIT binary patch literal 54978 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 API Keys.", + "isRequired": true, + "isSecret": true + }, + { + "name": "IMAGEKIT_WEBHOOK_SECRET", + "description": "Your ImageKit webhook secret (starts with `whsec_`). Only required if you verify webhook signatures.", + "isRequired": false, + "isSecret": true + } + ] + } + ], + "remotes": [ + { + "type": "streamable-http", + "url": "https://api-mcp.imagekit.io/mcp" + } + ] +} \ No newline at end of file diff --git a/packages/mcp-server/src/code-tool.ts b/packages/mcp-server/src/code-tool.ts index 832cece5..15cdf9eb 100644 --- a/packages/mcp-server/src/code-tool.ts +++ b/packages/mcp-server/src/code-tool.ts @@ -69,11 +69,18 @@ export function codeTool({ }, intent: { type: 'string', - description: 'Task you are trying to perform. Used for improving the service.', + description: 'Task you are trying to perform.', }, }, required: ['code'], }, + annotations: { + title: 'Execute ImageKit API code', + readOnlyHint: false, + destructiveHint: true, + idempotentHint: false, + openWorldHint: true, + }, }; const logger = getLogger(); diff --git a/packages/mcp-server/src/docs-search-tool.ts b/packages/mcp-server/src/docs-search-tool.ts index eafcd871..d74e106f 100644 --- a/packages/mcp-server/src/docs-search-tool.ts +++ b/packages/mcp-server/src/docs-search-tool.ts @@ -37,7 +37,9 @@ export const tool: Tool = { required: ['query', 'language'], }, annotations: { + title: 'Search ImageKit SDK docs', readOnlyHint: true, + openWorldHint: true, }, }; From f43a1a61c4b74390a43898bf5860988df4f07c41 Mon Sep 17 00:00:00 2001 From: Shivam Kaushik Date: Fri, 3 Jul 2026 15:42:28 +0530 Subject: [PATCH 2/5] docs(readme): update examples for clarity and relevance --- packages/mcp-server/README.md | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 5b3163fd..9a3e29f4 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -110,34 +110,21 @@ call `search_docs` to look up the right SDK methods and then `execute` to run th ### Example 1: Upload and organize -```yaml -1. "Upload https://example.com/photo.jpg to ImageKit into the folder /products as 'hero'" -2. "Create a folder called /products/2026-spring" -3. "Move the file 'hero' into /products/2026-spring" -``` +1. Upload a photo https://ik.imagekit.io/demo/medium_cafe_B1iTdD0C.jpg as coffee.jpg to my Imagekit DAM +2. Create a folder called /products/2026-spring" in Imagekit +3. Move the file 'coffee.jpg' into /products/2026-spring" in Imagekit ### Example 2: Search and filter your library -```yaml -1. "Find all image files tagged 'banner' created in the last 7 days" -2. "List the 20 most recent videos in the /marketing folder" -3. "Show me the details and tags for file ID " -``` +1. Find all image files uploaded in last 7 days in Imagekit +2. Find all files having Brand as Nike (custom metadata). +3. Show me the details and tags for the above files ### Example 3: Tag and update metadata -```yaml -1. "Add the tags 'featured' and 'homepage' to file ID " -2. "List my custom metadata fields" -3. "Set the custom metadata field 'campaign' to 'spring-2026' on file ID " -``` - -### Example 4: Build a transformation URL - -```yaml -1. "Generate a URL for 'hero.jpg' resized to 800x600 with auto format and quality" -2. "Create a thumbnail URL for 'hero.jpg' at 200x200 cropped to a face" -``` +1. Add the tags 'featured' and 'homepage' to file ID 690db96c5c7cd75eb8bfd61c in Imagekit +2. List my custom metadata fields +3. Set the custom metadata field 'Brand' to 'ADIDAS Originals' on file ID 6a4789ee5c7cd75eb8f8126c ## Privacy Policy From eedc8a80220e260c5b2082b01e8a6dfb7c214cd3 Mon Sep 17 00:00:00 2001 From: Shivam Kaushik Date: Fri, 3 Jul 2026 15:52:26 +0530 Subject: [PATCH 3/5] docs(readme): update documentation links for clarity and accuracy --- README.md | 2 +- packages/mcp-server/README.md | 10 +++------- packages/mcp-server/manifest.json | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 78ee5b83..2acd8528 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The ImageKit Node.js SDK is a comprehensive library designed to simplify the int The full API of this library is documented in [api.md](api.md). All request parameters and response types are fully typed and importable, offering unparalleled TypeScript support. This ensures that you can rely on accurate type definitions and enjoy a smooth development workflow with modern editors. -For additional details, refer to the [ImageKit REST API documentation](https://imagekit.io/docs/api-reference). +For additional details, refer to the [ImageKit documentation](https://imagekit.io/docs/). If you are looking to integrate file uploads in browsers, use one of our [frontend SDKs](https://imagekit.io/docs/quick-start-guides#front-end). diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 9a3e29f4..08969e66 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -138,17 +138,15 @@ your requests. See ImageKit's privacy policy for full details: server) is used only to authenticate ImageKit API calls. Executed code runs in an isolated sandbox with network access restricted to the ImageKit API hosts; it cannot read the host process environment or other secrets. -- **Usage & storage**: an optional `intent` string may be logged to improve the service. - ImageKit does not sell your data. Asset data is stored in your own ImageKit account. - **Third-party sharing**: none beyond the ImageKit API required to perform your request. - **Retention**: operational logs are retained per ImageKit's standard retention policy. -- **Contact**: [developer@imagekit.io](mailto:developer@imagekit.io). +- **Contact**: [support@imagekit.io](mailto:support@imagekit.io). ## Support -- **Documentation**: [https://imagekit.io/docs/api-reference](https://imagekit.io/docs/api-reference) +- **Documentation**: [https://imagekit.io/docs/](https://imagekit.io/docs/) - **Issues**: [https://github.com/imagekit-developer/imagekit-nodejs/issues](https://github.com/imagekit-developer/imagekit-nodejs/issues) -- **Email**: [developer@imagekit.io](mailto:developer@imagekit.io) +- **Email**: [imagekit-developer@imagekit.io](mailto:imagekit-developer@imagekit.io) ### Troubleshooting @@ -157,5 +155,3 @@ your requests. See ImageKit's privacy policy for full details: runs your code in a Deno sandbox. - **Authentication errors** — verify `IMAGEKIT_PRIVATE_KEY` (starts with `private_`) is set and valid in the [ImageKit dashboard](https://imagekit.io/dashboard/developer/api-keys). -- **Tool times out** — individual API requests time out at 30s and total execution at - ~5 minutes; narrow your query with filters or paginate within a single `execute` call. diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index 0de83247..e737d0c5 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -13,7 +13,7 @@ "url": "git+https://github.com/imagekit-developer/imagekit-nodejs.git" }, "homepage": "https://github.com/imagekit-developer/imagekit-nodejs/tree/main/packages/mcp-server#readme", - "documentation": "https://imagekit.io/docs/api-reference", + "documentation": "https://imagekit.io/docs/", "icon": "icon.png", "privacy_policies": [ "https://imagekit.io/privacy-policy/" From 579448b1608bbe75aecaaa6c088e2a35b9e25c8a Mon Sep 17 00:00:00 2001 From: Shivam Kaushik Date: Sun, 5 Jul 2026 23:04:46 +0530 Subject: [PATCH 4/5] fix(mcp-server): correct email formatting in manifest and package files --- packages/mcp-server/README.md | 4 ++-- packages/mcp-server/manifest.json | 2 +- packages/mcp-server/package.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 08969e66..61fc5129 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -140,13 +140,13 @@ your requests. See ImageKit's privacy policy for full details: read the host process environment or other secrets. - **Third-party sharing**: none beyond the ImageKit API required to perform your request. - **Retention**: operational logs are retained per ImageKit's standard retention policy. -- **Contact**: [support@imagekit.io](mailto:support@imagekit.io). +- **Contact**: [admin@imagekit.io>](mailto:admin@imagekit.io>). ## Support - **Documentation**: [https://imagekit.io/docs/](https://imagekit.io/docs/) - **Issues**: [https://github.com/imagekit-developer/imagekit-nodejs/issues](https://github.com/imagekit-developer/imagekit-nodejs/issues) -- **Email**: [imagekit-developer@imagekit.io](mailto:imagekit-developer@imagekit.io) +- **Email**: [developer@imagekit.io>](mailto:developer@imagekit.io>) ### Troubleshooting diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index e737d0c5..c3747aa2 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -6,7 +6,7 @@ "long_description": "The official MCP server for ImageKit. Upload, search, organize images, videos, and files in your ImageKit media library. Manage folders, tags, and custom metadata by writing code against the ImageKit TypeScript SDK, executed in an isolated sandbox with access limited to the ImageKit API.", "author": { "name": "Image Kit", - "email": "developer@imagekit.io" + "email": "developer@imagekit.io>" }, "repository": { "type": "git", diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 94b3f755..9a4e1511 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -2,7 +2,7 @@ "name": "@imagekit/api-mcp", "version": "7.9.1", "description": "The official MCP Server for the Image Kit API", - "author": "Image Kit ", + "author": "Image Kit >", "types": "dist/index.d.ts", "main": "dist/index.js", "type": "commonjs", @@ -93,4 +93,4 @@ "default": "./dist/*.mjs" } } -} +} \ No newline at end of file From 6dbebd05493dbe43d0352b8c06271e50975cc167 Mon Sep 17 00:00:00 2001 From: Shivam Kaushik Date: Sun, 5 Jul 2026 23:05:30 +0530 Subject: [PATCH 5/5] docs(readme): fix folder path formatting in examples for clarity --- packages/mcp-server/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 61fc5129..bd356d70 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -111,8 +111,8 @@ call `search_docs` to look up the right SDK methods and then `execute` to run th ### Example 1: Upload and organize 1. Upload a photo https://ik.imagekit.io/demo/medium_cafe_B1iTdD0C.jpg as coffee.jpg to my Imagekit DAM -2. Create a folder called /products/2026-spring" in Imagekit -3. Move the file 'coffee.jpg' into /products/2026-spring" in Imagekit +2. Create a folder called "/products/2026-spring" in Imagekit +3. Move the file 'coffee.jpg' into "/products/2026-spring" in Imagekit ### Example 2: Search and filter your library