Skip to main content
Glama
martin-1103
by martin-1103
README.md
# GASSAPI MCP v2

Model Context Protocol (MCP) server untuk integrasi GASSAPI dengan AI assistants.

## 🚀 Quick Start

### Prerequisites
- Node.js >= 16.0.0
- npm atau yarn
- Akses ke GASSAPI backend

## 📦 Installation

### Install Package
```bash
# Install from NPM registry
npm install -g gassapi-mcp2

# Test installation
gassapi-mcp2 --help

# Add to Claude Code
claude mcp add --transport stdio gassapi-mcp2 gassapi-mcp2
```

## 📋 Simple Setup (3 Steps)

### Step 1: Login ke GASSAPI Backend
Login ke backend GASSAPI untuk mendapatkan access token:
```bash
curl -X POST "http://mapi.gass.web.id/?act=login" \
  -H "Content-Type: application/json" \
  -d '{"email": "your-email@example.com", "password": "YourPassword"}'
```

### Step 2: Dapatkan Project ID
List projects untuk mendapatkan project ID:
```bash
curl -X GET "http://mapi.gass.web.id/?act=projects" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

### Step 3: Buat gassapi.json File
Buat file `gassapi.json` di working directory Anda dengan template:

```json
{
  "project": {
    "id": "YOUR_PROJECT_ID_HERE",
    "name": "Your Project Name",
    "description": "Your project description"
  },
  "mcpClient": {
    "token": "YOUR_TOKEN_HERE"
  }
}
```

**Ganti dengan:**
- `YOUR_PROJECT_ID_HERE` → Project ID dari Step 2
- `YOUR_TOKEN_HERE` → Token dari Step 1

**Note:** Base URL sudah hardcoded ke `http://mapi.gass.web.id` - tidak perlu konfigurasi API URL.

## ✅ Verification

### Test MCP Server
```bash
# Test help command
gassapi-mcp2 --help

# Test version
gassapi-mcp2 --version

# Test status
gassapi-mcp2 --status
```

### Claude Code Integration
```bash
# List MCP servers
claude mcp list

# Test connection
# Restart Claude Code dan coba gunakan GASSAPI tools
```

## 🛠️ Development

### Local Development
```bash
# Clone repository
git clone <repository-url>
cd gassapi-mcp2

# Install dependencies
npm install

# Build
npm run build

# Development mode
npm run dev

# Type checking
npm run typecheck
```

## 🔧 Configuration Format

### gassapi.json Structure
```json
{
  "project": {
    "id": "proj_abc123def456",
    "name": "Project Name",
    "description": "Project description"
  },
  "mcpClient": {
    "token": "plain_text_mcp_token_here"
  }
}
```

**Note:** Base URL sudah hardcoded ke `http://mapi.gass.web.id` - tidak perlu `api_base_url` configuration.

### Auto-Detection
MCP server akan otomatis mencari `gassapi.json` di:
- Current working directory
- Parent directories (hingga 5 levels up)

## 🛠️ Available MCP Tools

### Authentication & Project Context
- `get_project_context` - Get project info with environments and folders
- `health_check` - Check MCP server status

### Environment Management
- `list_environments` - List all environments
- `get_environment_details` - Get detailed environment info
- `create_environment` - Create new environment
- `update_environment_variables` - Update environment variables
- `set_default_environment` - Set default environment
- `delete_environment` - Delete environment

### Folder Management
- `list_folders` - List project folders
- `create_folder` - Create new folder
- `update_folder` - Update folder details
- `move_folder` - Move folder to different parent
- `delete_folder` - Delete folder
- `get_folder_details` - Get folder details

### Endpoint Management
- `list_endpoints` - List all endpoints
- `get_endpoint_details` - Get detailed endpoint configuration
- `create_endpoint` - Create endpoint with semantic context
- `update_endpoint` - Update endpoint configuration

#### Flow Management
- `create_flow` - Create automation flow
- `execute_flow` - Execute flow
- `get_flow_details` - Get flow details
- `list_flows` - List all flows
- `delete_flow` - Delete flow

#### Testing Tools
- `test_endpoint` - Test single endpoint
- `test_multiple_endpoints` - Test multiple endpoints
- `create_test_suite` - Create test suite
- `list_test_suites` - List test suites

## 📝 Endpoint Documentation & Cataloging

### Mencatat Endpoint yang Sudah Ada
```typescript
create_endpoint(
  name: "User Registration",
  method: "POST",
  url: "/api/auth/register",
  folder_id: "folder_authentication",
  description: "Endpoint untuk registrasi user baru dengan email verification",
  purpose: "Public user registration dengan email verification required",
  headers: {
    "Content-Type": "application/json"
  },
  body: '{"name": "{{userName}}", "email": "{{userEmail}}", "password": "{{password}}"}',
  request_params: {
    "name": "Full name untuk display",
    "email": "Email address untuk login dan communication",
    "password": "User password (min 8 chars, include uppercase, lowercase, numbers)"
  },
  response_schema: {
    "user_id": "Unique user identifier",
    "name": "User display name",
    "email": "User email address",
    "status": "Account status (active|inactive|suspended)",
    "verification_required": "Whether email verification needed"
  }
)
```

### Workflow: Backend → MCP Documentation → AI Frontend

**1. Backend Developer:**
```php
// Di PHP code (sudah ada)
public function register() {
  // Logic untuk registrasi user
  // Return user data atau error
}
```

**2. Documentation Team:**
```typescript
// Gunakan MCP tools untuk catat
create_endpoint(
  name: "User Registration",
  method: "POST",
  url: "/api/auth/register",
  // ... semantic context untuk AI understanding
)
```

**3. AI Frontend Team:**
```typescript
// AI dapat endpoint info dan generate UI
get_endpoint_details(endpoint_id: "ep_user_reg")
// AI understands purpose dan generate appropriate React components
```

### Contoh Endpoint User Registration dengan Semantic Context
```typescript
create_endpoint(
  name: "User Registration",
  method: "POST",
  url: "/api/auth/register",
  folder_id: "folder_authentication",
  description: "Public user registration endpoint dengan email verification",
  purpose: "New user account creation dengan email verification untuk security",

  // Request parameters documentation
  request_params: {
    "name": "User's full name for display purposes",
    "email": "User's email address for login and communication",
    "password": "Password with security requirements (8+ chars, mixed case, numbers)",
    "confirm_password": "Password confirmation untuk prevent typos"
  },

  // Response schema documentation
  response_schema: {
    "user_id": "Unique system identifier untuk user record",
    "name": "User display name untuk UI",
    "email": "User email address untuk authentication",
    "status": "Account status: active|inactive|suspended|pending_verification",
    "email_verified": "Email verification status flag",
    "verification_token": "Email verification token (if required)",
    "created_at": "Account creation timestamp"
  },

  // Important implementation notes
  header_docs: {
    "Content-Type": "Application/JSON untuk request body",
    "Accept": "Application/JSON untuk response format"
  }
)
```

### Semantic Fields untuk AI Understanding

| Field | Type | Purpose | Example | AI Benefit |
|-------|------|---------|---------|-------------|
| `purpose` | string | Business purpose (max 250 chars) | "User registration with email verification" | AI understands use case and generates appropriate UI flow |
| `request_params` | object | Parameter documentation | `{"name": "User's full name for display"}` | AI generates correct form fields with validation |
| `response_schema` | object | Response field documentation | `{"user_id": "Unique user identifier"}` | AI handles response data correctly in frontend code |
| `header_docs` | object | Header documentation | `{"Content-Type": "Application/JSON"}` | AI includes proper headers in API calls |

## 🔧 Development

### Build & Run
```bash
# Build project
npm run build

# Run development server
npm run dev

# Run production server
npm start

# Type checking
npm run typecheck

# Clean build
npm run clean
```

### Testing
```bash
# Run basic test
npm test

# Run all tests
node test/runners/run-all-tests.js

# Run specific category
node test/runners/run-category-tests.js endpoints

# Run semantic fields tests
node test/unit/endpoints/semantic-test-runner.js
```

## 🔍 Configuration Format

### gassapi.json Structure
```json
{
  "project": {
    "id": "proj_abc123def456",
    "name": "Project Name",
    "description": "Project description"
  },
  "mcpClient": {
    "token": "plain_text_mcp_token_here"
  }
}
```

**Note:** Base URL sudah hardcoded ke `http://mapi.gass.web.id` - tidak perlu `api_base_url` configuration.

### Auto-Detection
MCP server akan otomatis mencari `gassapi.json` di:
- Current working directory
- Parent directories (hingga 5 levels up)

## 🚨 Troubleshooting

### Common Issues

**1. "No configuration found"**
- Pastikan `gassapi.json` ada di working directory atau parent directory
- Cek format JSON valid

**2. "Invalid token"**
- Login kembali ke backend untuk dapat token baru
- Pastikan token belum expired

**3. "Backend unavailable"**
- Pastikan backend server sudah berjalan di `http://mapi.gass.web.id`
- Check koneksi internet dan firewall settings

**4. MCP server not found**
- Install globally: `npm install -g gassapi-mcp2`
- Atau gunakan npx: `npx gassapi-mcp2`

### Debug Commands
```bash
# Check MCP server status
gassapi-mcp2 --status

# Test help
gassapi-mcp2 --help

# Test version
gassapi-mcp2 --version

# Test backend connectivity
curl "http://mapi.gass.web.id/?act=health"
```

## 📞 Usage Examples

### Basic Usage in Claude Code
```
User: "Show my project"
AI: Uses get_project_context tool

User: "Create endpoint for user registration"
AI: create_endpoint dengan semantic fields

User: "Test this endpoint"
AI: test_endpoint dengan environment variables
```

### Advanced Usage
```
User: "Create flow untuk user registration dengan email verification"
AI: create_flow dengan multiple steps dan validation

User: "List semua endpoints di folder Authentication"
AI: list_endpoints dengan filter folder_id
```

## 🤝 Contributing

1. Fork repository
2. Create feature branch
3. Run tests: `npm test`
4. Submit pull request

## 📄 License

MIT License

---

**🎯 Key Benefits:**
- ✅ Semantic context untuk AI understanding
- ✅ Real-time endpoint management
- ✅ Automated flow creation
- ✅ Comprehensive testing tools
- ✅ Easy integration dengan Claude Code/Cursor

TDQS

A3.5/5.0

Scored across 23 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific resources and actions, with no apparent overlap. For example, create_endpoint, get_endpoint_details, update_endpoint, and test_endpoint all operate on endpoints but with distinct CRUD operations, while tools like execute_flow and test_endpoint serve different testing scopes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case, such as create_endpoint, list_environments, update_folder, and delete_flow. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.

Tool Count4/5

With 23 tools, the count is slightly high but reasonable for a comprehensive API automation and testing server covering endpoints, environments, flows, and folders. It includes CRUD operations, listing, testing, and project management, which justifies the breadth, though it might feel heavy for some use cases.

Completeness5/5

The tool set provides complete CRUD and lifecycle coverage for the domain of API automation, including endpoints, environments, flows, and folders. It covers creation, retrieval, updating, deletion, listing, testing, and execution, with no obvious gaps that would hinder agent workflows, such as health_check for server status and get_project_context for project management.

Maintenance

ActivityInactive
ResponsivenessNo issues