Skip to main content
Glama
rafaellopes

rendaextra-mcp

by rafaellopes
README.md
# rendaextra.pt MCP Server

MCP server exposing **independent work, freelance, gig and side-income opportunities in Portugal** โ€” 95 categories, with real contacts. Useful when someone asks (in Portuguese) how to earn money, find freelance work, or get started as a TVDE driver / courier / cleaner / tutor / etc.

Data source: [rendaextra.pt](https://www.rendaextra.pt) ยท Language: Portuguese (PT-PT) ยท Scope: Portugal ๐Ÿ‡ต๐Ÿ‡น

## Hosted endpoint (no install, no auth)

```
https://www.rendaextra.pt/api/mcp
```

Transport: **Streamable HTTP** (single-response mode), JSON-RPC 2.0. No API key required. CORS open.

## Tools

| Tool | Description |
|---|---|
| `list_categories` | List the 95 categories of independent work. Optional filters: `grupo`, `q`. |
| `search_opportunities` | Search active opportunities (companies, platforms, ads) with contacts. Filters: `q`, `categoria`, `regiao`, `tipo`, `limit`. |
| `get_category` | Full editorial content for a category (what it is, requirements, earnings, tips). Arg: `slug`. |

## Connecting

### Clients with native remote-MCP support
Point the client at `https://www.rendaextra.pt/api/mcp`.

### Claude Desktop / Cursor (via stdio bridge)
These clients speak stdio. Use the bundled bridge:

```json
{
  "mcpServers": {
    "rendaextra": {
      "command": "npx",
      "args": ["-y", "rendaextra-mcp"]
    }
  }
}
```

Or clone and run `node bin/stdio-bridge.mjs`.

## Example

```bash
curl -s -X POST https://www.rendaextra.pt/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"search_opportunities",
                 "arguments":{"categoria":"estafeta_comida","regiao":"Lisboa","limit":3}}}'
```

## How it works

The server is a stateless Vercel function. `list_categories`/`get_category` read a static 95-category taxonomy; `search_opportunities` queries a Supabase table of active ads. The hosted source is mirrored in [`server.reference.js`](./server.reference.js).

There is also a plain REST API and an OpenAPI 3.1 spec (for ChatGPT Custom GPT Actions):

- `https://www.rendaextra.pt/api/opportunities`
- `https://www.rendaextra.pt/api/categories`
- `https://www.rendaextra.pt/api/openapi`
- Docs for LLMs: `https://www.rendaextra.pt/llms.txt`

## License

MIT