Skip to main content
Glama
Yass-Devv

OneTwoFreelance

by Yass-Devv

OneTwoFreelance — MCP Tech Jobs

Petit pipeline qui collecte des offres freelance/contract dans la tech en Europe (EURES + Arbeitnow), les enrichit avec l'IA (compétences, séniorité, mode de travail, résumé...), puis les expose de deux façons :

  • une interface web consultable dans un navigateur (recherche, filtres, favoris) ;

  • un serveur MCP interrogeable par un assistant IA (Claude, etc.) via deux outils : search_jobs et get_job.

Serveur MCP déployé : https://mcp-tech-jobs.onrender.com (endpoint MCP : POST /mcp)

Comment ça marche

Le projet fonctionne en 3 étapes indépendantes, chacune avec son propre script :

1. npm run fetch      → récupère les offres brutes (EURES + Arbeitnow)
                          et les enregistre dans data/raw_jobs.json

2. npm run structure   → envoie chaque offre à gpt-4o-mini pour en extraire
                          les compétences, la séniorité, le mode de travail...
                          et sauvegarde le résultat dans data/structured_jobs.json

3. npm run web         → sert l'interface web à partir des données enrichies
   npm run dev:mcp     → démarre le serveur MCP à partir des mêmes données

Les étapes 1 et 2 ne tournent pas en continu : ce sont des scripts ponctuels à relancer quand on veut rafraîchir les données. Les étapes 3 servent le résultat déjà généré.

Related MCP server: Joblet.ai Claude Connector

Installation

Prérequis : Node.js 18+ et une clé API OpenAI.

npm install

Créer un fichier .env à la racine avec :

OPENAI_API_KEY=sk-...
PORT=3000        # optionnel, port du serveur MCP (défaut 3000)
WEB_PORT=3100    # optionnel, port de l'interface web (défaut 3100)

Utilisation

Générer les données (à faire une première fois, puis à chaque rafraîchissement) :

npm run fetch
npm run structure

Puis lancer l'un des deux serveurs :

npm run web       # interface web sur http://localhost:3100
npm run dev:mcp   # serveur MCP sur http://localhost:3000 (endpoint POST /mcp)

Structure du projet

src/
  fetch_raw.ts       # récupère et filtre les offres tech depuis EURES + Arbeitnow
  structure_jobs.ts  # enrichit chaque offre via OpenAI (structured outputs)
  mcp_server.ts       # serveur MCP (outils search_jobs / get_job)
  web_server.ts       # petit serveur Express qui injecte les données dans public/index.html
public/
  index.html          # interface web (HTML/CSS/JS, sans framework)
data/
  raw_jobs.json        # sortie de l'étape "fetch"
  structured_jobs.json # sortie de l'étape "structure" (utilisée par le web et le MCP)

Outils MCP exposés

  • search_jobs — recherche par mot-clé, catégorie, séniorité, mode de travail ou type de contrat.

  • get_job — retourne le détail complet d'une offre à partir de son id.

Sources et limites

  • EURES : filtré nativement côté serveur sur les offres "selfemployed", puis filtré côté client sur des mots-clés tech (titre + description).

  • Arbeitnow : pas de filtre serveur freelance/tech disponible, donc tout le filtrage (contrat + domaine tech) se fait côté client.

  • Le dédoublonnage se fait par URL et par titre normalisé, toutes sources confondues.

  • npm run build compile src/ vers dist/ (utilisé par npm start, qui lance dist/mcp_server.js).

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search and explore a large database of tech job listings with filtering options.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables searching job listings on joblet.ai by title, company, location, and employment type, and retrieving full job details including description, responsibilities, requirements, salary, and apply link.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to search and explore remote job listings, salary stats, and popular roles, and supports token-authenticated actions like job alerts and apply redirects.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables an MCP-compatible assistant to search public job listings from EURES without an API key, returning details such as title, company, location, remote status, and listing URLs.
    2
    -