aikido-mcp-server

bitterpanda63/aikido-mcp-server

3.2

If you are the rightful owner of aikido-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Aikido MCP Server integrates with the Aikido Security API, providing access to Zen firewall apps and Teams management.

Tools
5
Resources
0
Prompts
0

Aikido MCP Server (Unofficial)

Unofficial MCP server for integrating with Aikido Security API, providing access to Zen firewall apps and Teams management.

Installation

git clone https://github.com/bitterpanda63/aikido-mcp-server.git
cd aikido-mcp-server
npm install
npm run build

Configuration

  1. Copy the example environment file:
cp .env.example .env
  1. Edit .env and add your Aikido Client ID & Token:
AIKIDO_CLIENT_SECRET=
AIKIDO_CLIENT_ID=

Get your credentials from the Aikido Settings

Usage

With Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "aikido": {
      "command": "node",
      "args": ["/path/to/aikido-mcp-server/dist/index.js"],
      "env": {
        "AIKIDO_API_TOKEN": "your-api-token-here"
      }
    }
  }
}

Direct Usage

node dist/index.js

Architecture

Adding New Endpoints

To add a new endpoint, create one file in the appropriate endpoints/ directory:

// src/client/zen/endpoints/my-new-endpoint.ts
import { Tool } from '@modelcontextprotocol/sdk/types.js';
import { BaseAikidoClient } from '../../base-client.js';

// 1. Types
export interface MyRequest { /* ... */ }
export interface MyResponse { /* ... */ }

// 2. API Client
export class MyEndpointClient extends BaseAikidoClient {
  async execute(data: MyRequest): Promise<MyResponse> {
    return this.request({ method: 'POST', url: '/my-endpoint', data });
  }
}

// 3. MCP Tool Definition
export const myEndpointTool: Tool = {
  name: 'my_endpoint',
  description: 'Description here',
  inputSchema: { /* ... */ },
};

// 4. MCP Handler
export async function handleMyEndpoint(args, client) {
  const result = await client.execute(args);
  return { content: [{ type: 'text', text: JSON.stringify(result) }] };
}

Then add it to the module's index.ts - no changes needed to server.ts!