AI 에이전트를 통해 S3, Cloudflare R2 또는 Backblaze B2 버킷에 파일을 업로드하고 링크를 관리합니다.
다른 이름 getaktar/cli, cli, @getaktar/cli
- 스타
- 2
- Tools
- —
- 다운로드, 30일
- 319
- 최신 버전
- 0.6.0
- 마지막 커밋
- 2026년 11월 1일
- 라이선스
- MIT
Aktar MCP란?
Aktar은(는) MCP server입니다. AI 에이전트를 통해 S3, Cloudflare R2 또는 Backblaze B2 버킷에 파일을 업로드하고 링크를 관리합니다.
프로젝트 README에서 생성된 요약
Aktar MCP server 정보
Aktar는 개발자가 AI 에이전트를 통해 S3, Cloudflare R2 또는 Backblaze B2 버킷으로의 파일 업로드를 관리할 수 있는 방법을 제공합니다. MCP server를 실행하면 Claude, Cursor 또는 VS Code와 같은 도구를 Mac 또는 Windows의 기존 Aktar 데스크톱 애플리케이션에 연결할 수 있습니다. 이 설정을 통해 스토리지 키와 민감한 인증 정보가 에이전트에 노출되지 않고 로컬 앱 내에 안전하게 유지됩니다.
이 server에는 upload_file, replace_file, search_uploads와 같이 클라우드 스토리지와 상호작용하기 위한 다양한 도구가 포함되어 있습니다. 통합 단축 서비스를 통한 단축 링크 생성, QR 코드 생성 또는 설정된 시간이 지나면 만료되는 임시 presigned URL 생성과 같은 복잡한 작업을 처리할 수 있습니다. 보안 유지를 위해 root flag를 사용하여 server를 특정 디렉토리로 제한할 수 있으며, SSH 키, .env 파일 또는 비밀번호 데이터베이스와 같은 민감한 파일의 업로드를 자동으로 방지합니다.
활용 사례
- 1특정 메타데이터와 함께 파일 업로드AI 에이전트가 문서에 사용자 지정 이름과 만료 날짜를 지정하여 특정 대상 폴더로 업로드할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Aktar MCP 설치 방법
형식 확인: 2026년 11월 10일Claude Code에 Aktar MCP 설치
$ claude mcp add cli -- npx -y @getaktar/cliCursor에 Aktar MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"@getaktar/cli"
]
}
}
}VS Code에 Aktar MCP 설치
.vscode/mcp.json
{
"servers": {
"cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@getaktar/cli"
]
}
}
}Claude Desktop에 Aktar MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"@getaktar/cli"
]
}
}
}Codex에 Aktar MCP 설치
~/.codex/config.toml
[mcp_servers.cli] command = "npx" args = ["-y", "@getaktar/cli"]
Gemini CLI에 Aktar MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"@getaktar/cli"
]
}
}
}자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능getaktar/cli is public and reachablegithub.com/getaktar/cli ↗통과
- 패키지가 이 저장소를 소스로 지정@getaktar/cli names getaktar/cli as sourcenpmjs.com/package/@getaktar/cli ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-01github.com/getaktar/cli ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from @getaktar/cli통과
- 패키지와 의존성에 심각한 보안 권고 없음1 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 endpoint가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기
The aktar command talks to the Aktar app on your Mac or Windows PC, so it uses the destinations, keys, path templates and link settings you already set up there. Your storage keys never leave the app.
$ aktar upload screenshot.png
https://files.example.com/2026/09/7f3c2a91.png
Install
npm install -g @getaktar/cli
# or
brew install getaktar/tap/aktar-cli
Or run it without installing: npx @getaktar/cli upload file.png.
Requires Node.js 18 or later and Aktar for Mac 0.18.0 or Aktar for Windows 0.11.0 or later (earlier versions of the CLI work with Aktar for Mac 0.4.0 and later).
Connect to Aktar
- In Aktar, open Settings > Integrations and turn on Allow local connections.
- Copy the token shown there.
- Run:
aktar login
and paste the token when asked (avoid aktar login --token <token>: other programs can see command lines, and it stays in your shell history). It's checked against Aktar and saved to ~/.config/aktar/cli.json (%APPDATA%\aktar\cli.json on Windows), readable only by you. You can also pipe it in (pbpaste | aktar login) or set AKTAR_TOKEN (and AKTAR_PORT if you changed the port) instead.
Usage
aktar upload report.pdf # prints the link
aktar upload *.png -f markdown # one Markdown image per file
aktar upload build.zip -d Builds # pick a destination by name or ID
aktar upload notes.txt --folder docs/2026 # keep the name, upload into a folder
aktar upload IMG_4021.jpg --name cover # upload as cover.jpg
aktar upload log.txt --expires 7 # delete after 7 days
aktar upload --clipboard # the file or image on the clipboard
aktar upload demo.mp4 --qr # the link and a QR code to open it on your phone
aktar upload talk.pdf --short # a short link from the destination's link shortener
aktar upload photo.jpg --json # full details as JSON
aktar status # which Aktar and destination you're connected to
aktar destinations # list destinations (* marks the selected one)
aktar history invoice -n 5 # search recent uploads
aktar replace 0B6C2F8E-3D1A-4C55-9E2B-7A41D0C3E9F1 v2.png # new file, same link
aktar replace docs/guide.pdf guide.pdf -d Docs # replace a key in a destination's bucket
aktar qr https://example.com # a QR code of any link or text
aktar qr 0B6C2F8E-3D1A-4C55-9E2B-7A41D0C3E9F1 # a QR code of an upload in history
aktar short 0B6C2F8E-3D1A-4C55-9E2B-7A41D0C3E9F1 # a short link for an upload in history
Without -d, files go to the destination selected in Aktar's menu bar. Uploads show up in Aktar's history like any other.
--format chooses what's printed: url (default), markdown, html, or custom (your template from Aktar). --expires takes 1, 7, 14 or 30 days and needs Aktar's auto-delete rules on that destination; without it, files are kept.
--name uploads a single file under another name: it's what {filename} and {ext} in the destination's path template become, and what Aktar's history shows. If the name has no extension, the file's own is added (--name cover uploads IMG_4021.jpg as cover.jpg); if it has one, it's used as given. With --folder, it's the name inside the folder.
If the same file (same contents, destination and expiry) is already in the bucket, Aktar doesn't upload it again and gives you the existing link. aktar prints the link as usual and notes it on stderr (aktar: photo.jpg: already uploaded, reused the existing link), so scripts reading stdout still get one link per file. This needs Aktar for Mac 0.10.0 or Windows 0.3.0.
Short links
If a destination has a link shortener set up in Aktar (Shlink, YOURLS, Kutt, Dub, Short.io or your own), Aktar shortens its links following that destination's rules, and aktar prints the short link. --format uses it too: the Markdown, HTML and custom formats come from Aktar with the short link in them.
--shortmakes a short link for this upload even if the destination's "Only shorten links longer than" rule would skip it. It fails if the destination has no link shortener.--no-shortmakes none this time.
If Aktar can't make the short link (the shortener is down, say), the upload still goes through: aktar prints the original link and notes it on stderr (aktar: talk.pdf: couldn't make a short link, printed the original link: ...).
aktar short <upload-id|link> makes a short link for an upload already in history, found by its ID, link or short link, and prints it. If it already has one, that's the one printed. --json prints the short link's details (provider, status, clicks when the shortener counts them), --qr adds its QR code. aktar history shows each upload's short link after its link.
Older versions of Aktar, and Aktar for Windows until it has short links, ignore --short and --no-short.
QR codes
aktar upload --qr prints a QR code under each link, so you can open it on your phone. The QR code is always of the link itself (the short link, if there is one), whatever --format prints. It's drawn black on white in the terminal, whatever its theme; when the output isn't a terminal, or NO_COLOR is set, it's drawn without colors (light modules as blocks), which phone cameras read on a light or dark background. --qr can't be combined with --json.
aktar qr <text> shows the QR code of any link or text; quote text with spaces. Given an upload ID from aktar history --json, it shows that upload's link (its short link, if it has one) and its QR code. --png <file> saves the QR code as a PNG instead:
aktar qr https://files.example.com/2026/09/7f3c2a91.png --png link.png
What Aktar does for you
The app does the work per destination, so the CLI needs nothing extra for it:
- Converting images to WebP or AVIF, if the destination is set to
{md5}and{sha256}in path templates, to name files by their contents- Big files: past 5 GB, Aktar uploads in parts and resumes after a dropped connection.
aktarstreams the file to the app, so its size doesn't matter
The link aktar prints is the one for the file as stored, after any conversion.
JSON output
aktar upload --json prints an array with one entry per uploaded file:
[
{
"id": "0B6C…",
"filename": "photo.jpg",
"objectKey": "2026/09/7f3c2a91.jpg",
"url": "https://files.example.com/2026/09/7f3c2a91.jpg",
"shortUrl": null,
"destinationId": "5D1A…",
"destinationName": "Screenshots",
"mimeType": "image/jpeg",
"size": 482113,
"createdAt": "2026-09-30T12:00:00Z",
"expiresAt": null,
"formats": { "url": "…", "markdown": "…", "html": "…", "custom": "…" },
"reused": false
}
]
reused is true when nothing was uploaded because the file was already there; older versions of Aktar leave it out. shortUrl is the upload's short link, or null when it has none; formats already use it. When Aktar couldn't make the short link, shortLinkError says why. aktar history --json has shortUrl too.
Exit codes
| Code | Meaning |
|---|---|
| 0 | Everything worked |
| 1 | At least one upload or request failed (the others still went through) |
| 2 | Bad arguments, or a file that doesn't exist (nothing was uploaded) |
| 3 | Not logged in, Aktar isn't running, its local API is off, the token is wrong, or the app on the port couldn't prove it's Aktar (or is too old to) |
AI agents (MCP and skill)
MCP server
aktar mcp runs a Model Context Protocol server, so Claude, Cursor, VS Code, Codex and other agents can upload through Aktar, find past uploads and make links. Connect Aktar first (aktar login), then add it to your agent with the folder it may upload files from:
claude mcp add aktar -- aktar mcp --root ~/Projects # Claude Code
codex mcp add aktar -- aktar mcp --root ~/Projects # Codex
For Claude Desktop, Cursor, VS Code and others that take a JSON config:
{
"mcpServers": {
"aktar": { "command": "aktar", "args": ["mcp", "--root", "/Users/you/Projects"] }
}
}
Without a global install, use "command": "npx", "args": ["-y", "@getaktar/cli", "mcp", "--root", "/Users/you/Projects"].
| Tool | What it does |
|---|---|
upload_file |
Upload a file (destination, name, folder, expiry, short link optional) and return its link, Markdown and HTML |
upload_clipboard |
Upload what's on the clipboard (left out with --root) |
replace_file |
Write a new file over an upload or any file in a bucket, keeping its link (only with --allow-replace or --allow-delete; Mac 0.14.0 / Windows 0.7.0) |
create_short_link |
A short link for an upload, from its destination's link shortener |
search_uploads |
Search upload history (with each upload's short link) |
list_destinations |
Destinations and what file types each is used for |
list_bucket |
Browse a bucket's folders and files |
create_temporary_link |
A link that stops working after a while (presigned URL). This gives access: anyone with the link can download the file until it expires, even from a private bucket. At most 60 minutes unless --max-link-minutes allows more |
get_thumbnail |
A preview image of an upload (Mac 0.13.0 / Windows 0.6.0) |
list_watched_folders |
Watched folders and their status |
get_status |
Check the connection |
delete_upload |
Delete an upload from its bucket (only with --allow-delete) |
Uploading publishes a file, so keep an eye on what your agent sends. Your agent asks before calling a tool unless you allow it, and the server limits what it can reach:
--root <folder>: only upload files from this folder (repeat for more). Paths are resolved, symlinks included, before they're checked. Without--root, files come only from the folder the server runs in (agents usually start it in your project). If that's your home folder or the top of the disk, as some apps do, local files aren't uploaded at all until you add--root.--root ~or--root /allow more, if you really want that.- Secrets are never uploaded, wherever they are: SSH and private keys (
id_rsa,id_ed25519,*.pem,*.p12,*.pfx...),.envfiles,~/.ssh,~/.gnupg,~/.aws,~/.azure,~/.config/gcloud,~/.kube,~/.docker,~/.netrc,~/.npmrc,~/.pypirc,~/.git-credentials, Aktar's own config, the Keychain, browser profiles and password databases (*.kdbx). Files with several hard links aren't uploaded either. To share one of these, upload it yourself withaktar upload. --read-only: only the tools that change nothing in a bucket (search, list, temporary links, thumbnails).--allow-replace: also offerreplace_file, which overwrites files in a bucket. It's left out by default because the old contents are gone, like a delete.--allow-delete: also offerdelete_upload(andreplace_file).--max-link-minutes <n>: letcreate_temporary_linkmake links that work for up tonminutes (default 60, at most 10080, 7 days).--log <file>: append each tool call (time, tool, arguments, result) to a file only you can read, to see later what an agent did.
claude mcp add aktar -- aktar mcp --root ~/Projects --root ~/Desktop --allow-replace
Tool results start with a note that file names, keys and messages inside come from files and buckets, so agents treat them as data rather than instructions; control and text-direction characters are removed from them.
The server speaks both the current per-request protocol (2026-07-28) and the earlier initialize versions (2024-11-05 to 2025-11-25).
Agent skill
Agents that use skills but not MCP can use the CLI directly. aktar skill prints a SKILL.md that teaches them how:
mkdir -p ~/.claude/skills/aktar && aktar skill > ~/.claude/skills/aktar/SKILL.md
Checking it's Aktar
Before sending the token, aktar asks the app on the port to prove it has the same token (without sending it), so if Aktar isn't running and another program is listening on its port, that program gets neither the token nor your files. This needs Aktar for Mac 0.18.0 or Aktar for Windows 0.11.0 or later; with an older Aktar, aktar stops and asks you to update.
Typora
In Typora, open Settings > Image > Image Upload, choose Custom Command and enter:
aktar upload
Typora passes the image paths and reads one link per line. Click Test Uploader to check it.
Links
- Website: https://getaktar.com/cli/
- Aktar for Mac and Windows: https://getaktar.com
- Homebrew:
brew install getaktar/tap/aktar-cli
License
MIT
Aktar MCP 질문
Aktar MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add cli -- npx -y @getaktar/cli를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Aktar MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
MCP server를 Aktar에 어떻게 연결하나요?
먼저 Aktar 앱 설정에서 'Allow local connections'를 활성화한 후, CLI에서 aktar login을 사용하여 연결합니다.
AI 에이전트가 SSH 키와 같은 민감한 파일을 업로드할 수 있나요?
아니요, 이 server는 SSH 키, .env 파일 또는 설정 파일과 같은 보안 정보를 절대 업로드하지 않도록 설계되었습니다.
버킷에 이미 존재하는 파일을 업로드하면 어떻게 되나요?
Aktar는 파일을 다시 업로드하지 않고 기존 링크를 제공합니다.