{"_id":"4everland-nft-uploader","_rev":"2-cc5a2dfb8591bc7107f952beea964305","name":"4everland-nft-uploader","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"4everland-nft-uploader","version":"0.1.0","_id":"4everland-nft-uploader@0.1.0","maintainers":[{"name":"veithly","email":"veithly@live.com"}],"bin":{"4everland-nft-uploader":"build/index.js"},"dist":{"shasum":"43270c7bc6ffb9359669a8b6ef6acb41ba29a896","tarball":"https://registry.npmjs.org/4everland-nft-uploader/-/4everland-nft-uploader-0.1.0.tgz","fileCount":3,"integrity":"sha512-oSeZCpO/gmkrE+rXOEHwdcG73AvaRTMteYH4WsVazVmRbRD1bmmRE6+mxW7wQkQqd+SHbX+usUQYWTEBQV8hGA==","signatures":[{"sig":"MEUCIAjt9Y+BSWq6wKPmJGQCSKPJB2vbUsi/DK4YHuJnEJH5AiEA6AMqFL4ayFfWI/WwFFSwRpIfQSv6E845l9Y3LfGUiI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16021},"type":"module","private":false,"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","watch":"tsc --watch","prepare":"npm run build","inspector":"npx @modelcontextprotocol/inspector build/index.js"},"_npmUser":{"name":"veithly","email":"veithly@live.com"},"_npmVersion":"10.8.1","description":"Uploads NFT images and metadata to 4EVERLAND S3 storage","directories":{},"_nodeVersion":"20.16.0","dependencies":{"@ipld/dag-pb":"^4.1.3","multiformats":"^13.3.2","@aws-sdk/client-s3":"^3.797.0","@modelcontextprotocol/sdk":"0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.24"},"_npmOperationalInternal":{"tmp":"tmp/4everland-nft-uploader_0.1.0_1745895602317_0.27048692279437203","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"4everland-nft-uploader","version":"0.1.1","description":"Uploads NFT images and metadata to 4EVERLAND S3 storage","private":false,"type":"module","bin":{"4everland-nft-uploader":"build/index.js"},"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","prepare":"npm run build","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector build/index.js"},"dependencies":{"@aws-sdk/client-s3":"^3.797.0","@modelcontextprotocol/sdk":"0.6.0"},"devDependencies":{"@types/node":"^20.11.24","typescript":"^5.3.3"},"_id":"4everland-nft-uploader@0.1.1","_nodeVersion":"20.16.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-QzoT7mNBF5TuShs0qWhEhjh50xnxX/7QNEzfNSMDadqT3rw2K1trG2Fc0eopg/rskyRgU9mNw6jcndc8Ogn6YQ==","shasum":"3082810899705e26adc0140c3208ba2c4f164291","tarball":"https://registry.npmjs.org/4everland-nft-uploader/-/4everland-nft-uploader-0.1.1.tgz","fileCount":3,"unpackedSize":15893,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDd3JAWGRR6lqpnUC6s03oNOQguWku5mfvPFC8QBuHT1AiEA7TIMJIdKqlQ4uJJQccs11mXFn0KbMF0ANfEe+x25sm8="}]},"_npmUser":{"name":"veithly","email":"veithly@live.com"},"directories":{},"maintainers":[{"name":"veithly","email":"veithly@live.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/4everland-nft-uploader_0.1.1_1745895636921_0.9498114328331255"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-29T03:00:02.316Z","modified":"2025-04-29T03:00:37.280Z","0.1.0":"2025-04-29T03:00:02.492Z","0.1.1":"2025-04-29T03:00:37.096Z"},"description":"Uploads NFT images and metadata to 4EVERLAND S3 storage","maintainers":[{"name":"veithly","email":"veithly@live.com"}],"readme":"Okay, the server name in `src/index.ts` is updated. Now I will rewrite the `README.md` to reflect the changes to \"4EVERLAND NFT Uploader\", including the updated functionality, installation steps, usage examples, and the requirement for 4EVERLAND environment variables.\n\nHere is the new content for `README.md`:\n\n```markdown\n# 4EVERLAND NFT Uploader MCP Server\n\n[![npm version](https://badge.fury.io/js/4everland-nft-uploader.svg)](https://badge.fury.io/js/4everland-nft-uploader) <!-- Update if published -->\n\nA Model Context Protocol (MCP) server that provides a tool to upload NFT images and metadata to [4EVERLAND](https://www.4everland.org/) S3-compatible storage. It calculates IPFS CIDs for the image and metadata and uses these CIDs as the object keys in the S3 bucket.\n\n## Features\n\n*   Provides an MCP tool `upload_nft_image`.\n*   Reads an image file locally.\n*   Calculates the IPFS CID (v1, raw codec) for the image content.\n*   Generates standard NFT metadata JSON (including name, description, and the calculated IPFS image URI `ipfs://<image_cid>`).\n*   Calculates the IPFS CID (v1, raw codec) for the metadata JSON content.\n*   Uploads the image file to a configured 4EVERLAND S3 bucket, using the image CID as the object key.\n*   Uploads the metadata JSON file to the configured 4EVERLAND S3 bucket, using the metadata CID as the object key.\n*   Requires 4EVERLAND S3 credentials (Access Key, Secret Key, Bucket Name) and optionally an endpoint to be configured via environment variables.\n*   Returns the calculated CIDs, IPFS URIs, S3 keys, and the metadata content.\n\n## Prerequisites\n\nYou need the following environment variables set in the environment where this MCP server runs:\n\n*   `FOUR_EVER_ACCESS_KEY`: Your 4EVERLAND S3 Access Key ID.\n*   `FOUR_EVER_SECRET_KEY`: Your 4EVERLAND S3 Secret Access Key.\n*   `FOUR_EVER_BUCKET_NAME`: The name of your 4EVERLAND S3 bucket.\n*   `FOUR_EVER_ENDPOINT` (Optional): The S3 endpoint URL. Defaults to `https://endpoint.4everland.co`.\n\n## Installation (as an MCP Server)\n\n1.  **Clone or Download:** Get the server code.\n    ```bash\n    # Example if cloned from Git\n    git clone <repository_url> # Replace with your repo URL\n    cd 4everland-nft-uploader  # Or your chosen directory name\n    npm install\n    npm run build\n    ```\n2.  **Configure MCP Client:** Add the server configuration to your MCP client's settings file (e.g., `settings.mcp_settings.json` for Roo/Cursor). Make sure to use the **absolute path** to the `build/index.js` file within the server's directory and set the required environment variables.\n\n    ```json\n    {\n      \"mcpServers\": {\n        // ... other servers\n        \"4everland-nft-uploader\": { // Use the new name\n          \"command\": \"node\",\n          \"args\": [\n            // --- IMPORTANT: Replace with the ACTUAL absolute path ---\n            // Example Windows: \"C:/Users/YourUser/AppData/Roaming/Roo-Code/MCP/4everland-nft-uploader/build/index.js\"\n            // Example macOS: \"/Users/YourUser/Library/Application Support/Roo-Code/MCP/4everland-nft-uploader/build/index.js\"\n            \"<ABSOLUTE_PATH_TO_PROJECT>/build/index.js\"\n          ],\n          \"environment\": { // Add environment variables here\n            \"FOUR_EVER_ACCESS_KEY\": \"YOUR_ACCESS_KEY\",\n            \"FOUR_EVER_SECRET_KEY\": \"YOUR_SECRET_KEY\",\n            \"FOUR_EVER_BUCKET_NAME\": \"your-bucket-name\"\n            // \"FOUR_EVER_ENDPOINT\": \"https://custom.endpoint.com\" // Optional\n          },\n          \"disabled\": false,\n          \"alwaysAllow\": []\n        }\n        // ...\n      }\n    }\n    ```\n3.  **Restart MCP Client:** Ensure your MCP client recognizes the new server and its environment variables.\n\n## Usage (via MCP Tool)\n\nUse the `upload_nft_image` tool provided by this server through your MCP client.\n\n**Tool:** `upload_nft_image`\n**Server Name:** `4everland-nft-uploader` (or whatever you named it in the config)\n\n**Arguments:**\n\n*   `image_path` (string, required): Absolute path to the image file to upload.\n*   `name` (string, required): The name for the NFT.\n*   `description` (string, required): The description for the NFT.\n\n**Example MCP Client Call:**\n\n```xml\n<mcp:call name=\"upload_nft_image\" args=\"['/path/to/image.png', 'My NFT', 'This is a description']\" />\n```\n\n**Expected Output:**\n\n```json\n{\n  \"image_cid\": \"Qm...\",\n  \"metadata_cid\": \"Qm...\",\n  \"s3_image_key\": \"nft-images/image.png\",\n  \"s3_metadata_key\": \"nft-metadata/metadata.json\"\n}\n```\n\n## Notes\n\n*   The `upload_nft_image` tool is designed to work with the `4everland-nft-uploader` server.\n*   The `4everland-nft-uploader` server is a simple MCP server that uploads an NFT image and metadata to 4EVERLAND S3 storage.\n","readmeFilename":"README.md"}