Skip to main content
Glama
README.md
# MCP Server for Axiom

A JavaScript port of the [official Axiom MCP server](https://github.com/axiomhq/mcp-server-axiom) that enables AI agents to query data using Axiom Processing Language (APL).

<a href="https://glama.ai/mcp/servers/8hxxw8uenu">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/8hxxw8uenu/badge" />
</a>

This implementation provides the same functionality as the original Go version but packaged as an npm module for easier integration with Node.js environments.

## Installation & Usage

### MCP Configuration

You can run this MCP server directly using npx. Add the following configuration to your MCP configuration file:

```json
{
  "axiom": {
    "command": "npx",
    "args": ["-y", "mcp-server-axiom"],
    "env": {
      "AXIOM_TOKEN": "<AXIOM_TOKEN_HERE>",
      "AXIOM_URL": "https://api.axiom.co",
      "AXIOM_ORG_ID": "<AXIOM_ORG_ID_HERE>"
    }
  }
}
```

### Local Development & Testing

#### Installation

```bash
npm install -g mcp-server-axiom
```

#### Environment Variables

The server can be configured using environment variables:

- `AXIOM_TOKEN` (required): Your Axiom API token
- `AXIOM_ORG_ID` (required): Your Axiom organization ID
- `AXIOM_URL` (optional): Custom Axiom API URL (defaults to https://api.axiom.co)
- `AXIOM_QUERY_RATE` (optional): Queries per second limit (default: 1)
- `AXIOM_QUERY_BURST` (optional): Query burst capacity (default: 1)
- `AXIOM_DATASETS_RATE` (optional): Dataset list operations per second (default: 1)
- `AXIOM_DATASETS_BURST` (optional): Dataset list burst capacity (default: 1)
- `PORT` (optional): Server port (default: 3000)

#### Running the Server Locally

1. Using environment variables:

```bash
export AXIOM_TOKEN=your_token
mcp-server-axiom
```

2. Using a config file:

```bash
mcp-server-axiom config.json
```

Example config.json:

```json
{
  "token": "your_token",
  "url": "https://custom.axiom.co",
  "orgId": "your_org_id",
  "queryRate": 2,
  "queryBurst": 5,
  "datasetsRate": 1,
  "datasetsBurst": 2
}
```

## API Endpoints

- `GET /`: Get server implementation info
- `GET /tools`: List available tools
- `POST /tools/:name/call`: Call a specific tool
  - Available tools:
    - `queryApl`: Execute APL queries
    - `listDatasets`: List available datasets

### Example Tool Calls

1. Query APL:

```bash
curl -X POST http://localhost:3000/tools/queryApl/call \
  -H "Content-Type: application/json" \
  -d '{
    "arguments": {
      "query": "['logs'] | where ['severity'] == \"error\" | limit 10"
    }
  }'
```

2. List Datasets:

```bash
curl -X POST http://localhost:3000/tools/listDatasets/call \
  -H "Content-Type: application/json" \
  -d '{
    "arguments": {}
  }'
```

## License

MIT

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

The three tools have clearly distinct purposes: listDatasets enumerates available datasets, getDatasetInfoAndSchema retrieves metadata and structure for a specific dataset, and queryApl executes analytical queries. There is no overlap in functionality, making it easy for an agent to select the appropriate tool.

Naming Consistency4/5

Two tools (listDatasets, getDatasetInfoAndSchema) follow a consistent verb_noun pattern with camelCase, while queryApl uses a different verb style and abbreviation. The deviation is minor, as the naming remains readable and the tools are clearly related to Axiom datasets.

Tool Count5/5

With three tools, this server is well-scoped for its purpose of interacting with Axiom datasets. Each tool serves a distinct and essential function: listing, inspecting, and querying datasets, which covers the core workflows without unnecessary complexity.

Completeness4/5

The tool surface provides comprehensive coverage for dataset exploration and querying, including listing, metadata retrieval, and advanced querying with APL. A minor gap exists in dataset management operations (e.g., create, update, delete datasets), but the provided tools enable effective data analysis within existing datasets.

Maintenance

ActivityInactive
ResponsivenessNo issues