Skip to main content
Glama
seansoreilly

Australian Bureau of Statistics (ABS)

by seansoreilly
README.md
# ABS MCP Server

An MCP (Model Context Protocol) server that provides access to the Australian Bureau of Statistics (ABS) Data API. This server allows AI assistants to query and analyze ABS statistical data through the SDMX-ML API.

## Features

- Dynamic discovery of all available ABS datasets via SDMX-ML API
- Query ABS datasets with optional filters
- Support for multiple data formats (JSON, CSV, XML)
- Built on the MCP protocol for seamless integration with AI assistants
- Caching system for improved performance
- Comprehensive logging and error handling

## Installation

```bash
npm install
```

## Development

### Prerequisites

- Node.js 18 or higher
- npm 8 or higher

### Building

```bash
npm run build
```

### Running

```bash
npm start
```

### Development Tools

- `npm run build`: Build the TypeScript code
- `npm start`: Run the server
- `npm run inspector`: Run the MCP inspector for testing

## Project Structure

```
src/
├── index.ts                # Main server implementation
├── services/
│   └── abs/
│       ├── ABSApiClient.ts # ABS API communication
│       └── DataFlowService.ts # Data flow management and caching
├── types/
│   └── abs.ts             # TypeScript type definitions
└── utils/
    └── logger.ts          # Logging configuration
```

## Implementation Details

### ABS API Client

The `ABSApiClient` class handles communication with the ABS Data API:
- Uses SDMX-ML format for data exchange
- Supports multiple response formats (JSON, CSV, XML)
- Implements proper error handling and logging
- Configurable timeouts and retries

### Data Flow Service

The `DataFlowService` class manages ABS data flows:
- Dynamically fetches available datasets from ABS API
- Implements caching with configurable refresh intervals
- Provides methods for querying specific datasets
- Handles data transformation and formatting

### Logging

Comprehensive logging system using Winston:
- Debug-level logging for development
- Structured JSON logging format
- Console and file transport options
- Configurable log levels and formats

## Integration with Claude Desktop

1. Close Claude Desktop if it's running
2. Start the ABS MCP server: `npm start`
3. Start Claude Desktop
4. The ABS tools should appear in the "Available MCP Tools" window

## API Documentation

For more information about the ABS Data API:
- [SDMX-ML Documentation](https://data.gov.au/dataset/ds-dga-b1bc6077-dadd-4f61-9f8c-002ab2cdff10/details)
- [ABS API Documentation](https://api.gov.au/service/f8880c48-2927-4e48-9945-46d36c8c4e11)

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request

## License

MIT License

TDQS

C2.9/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined as querying ABS datasets with filters, making it distinct by default.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect. The tool name 'query_dataset' follows a clear verb_noun pattern, which would be consistent if more tools were added.

Tool Count2/5

A single tool is too few for a server representing a national statistics bureau, which likely has multiple datasets, metadata operations, or data retrieval methods. This minimal scope feels thin and inadequate for the apparent domain.

Completeness2/5

The tool surface is severely incomplete for accessing ABS data. There are obvious gaps such as listing available datasets, retrieving metadata, or supporting other common statistical operations, which will limit agent functionality.

Maintenance

ActivityInactive
ResponsivenessUnresponsive