Skip to main content
Glama
idapixl

Algora MCP Server

by idapixl
README.md
# Algora MCP Server

An MCP (Model Context Protocol) server that gives AI agents direct access to Algora's open-source bounty platform. Use it from Claude Desktop, Cursor, Windsurf, or any MCP-compatible client to discover, search, and analyze open bounties.

## What It Does

AI agents can call five tools:

| Tool | What It Does |
|------|-------------|
| `list_bounties` | Browse open bounties with filters (org, amount, tech) |
| `get_org_bounties` | Get all bounties for a specific org (cal.com, supabase, etc.) |
| `search_bounties` | Keyword search across titles, descriptions, repos |
| `get_top_bounties` | Highest-value open bounties, sorted by reward |
| `get_bounty_stats` | Aggregate stats: total value, by tech, by org |

## Requirements

- Node.js 18+
- No API key required — Algora's public API is open

## Quick Start

```bash
git clone https://github.com/idapixl/algora-mcp-server
cd algora-mcp-server
npm install
npm run build
```

## Claude Desktop Config

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "algora": {
      "command": "node",
      "args": ["/absolute/path/to/algora-mcp-server/dist/index.js"]
    }
  }
}
```

## Cursor / Windsurf Config

Add to your MCP settings:

```json
{
  "algora": {
    "command": "node",
    "args": ["/absolute/path/to/algora-mcp-server/dist/index.js"]
  }
}
```

## Example Agent Interactions

**Find high-value TypeScript bounties:**
> "Show me open bounties worth $200+ in TypeScript"

The agent will call `get_top_bounties({ tech: "typescript", min_amount: 200 })` and return formatted results.

**Check a specific org:**
> "What bounties does projectdiscovery have open?"

Calls `get_org_bounties({ org: "projectdiscovery" })`.

**Search by domain:**
> "Find bounties related to MCP or model context protocol"

Calls `search_bounties({ keyword: "MCP" })`.

**Market overview:**
> "What's the total value of all open bounties on Algora?"

Calls `get_bounty_stats({})` and returns counts, total, average, breakdown by tech and org.

## Tool Reference

### `list_bounties`

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `org` | string | — | Org slug (e.g., `"cal"`, `"supabase"`) |
| `status` | `"open"` \| `"completed"` \| `"all"` | `"open"` | Bounty status |
| `limit` | number | 20 | Results per page (1–100) |
| `cursor` | string | — | Pagination cursor |
| `min_amount` | number | — | Minimum USD amount |
| `max_amount` | number | — | Maximum USD amount |
| `tech` | string | — | Tech filter (e.g., `"typescript"`) |

### `get_org_bounties`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `org` | string | Yes | Org slug from Algora URL |
| `status` | string | No | Default: `"open"` |
| `limit` | number | No | Default: 50 |

### `search_bounties`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `keyword` | string | Yes | Search term |
| `tech` | string | No | Tech stack filter |
| `min_amount` | number | No | Min USD |
| `limit` | number | No | Default: 30 |

### `get_top_bounties`

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `tech` | string | — | Tech filter |
| `min_amount` | number | 100 | Min USD |
| `limit` | number | 10 | How many to return |

### `get_bounty_stats`

| Parameter | Type | Description |
|-----------|------|-------------|
| `org` | string | Scope to org. Omit for all. |

## Development

```bash
npm run dev      # Run with tsx (no build step)
npm run build    # Compile TypeScript
npm run typecheck  # Type check without emitting
```

## Architecture

The server uses stdio transport (standard MCP convention) — no HTTP server, no port, no configuration. It communicates with the MCP client through stdin/stdout and connects to Algora's public API (no auth required).

The `@algora/sdk` tRPC client handles API calls. Local filtering is applied in-memory for features the API doesn't natively support (keyword search, min/max amount).

## License

MIT

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

Tools are largely distinct, but get_org_bounties is essentially a filtered version of list_bounties, causing minor overlap. Overall, agents can distinguish purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (get/list/search + bounties/stats), making predictions easy.

Tool Count5/5

5 tools cover the querying needs for bounties without being excessive or minimal. Well-scoped for the domain.

Completeness4/5

The set covers key query operations (stats, filter, search, top). Missing a single-bounty detail tool, but the surface is otherwise complete for retrieval.

Maintenance

ActivityInactive
ResponsivenessUnresponsive