Skip to main content
Glama
ramide1

arca-mcp

by ramide1
README.md
# arca-mcp

MCP server for ARCA (Agencia de Recaudacion y Control Aduanero) - provides tools via stdio transport.

## Installation

```bash
bun install
```

## Usage

```bash
# Start the server
bun run start

# Type check (no emission due to noEmit: true in tsconfig)
bun tsc
```

## Environment Variables

Required for AFIP authentication (WS-AAA):

- `ARCA_WSAA_CERT`: Certificate file (default: `ghf.crt`)
- `ARCA_WSAA_PRIVATE_KEY`: Private key file (default: `ghf.key`)
- `ARCA_WSAA_PASSWORD`: Private key password (default: empty)
- `ARCA_TEST_MODE`: Set to `false` for production; any other value (or unset) uses homologation
- `ARCA_FETCH_LIMIT`: SOAP retry attempts (default: `3`)

Certificate and key files are expected in the current directory (or `currentDir` tool parameter).

## Important Notes

- **CUIT format**: All tools require CUIT in `XX-XXXXXXXX-X` format (validated via Zod)
- **WSDL caching**: WSDL files are downloaded to `./{service}_{env}.wsdl` (e.g., `wsfe_test.wsdl`) and reused for 1 year
- **OpenSSL required**: The `signTra` function uses `openssl cms` for signing; ensure OpenSSL is installed and in PATH
- **SOAP services**: Communicates with AFIP's WS-FE (electronic invoicing) and WSAA (authentication) services
- **Temp files**: Creates `TRA_*.xml` and `TA_*.xml` files in the directory specified by `currentDir` (default: `./`)
- **TypeScript**: Strict type checking enabled; `moduleResolution: bundler` (Bun-specific)

## Project Structure

```
src/
├── main.ts           # Entry point
├── tool.ts           # MCP tool definitions (AFIP service wrappers)
├── arcaService.ts    # SOAP client implementation
└── interface.ts      # Unused (empty)
```

## Development Notes

- No test framework configured; manual testing via MCP tools recommended
- No lint/formatter config in repo (though `.gitignore` references ESLint/Prettier)
- Uses Bun's built-in test runner? Not configured
- WSDL downloads occur on first use or when cached file >1 year old

## License

MIT