mcp-server-axiom-js
# 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
Scored across 3 tools
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.
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.
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.
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.