Skip to main content
Glama
PamithWelikala123

XAPIHub MCP Extension

README.md
# XAPIHub MCP Extension for Cursor

A Model Context Protocol (MCP) extension that integrates XAPIHub API with Cursor IDE, allowing developers to interact with XAPIHub services directly from their development environment.

## Features

- šŸ” **User Authentication**: Get current user details from XAPIHub
- šŸ”— **API Integration**: Direct connection to XAPIHub API endpoints
- ⚔ **Real-time Data**: Fetch live data from your XAPIHub organization
- šŸ› ļø **Developer Tools**: Built-in connection testing and diagnostics

## Installation

### Prerequisites

- Node.js 18+ 
- Cursor IDE with MCP support
- XAPIHub account and API token

### Setup

1. **Clone and Install Dependencies**
   ```bash
   git clone <your-repo-url>
   cd xapihub-mcp-extension
   npm install
   ```

2. **Configure Environment**
   ```bash
   cp env.example .env
   ```
   
   Edit `.env` with your XAPIHub credentials:
   ```env
   XAPIHUB_BASE_URL=https://api-dev.xapihub.io
   XAPIHUB_TOKEN=your_bearer_token_here
   ```

3. **Build the Extension**
   ```bash
   npm run build
   ```

4. **Install in Cursor**
   - Open Cursor IDE
   - Go to Extensions > Install from VSIX
   - Select the built extension package
   - Or configure MCP server manually (see below)

## Manual MCP Server Configuration

If you prefer to run the MCP server directly, add this to your Cursor MCP configuration:

```json
{
  "mcpServers": {
    "xapihub": {
      "command": "node",
      "args": ["path/to/your/dist/index.js"],
      "env": {
        "XAPIHUB_BASE_URL": "https://api-dev.xapihub.io",
        "XAPIHUB_TOKEN": "your_bearer_token_here"
      }
    }
  }
}
```

## Available Tools

### `get_current_user`
Retrieves current user details from XAPIHub API.

**Example Response:**
```json
{
  "success": true,
  "message": "Current user details retrieved successfully",
  "user": {
    "id": "user_id",
    "username": "username",
    "email": "user@example.com",
    "fullName": "John Doe",
    "organization": "org_id",
    "organizationType": "PREMIUM",
    "userType": "ORGANIZATION_OWNER",
    "userOrganizationAssociation": "OWNER",
    "organizationVisibility": "PUBLIC",
    "emailVerified": true,
    "readOnlyOrganization": false,
    "projectCount": 5,
    "userScopes": ""
  }
}
```

### `test_xapihub_connection`
Tests connectivity to XAPIHub API.

**Example Response:**
```json
{
  "success": true,
  "connected": true,
  "message": "Successfully connected to XAPIHub API"
}
```

## Usage in Cursor

Once installed, you can use the XAPIHub tools in several ways:

1. **Command Palette**: 
   - Press `Ctrl+Shift+P` (Windows/Linux) or `Cmd+Shift+P` (Mac)
   - Type "XAPIHub" to see available commands

2. **MCP Tools**:
   - Use the tools directly in your code context
   - Ask Cursor to "Get my XAPIHub user details"
   - Request "Test XAPIHub connection"

3. **Chat Integration**:
   - Ask Cursor: "What are my XAPIHub user details?"
   - Request: "Check if I'm connected to XAPIHub"

## Development

### Project Structure
```
src/
ā”œā”€ā”€ types/
│   └── xapihub.ts          # TypeScript type definitions
ā”œā”€ā”€ services/
│   └── xapihub-client.ts   # XAPIHub API client
ā”œā”€ā”€ server.ts               # MCP server implementation
└── index.ts                # Main entry point
```

### Scripts
- `npm run build` - Build TypeScript to JavaScript
- `npm run dev` - Watch mode for development
- `npm run start` - Start the MCP server
- `npm test` - Run tests (when implemented)

### Adding New Tools

1. Define the tool in `src/server.ts`:
   ```typescript
   {
     name: 'your_tool_name',
     description: 'Tool description',
     inputSchema: {
       type: 'object',
       properties: {
         // Define input parameters
       },
       required: [],
     },
   }
   ```

2. Implement the handler:
   ```typescript
   case 'your_tool_name':
     return await this.handleYourTool(args);
   ```

3. Add the implementation method:
   ```typescript
   private async handleYourTool(args: any) {
     // Implementation
   }
   ```

## API Reference

The extension uses the XAPIHub REST API. Current endpoint:

- `GET /platform/1.0.0/users/current-user` - Get current user details

## Troubleshooting

### Common Issues

1. **Authentication Error**
   - Verify your `XAPIHUB_TOKEN` is correct and not expired
   - Check that the token has proper permissions

2. **Connection Failed**
   - Ensure `XAPIHUB_BASE_URL` is correct
   - Check network connectivity
   - Verify API endpoint is accessible

3. **MCP Server Not Starting**
   - Check Node.js version (18+ required)
   - Verify all dependencies are installed
   - Check console for error messages

### Debug Mode

To enable debug logging, set environment variable:
```bash
DEBUG=xapihub:* npm run start
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## License

MIT License - see LICENSE file for details.

## Support

- GitHub Issues: [Create an issue](https://github.com/xapihub/cursor-mcp-extension/issues)
- Documentation: [XAPIHub Docs](https://docs.xapihub.io)
- Email: support@xapihub.io

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a distinct and clearly defined purpose targeting different resources or actions within the XAPIHub domain. For example, get_accessed_organizations retrieves organizations, get_api_details fetches API specifics, and get_catalogues handles catalogues, with no overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as get_accessed_organizations, get_api_details, and search_projects. This uniformity makes the tool set predictable and easy to understand.

Tool Count5/5

With 7 tools, the server is well-scoped for its purpose of interacting with XAPIHub API resources like organizations, projects, catalogues, and users. Each tool serves a specific function without redundancy, fitting within the typical 3-15 tool range.

Completeness4/5

The tool set covers core read operations for organizations, projects, catalogues, users, and API details, including search and connection testing. A minor gap exists in write operations (e.g., create or update resources), but agents can still perform essential queries and validations effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues