1. Mint a token
Create a Personal Access Token in the dashboard and choose its scopes. The token represents you and is shown only once.
Model Context Protocol
The Dilnaka MCP server lets an AI agent (such as Claude) connect directly to your account, create applications, manage their files — upload, read, list, replace, and delete — and hand files to other people with public, expiring share links, all using the same storage engine, quotas, and access rules as the dashboard and REST API. The agent authenticates with a Personal Access Token and only ever sees applications that belong to you.
Create a Personal Access Token in the dashboard and choose its scopes. The token represents you and is shown only once.
Point your MCP client at the Dilnaka endpoint and pass the token as an Authorization header. The agent discovers the tools automatically.
The agent creates an application that belongs to you, uploads, reads, replaces, and deletes files inside it, and can mint expiring share links to send those files to anyone.
Step 1
Open Dashboard → Access Tokens,
give the token a name, choose its scopes, and copy the value. A token looks like
dlk_pat_… and is shown only once. Store it securely.
| Scope | Grants |
|---|---|
| apps:create | Provision new applications. |
| apps:read | List the applications you own. |
| apps:delete | Delete an application and its files. |
| files:read | List files, read metadata, and get signed URLs. |
| files:write | Upload new files and replace file contents. |
| files:delete | Delete files from an application. |
Step 2
The server speaks the streamable-HTTP MCP transport. Configure your client with the Dilnaka endpoint URL and your token.
Use the full trailing-slash endpoint
https://dilnaka.storage.tsnc.tech/mcp/.
Most MCP clients accept a remote server entry with a URL and custom headers:
__PP_ESCAPED_LEFT_BRACE__
"mcpServers": __PP_ESCAPED_LEFT_BRACE__
"dilnaka": __PP_ESCAPED_LEFT_BRACE__
"url": "https://dilnaka.storage.tsnc.tech/mcp/",
"headers": __PP_ESCAPED_LEFT_BRACE__
"Authorization": "Bearer dlk_pat_your_token_here"
__PP_ESCAPED_RIGHT_BRACE__
__PP_ESCAPED_RIGHT_BRACE__
__PP_ESCAPED_RIGHT_BRACE__
__PP_ESCAPED_RIGHT_BRACE__
For a client that only supports a command (stdio), bridge to the HTTP endpoint with the FastMCP CLI:
fastmcp run https://dilnaka.storage.tsnc.tech/mcp/ --transport stdio
https://dilnaka.storage.tsnc.tech/mcp/,
add your Bearer dlk_pat_... token, and the agent connects and discovers the tools automatically.
Client guides
These are the tested connection settings for the current hosted Dilnaka MCP deployment. More clients can be added here over time without changing the endpoint itself.
In Codex, choose Streamable HTTP and create a custom MCP server with these values:
Dilnaka Storage MCPhttps://dilnaka.storage.tsnc.tech/mcp/MCP_BEARER_TOKENMCP_BEARER_TOKEN=dlk_pat_your_token_here
If the form also asks for a header, use
Authorization
with value
Bearer $__PP_ESCAPED_LEFT_BRACE__MCP_BEARER_TOKEN__PP_ESCAPED_RIGHT_BRACE__.
Use the browser UI in Direct mode. This hosted endpoint now allows the required browser CORS preflight.
Streamable HTTPhttps://dilnaka.storage.tsnc.tech/mcp/DirectAuthorizationBearer dlk_pat_your_token_hereIf you switch to Via Proxy, you must also configure the Inspector proxy token in the Inspector configuration. Direct mode is the simplest tested setup for this server.
Add a remote MCP server entry in your VS Code MCP configuration and point it at the hosted Dilnaka endpoint.
__PP_ESCAPED_LEFT_BRACE__
"type": "streamable-http",
"url": "https://dilnaka.storage.tsnc.tech/mcp/",
"headers": __PP_ESCAPED_LEFT_BRACE__
"Authorization": "Bearer dlk_pat_your_token_here"
__PP_ESCAPED_RIGHT_BRACE__
__PP_ESCAPED_RIGHT_BRACE__
If your VS Code setup supports environment-backed secrets, prefer a token environment variable instead of pasting the PAT directly into a checked-in config file.
In Claude's custom MCP setup, add a remote streamable-HTTP server and use the hosted Dilnaka URL with your bearer token header.
Streamable HTTPhttps://dilnaka.storage.tsnc.tech/mcp/Authorization: Bearer dlk_pat_your_token_hereStep 3
Once connected, the agent can call these tools. Applications are addressed by their slug;
files by their file_id. Every call is checked against the token's scopes and is restricted to apps you own.
| Tool | What it does | Scope |
|---|---|---|
| whoami | Return the token owner and granted scopes. | — |
| create_application | Create a new app (name, plan, region, visibility). | apps:create |
| list_applications | List every app you own. | apps:read |
| delete_application | Delete an app and all of its files. | apps:delete |
| list_files | List files inside an app. | files:read |
| read_file | Get a single file's metadata. | files:read |
| upload_file | Upload a new file (content_base64 or content_text). | files:write |
| replace_file | Overwrite an existing file's contents. | files:write |
| delete_file | Delete a file from an app. | files:delete |
| get_file_url | Return a public or temporary signed download URL. | files:read |
| create_share_link | Create a public, expiring download page for files (omit file_ids to share the whole app). | files:write |
| list_share_links | List share links with status, expiry, and file count. | files:read |
| revoke_share_link | Revoke a link so it immediately stops granting access. | files:write |
| delete_share_link | Permanently delete a share link record. | files:delete |
Provide bytes inline: use content_text for UTF-8 text, or
content_base64 for any binary file. The content type is guessed
from the file name when omitted, and upload rules and storage quotas are enforced exactly like the REST API.
Object storage has no in-place edit, so editing means replacing content.
replace_file overwrites the bytes of an existing file while keeping its
id and storage key stable, then refreshes its size and ETag.
create_share_link mints a public download page — the same one the
dashboard produces — so the agent can hand files to someone who has no Dilnaka account. Pass
file_ids to share a specific selection, or omit it to share every
uploaded file in the app. Set expires_in_seconds (300 seconds to 30 days;
defaults to 7 days) — access is cut off automatically the moment the link expires. The tool returns the shareable
url, the resolved expiresAt, and a token.
Use list_share_links to review a link's
status (active, expired, or revoked) and file count, then
revoke_share_link to cut off access early, or
delete_share_link to remove the record entirely. Because creating a link
exposes the referenced files for public download, it requires the
files:write scope.
"Upload these 8 photos to my 'board-photos' app, then give me one
link I can send to the team that expires in 7 days."
With a token and the endpoint above, your AI agent can provision an application and manage its files end to end. Revoke a token any time from Dashboard → Access Tokens to immediately cut off access.