Expose Indodax Private REST APIs as MCP tools for AI agents.
Indodax MCP Server π
Expose semua Private REST API Indodax sebagai MCP tools (bisa dipakai Claude Code atau agen AI lain). Fokus: cepat dipakai, mudah dipahami.
1. Persiapan Cepat
# clone & masuk repo
git clone https://github.com/adhinugroho1711/mcp-indodax.git
cd mcp-indodax
# (opsional) buat virtual-env
python -m venv .venv && source .venv/bin/activate
# install paket
pip install -r requirements.txt
2. Isi Kredensial
Buat .env (file ini tidak akan ke-push):
INDODAX_API_KEY=YOUR_API_KEY
INDODAX_API_SECRET=YOUR_SECRET
3. Jalankan
python server.py # mode stdio (default MCP)
# atau HTTP:
uvicorn server:mcp.app --reload
4. Contoh Pakai Tool
from server import get_info, trade
import asyncio, json
async def demo():
print(json.dumps(await get_info(), indent=2))
# order beli BTC 50k IDR
# await trade("btc_idr", "buy", price=500000000, idr=50000)
asyncio.run(demo())
5. Integrasi Editor (Claude Code)
- VS Code: letakkan
mcp_servers.jsondi root β Command Palette βClaude: Start MCP Server. - JetBrains: taruh
mcp_servers.jsondi root atau.claude/β Tools β Claude β Start MCP Server. - Neovim: simpan
mcp_servers.jsondi~/.config/claude/β:ClaudeStartServer indodax.
Contoh mcp_servers.json:
{
"mcpServers": {
"indodax": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/mcp-indodax", "run", "server.py"]
}
}
}
Struktur Singkat
server.py # semua MCP tools
requirements.txt # dependensi
mcp_servers.json # config runner (contoh)
Integrasi Editor / Claude Code
Berikut cara mendaftarkan MCP server di beberapa editor / plugin umum. Pastikan mcp_servers.json Anda sudah berisi path absolut proyek.
VS Code (Claude Code Extension)
- Install extension "Claude Code".
- Letakkan
mcp_servers.jsondi root proyek, contoh:{ "mcpServers": { "indodax": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/mcp-indodax", "run", "server.py" ] } } } - Buka Command Palette β
Claude: Start MCP Serverβ¦β pilihindodax.
JetBrains IDE (IntelliJ / PyCharm) + Plugin Claude Code
- Taruh
mcp_servers.jsondi direktori.claude/atau root proyek. - Tools β Claude β Start MCP Server β pilih
indodax.
Neovim (`claude.nvim`)
- Simpan
mcp_servers.jsondi$HOME/.config/claude/. - Jalankan
:ClaudeStartServer indodax.
CLI Langsung
uv --directory /ABSOLUTE/PATH/TO/mcp-indodax run server.py # atau python server.py
Contoh Pemanggilan Alat
1. Mengecek Harga Kripto
import asyncio
from server import ticker, ticker_all
async def check_prices():
# Dapatkan semua ticker yang tersedia
all_tickers = await ticker_all()
# Dapatkan harga BTC/IDR
btc_price = await ticker("btcidr")
print(f"Harga BTC/IDR: {int(btc_price['last']):,}")
# Dapatkan harga XRP/IDR
xrp_price = await ticker("xrpidr")
print(f"Harga XRP/IDR: {int(xrp_price['last']):,}")
asyncio.run(check_prices())
2. Mengecek Saldo dan Membuat Order
import asyncio, json
from server import get_info, trade
async def main():
# Dapatkan info akun
info = await get_info()
print("Saldo IDR:", info['return']['balance']['idr'])
# Contoh order beli BTC senilai 50.000 IDR
# res = await trade("btc_idr", "buy", price=500000000, idr=50000)
# print(json.dumps(res, indent=2))
asyncio.run(main())
Cara Melakukan Trading
Daftar Perintah Trading
| Perintah | Deskripsi | Contoh Penggunaan |
|---|---|---|
ticker("btcidr") |
Melihat harga BTC/IDR terkini | python\nfrom server import ticker\nimport asyncio\n\nasync def main():\n price = await ticker("btcidr")\n print(f"Harga BTC: {int(price['last']):,} IDR")\n\nasyncio.run(main())\n |
trade("btcidr", "buy", idr=50000, price=500000000) |
Membeli kripto dengan IDR | python\nfrom server import trade\n\nasync def beli_btc():\n await trade("btcidr", "buy", idr=50000, price=500000000)\n |
trade("xrpidr", "sell", xrp=100, price=40000) |
Menjual kripto | python\nfrom server import trade\n\nasync def jual_xrp():\n await trade("xrpidr", "sell", xrp=100, price=40000)\n |
open_orders() |
Melihat daftar order aktif | python\nfrom server import open_orders\n\nasync def cek_order():\n orders = await open_orders()\n print(orders)\n |
cancel_order(order_id=12345) |
Membatalkan order | python\nfrom server import cancel_order\n\nasync def batal_order():\n await cancel_order(order_id=12345)\n |
1. Membuat Order Beli/Jual
import asyncio
from server import trade, get_info
async def place_order():
# Dapatkan info akun terlebih dahulu
info = awai
Tools (5)
tickerGet the current market price for a specific trading pair.tradeExecute a buy or sell order for a cryptocurrency.open_ordersRetrieve a list of currently active orders.cancel_orderCancel an existing order by its ID.get_infoRetrieve account information and balances.Environment Variables
INDODAX_API_KEYrequiredYour Indodax API keyINDODAX_API_SECRETrequiredYour Indodax API secretConfiguration
{"mcpServers": {"indodax": {"command": "uv", "args": ["--directory", "/ABSOLUTE/PATH/TO/mcp-indodax", "run", "server.py"]}}}