{"_id":"@akrym1582/azstorage-mcp-server","_rev":"2-f28eb317e5f09115006eccbb5ef2ca76","name":"@akrym1582/azstorage-mcp-server","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.2":{"name":"@akrym1582/azstorage-mcp-server","version":"1.0.2","keywords":["azure","storage","mcp","blob","queue","table","model-context-protocol","llm","ai"],"author":{"name":"akrym1582"},"license":"MIT","_id":"@akrym1582/azstorage-mcp-server@1.0.2","maintainers":[{"name":"akrym1582","email":"aki.ymnk+n1582@gmail.com"}],"homepage":"https://github.com/akrym1582/azstorage-mcp-server#readme","bugs":{"url":"https://github.com/akrym1582/azstorage-mcp-server/issues"},"bin":{"azstorage-mcp-server":"dist/index.js"},"dist":{"shasum":"634b6490e027f7093d8405e1432801eb62565707","tarball":"https://registry.npmjs.org/@akrym1582/azstorage-mcp-server/-/azstorage-mcp-server-1.0.2.tgz","fileCount":28,"integrity":"sha512-rljvYg6JtFWWhT+pi+OcbkkrjlXwASABVmXn6XyILXczaU5VbnPFnQFnrr71mwA7Gbrkss+8Fa72R4IRj6qk0Q==","signatures":[{"sig":"MEYCIQCDHEc0HDDyFzmsiUzMGvy2rgwgbwNpvzRe2wZubNthZwIhAI7gzrAMyxoEEiFfqs4XTlhFRNXxNWWSM3ktnT8zBhOo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akrym1582%2fazstorage-mcp-server@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63926},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5cfd696d1ec9b918f916c272637de4e22f5ea789","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"akrym1582","email":"aki.ymnk+n1582@gmail.com"},"repository":{"url":"git+https://github.com/akrym1582/azstorage-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Read-only Azure Storage MCP Server for Blob, Queue, and Table Storage","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@azure/identity":"^4.13.1","@azure/data-tables":"^13.3.2","@azure/storage-blob":"^12.31.0","@azure/storage-queue":"^12.29.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/azstorage-mcp-server_1.0.2_1774267574399_0.5523585507028757","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@akrym1582/azstorage-mcp-server","version":"1.0.3","description":"Read-only Azure Storage MCP Server for Blob, Queue, and Table Storage","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"bin":{"azstorage-mcp-server":"dist/index.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","start":"node dist/index.js","dev":"tsx src/index.ts","test":"vitest run"},"engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/akrym1582/azstorage-mcp-server.git"},"keywords":["azure","storage","mcp","blob","queue","table","model-context-protocol","llm","ai"],"author":{"name":"akrym1582"},"license":"MIT","bugs":{"url":"https://github.com/akrym1582/azstorage-mcp-server/issues"},"homepage":"https://github.com/akrym1582/azstorage-mcp-server#readme","dependencies":{"@azure/data-tables":"^13.3.2","@azure/identity":"^4.13.1","@azure/storage-blob":"^12.31.0","@azure/storage-queue":"^12.29.0","@modelcontextprotocol/sdk":"^1.27.1"},"devDependencies":{"@types/node":"^25.5.0","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.1.0"},"_id":"@akrym1582/azstorage-mcp-server@1.0.3","gitHead":"58f98b0869c00e15cc65aeba42839d9c9ae83cee","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-HiJata+1Th4ClWb5M5FU8EvAi8Or1o5ZLP1l0bEublQuZQkztZKeYlfc2RCju1qgPELXGYL69vRXT2wTxBk7nw==","shasum":"404a1ca35ea6297a96cdb539553b949fb5aaad59","tarball":"https://registry.npmjs.org/@akrym1582/azstorage-mcp-server/-/azstorage-mcp-server-1.0.3.tgz","fileCount":28,"unpackedSize":66002,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@akrym1582%2fazstorage-mcp-server@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB93bPGK/RGCTrPFlPuZOsTH/ehvLR+X4dFXjhwdUW2aAiA06gncQ93HgCig5vrsn9cwBP6gLctKkpmb8Q5RX3DjqQ=="}]},"_npmUser":{"name":"akrym1582","email":"aki.ymnk+n1582@gmail.com"},"directories":{},"maintainers":[{"name":"akrym1582","email":"aki.ymnk+n1582@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/azstorage-mcp-server_1.0.3_1774353783797_0.052062810249156044"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T12:06:14.307Z","modified":"2026-03-24T12:03:04.254Z","1.0.2":"2026-03-23T12:06:14.561Z","1.0.3":"2026-03-24T12:03:03.940Z"},"bugs":{"url":"https://github.com/akrym1582/azstorage-mcp-server/issues"},"author":{"name":"akrym1582"},"license":"MIT","homepage":"https://github.com/akrym1582/azstorage-mcp-server#readme","keywords":["azure","storage","mcp","blob","queue","table","model-context-protocol","llm","ai"],"repository":{"type":"git","url":"git+https://github.com/akrym1582/azstorage-mcp-server.git"},"description":"Read-only Azure Storage MCP Server for Blob, Queue, and Table Storage","maintainers":[{"name":"akrym1582","email":"aki.ymnk+n1582@gmail.com"}],"readme":"# @akrym1582/azstorage-mcp-server\n\nRead-only Azure Storage MCP (Model Context Protocol) Server for Blob Storage, Queue Storage, and Table Storage.\n\n[![npm version](https://img.shields.io/npm/v/%40akrym1582%2Fazstorage-mcp-server)](https://www.npmjs.com/package/%40akrym1582%2Fazstorage-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- **Read-only** — no write, update, or delete operations\n- **Blob Storage** — list containers, list blobs (flat & tree), read text content, download binary content\n- **Queue Storage** — list queues, peek messages (visibility unchanged)\n- **Table Storage** — list tables, get entity by key, query with OData filter\n- **Cursor-based pagination** — consistent `cursor` / `hasMore` pattern for all list operations\n- **LLM-optimized responses** — compact JSON, truncated text, no unnecessary fields\n- **Connection string or Managed Identity** authentication via environment variables\n\n## Installation\n\n```bash\nnpm install -g @akrym1582/azstorage-mcp-server\n```\n\nOr use without installing via `npx`:\n\n```bash\nnpx @akrym1582/azstorage-mcp-server\n```\n\n## Authentication\n\nSet **one** of the following environment variables before starting the server:\n\n| Variable | Description |\n|---|---|\n| `AZURE_STORAGE_CONNECTION_STRING` | Full connection string (takes priority) |\n| `AZURE_STORAGE_ACCOUNT_NAME` | Storage account name; uses `DefaultAzureCredential` (Managed Identity, Azure CLI, etc.) |\n\n## MCP Client Configuration\n\n### Claude Desktop\n\nAdd the following to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"azstorage\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@akrym1582/azstorage-mcp-server\"],\n      \"env\": {\n        \"AZURE_STORAGE_CONNECTION_STRING\": \"<your-connection-string>\"\n      }\n    }\n  }\n}\n```\n\nTo use Managed Identity instead, replace the `env` block with:\n\n```json\n\"env\": {\n  \"AZURE_STORAGE_ACCOUNT_NAME\": \"<your-storage-account-name>\"\n}\n```\n\n### Other MCP clients (Cursor, VS Code, etc.)\n\nUse the same pattern with `npx -y @akrym1582/azstorage-mcp-server` as the command and supply one of the authentication environment variables.\n\n## MCP Tools\n\n### Blob Storage\n\n| Tool | Description |\n|---|---|\n| `storage.blobs.listContainers` | List containers. Params: `prefix`, `pageSize`, `cursor` |\n| `storage.blobs.listFlat` | Flat blob list. Params: `container`*, `prefix`, `pageSize`, `cursor` |\n| `storage.blobs.listTree` | Hierarchical blob list. Params: `container`*, `prefix`, `delimiter`, `pageSize`, `cursor` |\n| `storage.blobs.read` | Read blob metadata + inline text (≤8 KB). Params: `container`*, `blob`*, `maxBytes` |\n| `storage.blobs.download` | Download blob chunk as base64. Params: `container`*, `blob`*, `offset`, `length` |\n\n### Queue Storage\n\n| Tool | Description |\n|---|---|\n| `storage.queues.list` | List queues. Params: `prefix`, `pageSize`, `cursor` |\n| `storage.queues.peek` | Peek messages (read-only, no visibility change). Params: `queue`*, `maxMessages` |\n\n### Table Storage\n\n| Tool | Description |\n|---|---|\n| `storage.tables.list` | List tables. Params: `pageSize`, `cursor` |\n| `storage.tables.get` | Get entity by key. Params: `table`*, `partitionKey`*, `rowKey`*, `select` |\n| `storage.tables.query` | Query with OData filter. Params: `table`*, `filter`, `select`, `pageSize`, `cursor` |\n\n`*` = required\n\n## Response Format\n\nAll list operations return a common envelope:\n\n```json\n{\n  \"items\": [...],\n  \"page\": {\n    \"pageSize\": 20,\n    \"cursor\": \"opaque-next-cursor-or-null\",\n    \"hasMore\": true,\n    \"totalCount\": null,\n    \"totalPages\": null,\n    \"countMode\": \"disabled\"\n  },\n  \"summary\": { \"returned\": 20 }\n}\n```\n\nUse `cursor` from the previous response to fetch the next page.\n\n## Development\n\n```bash\ngit clone https://github.com/akrym1582/azstorage-mcp-server.git\ncd azstorage-mcp-server\nnpm install\nnpm run build   # compile TypeScript → dist/\nnpm test        # run unit tests\nnpm run dev     # run with tsx (no compilation needed)\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}