Erza MCP Server
Hubungkan Claude, Cursor, VS Code, dan klien Model Context Protocol lain ke workspace Erza-mu. Tulis, tulis ulang, jadwalkan, dan terbitkan artikel dari asisten yang sudah kamu pakai.
npx -y @erza-ai/erza-mcp01
Ringkasan
Erza MCP adalah server Model Context Protocol yang membuka workspace Erza-mu sebagai tool. Klien MCP apa pun bisa menampilkan, menulis, menulis ulang, mengekspor, menjadwalkan, dan menerbitkan artikel dengan akun, paket, dan kredit yang sama seperti di aplikasi.
- Binary native untuk tiap platform, dijalankan lewat
npx. Tidak ada lagi yang perlu dipasang. - Hanya satu pengaturan wajib:
ERZA_API_KEY. - 18 tool dengan anotasi MCP (
readOnlyHint,destructiveHint), jadi klien bisa meminta izin sebelum aksi berisiko. - Error terstruktur dengan
codeyang stabil dan flagretryable.
02
Kebutuhan
Pastikan semua ini siap sebelum memasang.
Akun Erza
Paket apa pun bisa. Tool yang membuat konten dengan AI memakai kredit dari dompetmu.
API key
Key pribadi yang diawali
ez_live_, dibuat di Pengaturan → API Keys.Node.js dengan npx
Hanya untuk pemasangan lokal (stdio). Endpoint terkelola tidak butuh instalasi apa pun.
| Sistem operasi | Arsitektur | Binary bawaan |
|---|---|---|
| macOS | arm64 (Apple Silicon), x64 (Intel) | erza-mcp-darwin-<arch> |
| Linux | x64, arm64 | erza-mcp-linux-<arch> |
| Windows | x64, arm64 | erza-mcp-win32-<arch>.exe |
03
Buat API key
Key ini mengenali kamu di Erza API. Setiap pemanggilan tool berjalan sebagai akunmu.
- Masuk ke Erza lalu buka Pengaturan → API Keys.
- Klik Buat API key dan beri nama yang mudah dikenali, misalnya
mcp-laptop. - Langsung salin token
ez_live_…. Token hanya ditampilkan sekali; setelah itu hanya prefix-nya yang terlihat.
04
Pemasangan
Pilih klien dan transport. Tempel key-mu di kolom di bawah agar otomatis terisi di setiap snippet.
Hanya dipakai untuk mengisi snippet di halaman ini. Tetap di browser-mu dan tidak pernah dikirim atau disimpan.
Menjalankan binary native di perangkatmu lewat npx dan berkomunikasi dengan klien lewat stdio.
Claude Code
stdio- Jalankan perintah ini di terminal.
--scope usermembuat Erza tersedia di semua proyek; hapus flag itu untuk menambahkan Erza ke proyek saat ini saja. - Mulai sesi Claude Code baru lalu jalankan
/mcpuntuk melihat server dan tool-nya.
claude mcp add erza --scope user \
--env ERZA_API_KEY=ez_live_your_api_key_here \
-- npx -y @erza-ai/erza-mcp05
Cek koneksi
Pastikan server berjalan dan menampilkan tool-nya sebelum kamu mengandalkannya di chat.
MCP Inspector
Menjalankan inspector resmi terhadap server lokal dan membuka UI web. Klik Connect, lalu List Tools harus menampilkan 18 tool. Isi key-mu dulu.
npx @modelcontextprotocol/inspector \
-e ERZA_API_KEY=ez_live_your_api_key_here \
npx -y @erza-ai/erza-mcpClaude Code
claude mcp list menjalankan setiap server yang terkonfigurasi dan menampilkan status koneksinya.
claude mcp list
# erza: npx -y @erza-ai/erza-mcp - ✓ ConnectedEndpoint terkelola
Server terkelola menjawab ok di /healthz. Request ke /mcp tanpa key mengembalikan 401.
curl https://mcp.erza.ai/healthz
# okerza_article_list dan menampilkan judul serta statusnya.06
Konfigurasi
Server lokal dikonfigurasi lewat environment variable. Hanya API key yang wajib.
Environment variable
| Variabel | Bawaan | Keterangan |
|---|---|---|
ERZA_API_KEYWajib | — | Key pribadimu, ez_live_…. Dikirim sebagai X-API-Key di setiap request ke Erza API. |
ERZA_API_BASE_URLOpsional | https://api.erza.ai | Endpoint Erza API. Ubah hanya untuk pengembangan lokal atau instance privat. |
ERZA_WS_BASE_URLOpsional | wss://api.erza.ai | Endpoint WebSocket untuk memulai pembuatan artikel. Diturunkan dari ERZA_API_BASE_URL (https → wss) jika tidak diisi. |
Endpoint terkelola
- POST https://mcp.erza.ai/mcp
- Endpoint Streamable HTTP. Stateless: tidak ada sesi yang disimpan antar-request.
- X-API-Key: ez_live_…
- Header autentikasi, dikirim di setiap request.
Authorization: Bearer ez_live_…juga bisa. - GET https://mcp.erza.ai/healthz
- Health check. Mengembalikan
ok. - 401 Unauthorized
- Dikembalikan jika request tidak membawa key:
missing credentials: send X-API-Key or Authorization: Bearer.
07
Referensi tool
18 tool dalam empat grup. Buka tool untuk melihat parameternya dan endpoint Erza API yang dipanggil.
- Hanya bacaTanpa efek samping, aman diulang.
- MenulisMembuat atau mengubah data.
- DestruktifTidak bisa dibatalkan.
- KreditMemakai kredit dompet.
18 tool ditampilkan
erza_article_listHanya bacaDaftar artikelmu, terbaru lebih dulu, dengan status, tipe, dan paginasi.- Upstream
GET /api/articles- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_article_list Parameter Tipe Keterangan pageinteger 1-based page number. Defaults to 1. limitinteger Items per page, 1-50. Defaults to 10. statusstring Filter by article status, e.g. 'draft', 'published', 'complete'. article_typestring Filter by article type name, e.g. 'template-auto'. titlestring Substring filter on the article title. erza_article_getHanya bacaBaca satu artikel secara utuh, termasuk blok kontennya.- Upstream
GET /api/articles/{id}- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_article_get Parameter Tipe Keterangan article_idWajibstring Article id returned by erza_article_list. include_blocksboolean Include the article content blocks. Defaults to true. erza_article_list_typesHanya bacaDaftar tipe artikel yang bisa dibuat oleh akunmu.- Upstream
GET /api/article-types- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_article_list_types Parameter Tipe Keterangan pageinteger 1-based page number. Defaults to 1. limitinteger Items per page, 1-50. Defaults to 20. erza_article_exportHanya bacaEkspor artikel ke PDF atau DOCX dan kembalikan URL unduhannya.- Upstream
POST /api/articles/{id}/download/{pdf,docx}- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_article_export Parameter Tipe Keterangan article_idWajibstring Article id to export. format'pdf' | 'docx' Export format. Defaults to 'pdf'. erza_article_generateMenulisKreditMulai pembuatan 1–5 artikel dengan AI. Langsung mengembalikan generation id.- Upstream
POST /api/internal/ws-ticket → WS /ws/articles (auto | quick)- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_article_generate Parameter Tipe Keterangan itemsWajibobject[1..5] 1 to 5 generation items. Every item consumes credits. items[].topicWajibstring The topic (or title/topic mix) to write about, 3-200 characters. items[].templatestring Template id to render. Omit to let Erza pick the user's default template. items[].keywordsstring Target keywords, at most 5, comma-separated. items[].titlestring Use this value as the final title verbatim instead of letting the model write one. mode'auto' | 'quick' 'auto' (default) generates outline, assets and the full article; 'quick' is fast template generation. languagestring Content language tag forwarded as Accept-Language, e.g. 'id-ID' or 'en-US'. Defaults to the account setting. erza_article_rewriteMenulisKreditTulis ulang dari topik, kata kunci, teks sumber, atau URL referensi.- Upstream
POST /api/internal/ws-ticket → WS /ws/articles (rewrite_article)- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_article_rewrite Parameter Tipe Keterangan itemsWajibobject[1..5] 1 to 5 rewrite items. Every item consumes credits. items[].topicWajibstring Topic or title of the article to rewrite, 3-200 characters. items[].keywordstring Optional focus keyword. items[].sourcesstring[] Optional list of reference/source URLs. items[].source_textstring Optional raw text content to rewrite from. languagestring Content language tag forwarded as Accept-Language, e.g. 'id-ID' or 'en-US'. Defaults to the account setting. erza_article_regenerateMenulisKreditBuat ulang artikel yang sudah ada dari awal.- Upstream
POST /api/internal/ws-ticket → WS /ws/articles (regenerate)- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_article_regenerate Parameter Tipe Keterangan article_idWajibstring Article id to regenerate. languagestring Content language tag forwarded as Accept-Language, e.g. 'id-ID' or 'en-US'. Defaults to the account setting. erza_article_regenerate_sectionMenulisKreditBuat ulang satu blok konten, dengan prompt arahan opsional.- Upstream
POST /api/internal/ws-ticket → WS /ws/articles (regenerate_section)- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_article_regenerate_section Parameter Tipe Keterangan article_idWajibstring Article id containing the section. content_block_idWajibstring Content block id of the section to regenerate. section_promptstring Optional prompt or guidance for regenerating this section. languagestring Content language tag forwarded as Accept-Language, e.g. 'id-ID' or 'en-US'. Defaults to the account setting. erza_generation_listHanya bacaDaftar proses pembuatan beserta status dan jumlahnya.- Upstream
GET /api/article-generations- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_generation_list Parameter Tipe Keterangan pageinteger 1-based page number. Defaults to 1. limitinteger Items per page, 1-50. Defaults to 10. topicstring Filter by the topic submitted for generation. modestring Filter by generation mode, e.g. 'auto_generate', 'quick_create', 'rewrite_article'. erza_generation_getHanya bacaStatus setiap artikel dalam satu proses pembuatan.- Upstream
GET /api/article-generations/{id}- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_generation_get Parameter Tipe Keterangan generation_idWajibstring Generation id returned by erza_article_generate or erza_article_rewrite. erza_generation_waitHanya bacaPolling proses pembuatan sampai selesai atau batas waktu tunggu habis.- Upstream
GET /api/article-generations/{id} (polling)- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_generation_wait Parameter Tipe Keterangan generation_idWajibstring Generation id returned by erza_article_generate or erza_article_rewrite. max_wait_secondsinteger How long to keep polling before answering with the current state, 1-300. Defaults to 60. poll_interval_secondsinteger Seconds between polls, 2-30. Defaults to 5. erza_article_create_draftMenulisSimpan kontenmu sendiri sebagai draf. Tanpa AI, tanpa kredit.- Upstream
POST /api/articles/draft- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_article_create_draft Parameter Tipe Keterangan contentWajibstring Markdown or HTML body content, at least 1 character. article_typeWajibstring Existing article type name, e.g. 'template-auto'. See erza_article_list_types. titlestring Optional title, 5-255 characters when present. erza_article_updateMenulisUbah judul, konten, ringkasan, slug, atau tag. Hanya field yang dikirim yang berubah.- Upstream
PATCH /api/articles/{id}- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_article_update Parameter Tipe Keterangan article_idWajibstring Article id to update. titlestring New title, 5-255 characters. contentstring New body content, at least 20 characters. excerptstring New excerpt. slugstring New URL slug. tagsstring[] Replacement tag list, at most 10 entries. erza_article_deleteDestruktifHapus artikel secara permanen.- Upstream
DELETE /api/articles/{id}- Anotasi
- readOnlyHint: falsedestructiveHint: true
Parameter erza_article_delete Parameter Tipe Keterangan article_idWajibstring Article id to delete. This cannot be undone. erza_article_sync_wordpressMenulisKirim artikel ke situs WordPress yang terhubung.- Upstream
POST /api/articles/{id}/sync- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_article_sync_wordpress Parameter Tipe Keterangan article_idWajibstring Article id to sync to WordPress. connection_idstring WordPress connection id. If omitted, Erza resolves the article's existing connection. erza_scheduler_createMenulisJadwalkan 1–10 artikel ke WordPress atau Blogger pada tanggal dan jam tertentu.- Upstream
POST /api/scheduler/schedules- Anotasi
- readOnlyHint: falsedestructiveHint: false
Parameter erza_scheduler_create Parameter Tipe Keterangan article_idsWajibstring[1..10] 1 to 10 article ids to schedule for publication. scheduled_dateWajibstring Target publication date, YYYY-MM-DD. connection_idWajibstring CMS connection id. cms_type'wordpress' | 'blogger' Target CMS. Defaults to 'wordpress'. timezonestring IANA timezone, e.g. 'Asia/Jakarta' or 'UTC'. Defaults to 'Asia/Jakarta'. start_fromstring First publishing time on scheduled_date, HH:MM. Defaults to '09:00'. interval_minutesinteger Minutes between scheduled articles. Defaults to 30. post_status'draft' | 'publish' Post status in the CMS. Defaults to 'draft'. wp_author_idinteger Optional WordPress author id. confirm_rescheduleboolean Confirm rescheduling when some articles are already scheduled. Defaults to false. erza_scheduler_get_calendarHanya bacaBaca artikel terjadwal dan terbit dalam rentang tanggal.- Upstream
GET /api/scheduler/calendar- Anotasi
- readOnlyHint: truedestructiveHint: false
Parameter erza_scheduler_get_calendar Parameter Tipe Keterangan start_dateWajibstring Start date, YYYY-MM-DD. end_dateWajibstring End date, YYYY-MM-DD. erza_scheduler_cancelDestruktifBatalkan job publikasi terjadwal.- Upstream
DELETE /api/scheduler/schedules/{id}- Anotasi
- readOnlyHint: falsedestructiveHint: true
Parameter erza_scheduler_cancel Parameter Tipe Keterangan job_idWajibstring Schedule job id to cancel.
08
Alur pembuatan
Pembuatan dengan AI berjalan asinkron. Tool memulai job lalu langsung kembali, dan progresnya dibaca lewat REST, jadi tetap aman walau koneksi terputus. erza_article_rewrite, erza_article_regenerate, dan erza_article_regenerate_section memakai alur yang sama.
Mulai dengan
erza_article_generateKirim 1–5 item. Langsung mengembalikan
generation_iddan id artikel baru. Kredit dipotong per item.Tunggu dengan
erza_generation_waitPolling setiap
poll_interval_seconds(2–30, bawaan 5) selama maksimalmax_wait_seconds(1–300, bawaan 60), lalu mengembalikan status setiap artikel.Ulangi jika perlu
Jika masih ada artikel yang berjalan, panggil lagi tool wait dengan id yang sama. Pakai
erza_generation_getuntuk satu kali snapshot.Baca dengan
erza_article_getAmbil setiap artikel yang selesai beserta blok kontennya, lalu edit, ekspor, atau jadwalkan.
{
"items": [
{
"topic": "Brewing manual coffee at home",
"keywords": "manual brew, v60, pour over"
}
],
"mode": "auto",
"language": "id-ID"
}09
Error
Pemanggilan tool yang gagal mengembalikan hasil error (isError: true) dengan payload terstruktur. Agent bisa bercabang berdasarkan code tanpa perlu mem-parsing pesannya.
| code | Arti | retryable |
|---|---|---|
unauthorized | API key tidak ada, tidak valid, atau sudah dicabut. auth_problem bernilai true. | false |
insufficient_credit | Kredit di dompet tidak cukup untuk pembuatan ini. | false |
not_found | Id artikel, proses pembuatan, atau jadwal tidak ada di akun ini. | false |
invalid_request | Ada parameter yang gagal validasi, misalnya topik kurang dari 3 karakter. | false |
rate_limited | Terlalu banyak request. Tunggu lalu coba lagi. | true |
upstream_error | Erza API mengembalikan error HTTP yang tidak terduga. | true |
upstream_unreachable | Erza API tidak bisa dijangkau (jaringan, DNS, atau timeout). | true |
invalid_upstream_response | Erza API mengirim body yang tidak bisa dibaca server. | false |
generation_stream_failed | WebSocket untuk memulai pembuatan gagal sebelum job diterima. | false |
{
"code": "insufficient_credit",
"message": "insufficient credits: …",
"retryable": false,
"auth_problem": false
}retryable: true berarti pemanggilan yang sama bisa berhasil nanti. auth_problem: true berarti key-nya harus diperbaiki dulu.
10
Pemecahan masalah
Server tidak mau jalan di Windows
Beberapa klien tidak bisa menjalankan npx langsung di Windows karena npx adalah skrip .cmd. Bungkus perintahnya dengan cmd /c:
{
"mcpServers": {
"erza": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@erza-ai/erza-mcp"
],
"env": {
"ERZA_API_KEY": "ez_live_your_api_key_here"
}
}
}
}Tool Erza tidak muncul
Pastikan file konfigurasi berisi JSON yang valid (tanpa koma di akhir) dan klien sudah benar-benar dimulai ulang. Menjalankan npx -y @erza-ai/erza-mcp di terminal akan menampilkan error saat startup; jika berhasil, perintah itu diam menunggu input.
Membaca log Claude Desktop
Claude Desktop menulis satu file log per server. Server Erza menulis log ke stderr, jadi error-nya muncul di sana:
# macOS
tail -f ~/Library/Logs/Claude/mcp-server-erza.log
# Windows (PowerShell)
Get-Content "$env:APPDATA\Claude\logs\mcp-server-erza.log" -WaitUnsupported platform or architecture
Paket hanya membawa binary untuk macOS, Linux, dan Windows di x64 dan arm64. Untuk platform lain, pakai endpoint terkelola.
Proses pembuatan terlihat macet
Pembuatan tetap berjalan di Erza setelah tool kembali. erza_generation_wait menjawab dengan status terkini setelah max_wait_seconds; panggil lagi dengan generation_id yang sama. Aman diulang, termasuk setelah koneksi terputus.
Di balik proxy atau firewall
Server lokal butuh akses HTTPS keluar ke api.erza.ai, ditambah koneksi WebSocket (WSS) ke host yang sama untuk memulai pembuatan. Pemasangan terkelola hanya butuh HTTPS ke mcp.erza.ai.
11
Keamanan
Server bertindak dengan izin akunmu, tidak lebih. Tagihan, peran, dan rate limit ditegakkan oleh Erza API.
Perlakukan key seperti password
Siapa pun yang memegang key bisa membaca, menulis, dan memakai kredit sebagai kamu. Jangan tampilkan di screenshot, issue, atau log chat.
Jangan simpan key di git
File proyek seperti
.cursor/mcp.jsonmudah ikut ter-commit. Di repositori bersama, pakai konfigurasi global,inputsVS Code, atau environment variable.Satu key per perangkat
Buat key terpisah untuk setiap perangkat atau klien, supaya bisa mencabut satu tanpa mengganggu yang lain.
Tinjau aksi destruktif
erza_article_deletedanerza_scheduler_cancelmemilikidestructiveHint: true. Biarkan persetujuan per pemanggilan tetap aktif di klienmu.
12
Update & hapus
npx mengambil paket lokal. Endpoint terkelola selalu menjalankan rilis terbaru.
Ambil rilis terbaru
npx menyimpan cache paket. Tambahkan @latest di args agar selalu mengambil versi terbaru.
npx -y @erza-ai/erza-mcp@latestKunci versi
Pakai versi pasti di args jika tim butuh pemasangan yang sama di semua perangkat.
npx -y @erza-ai/[email protected]Hapus
Hapus entri erza dari konfigurasi klien (atau jalankan ini di Claude Code), lalu cabut key-nya.
claude mcp remove erzaSiap menghubungkan Erza?
Buat API key, tempel satu blok konfigurasi, lalu mulai menulis dari asisten yang sudah kamu pakai.