From 1c7c1fedcb7e6a97287905ecc243378c53cad594 Mon Sep 17 00:00:00 2001 From: Shivam Kaushik Date: Fri, 3 Jul 2026 15:14:22 +0530 Subject: [PATCH 1/3] 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/3] 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/3] 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/"