Skip to main content
Glama
gizipp

rupiah-mcp

by gizipp
README.md
# rupiah

[![npm version](https://badge.fury.io/js/rupiah.svg)](https://badge.fury.io/js/rupiah)
[![CI](https://github.com/gizipp/rupiah/actions/workflows/ci.yml/badge.svg)](https://github.com/gizipp/rupiah/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Indonesian Rupiah toolkit. Format, parse, abbreviate, and convert numbers to Indonesian words (terbilang).

**AI-agent ready** with MCP (Model Context Protocol) support.

## Installation

```bash
npm install rupiah
```

## Quick Start

```typescript
import { format, parse, short, words } from 'rupiah'

// Format as Rupiah
format(1500000)              // "Rp 1.500.000"
format(1500000, { dot: ',' })       // "Rp 1,500,000"
format(1500000, { symbol: false })  // "1.500.000"

// Parse Rupiah string
parse("Rp 1.500.000")        // 1500000
parse("1.500.000")           // 1500000

// Short abbreviation
short(1500000)               // "Rp 1,5jt"
short(2500000000)            // "Rp 2,5M"
short(1500000000000)         // "Rp 1,5T"

// Terbilang (number to Indonesian words)
words(1500000)               // "satu juta lima ratus ribu"
words(1234567890)            // "satu miliar dua ratus tiga puluh empat juta..."
```

## API

### `format(amount, options?)`

Format a number as Indonesian Rupiah.

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `dot` | string | `"."` | Thousand separator |
| `decimal` | string | `","` | Decimal separator |
| `symbol` | boolean | `true` | Include "Rp" prefix |
| `precision` | number | `0` | Decimal places |

### `parse(text)`

Parse a Rupiah string to number. Removes "Rp", spaces, and thousand separators.

### `short(amount, options?)`

Format as short abbreviation (rb, jt, M, T).

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `precision` | number | `1` | Decimal places |
| `symbol` | boolean | `true` | Include "Rp" prefix |

### `words(amount)`

Convert a number to Indonesian words (terbilang).

## MCP (AI Agent Support)

This package includes an MCP server for AI agent integration.

### Claude Desktop / Cursor / Any MCP Client

Add to your MCP config:

```json
{
  "mcpServers": {
    "rupiah": {
      "command": "npx",
      "args": ["-y", "rupiah-mcp"]
    }
  }
}
```

### Available MCP Tools

| Tool | Description | Example |
|------|-------------|---------|
| `format_rupiah` | Format number as Rupiah | `1500000` → `Rp 1.500.000` |
| `parse_rupiah` | Parse Rupiah string to number | `Rp 1.500.000` → `1500000` |
| `terbilang` | Number to Indonesian words | `1500000` → `satu juta lima ratus ribu` |
| `short_rupiah` | Short abbreviation | `1500000` → `Rp 1,5jt` |

### Programmatic MCP Usage

```typescript
import { server } from 'rupiah/mcp'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

const transport = new StdioServerTransport()
await server.connect(transport)
```

## Related

- [nik-parser.rb](https://github.com/gizipp/nik-parser.rb) — Indonesian identity toolkit (Ruby)
- [isbn-toolkit](https://github.com/gizipp/isbn-toolkit-ruby) — ISBN toolkit (Ruby, JS, PHP)
- [awesome-indonesian-dev-tools](https://github.com/gizipp/awesome-indonesian-dev-tools) — Curated list

## License

[MIT](LICENSE)