Skip to main content
Glama

mcp-staffing-demo

Français

A small, self-contained MCP server used as the live demo of the talk « MCP : donner des mains à vos agents » (English). The domain is deliberately familiar: staffing at a consulting firm. Four tools, one in-memory dataset, no network calls and no database, because a demo on a conference stage shouldn't depend on anything.

Tool names and data are in French, as in the talk. Everything is fictional.

Quick start

git clone https://github.com/brbousnguar/mcp-staffing-demo
cd mcp-staffing-demo
npm install && npm run build

Related MCP server: JobMatch MCP

Connecting

Claude Code

claude mcp add staffing -- node "$PWD/dist/index.js"

Claude Desktop, Cursor, or any client that reads an mcpServers config (for VS Code + Copilot, put the same block in .vscode/mcp.json):

{
  "mcpServers": {
    "staffing": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-staffing-demo/dist/index.js"]
    }
  }
}

Then ask your agent something like: "Can we staff the insurer's mission starting in November, and with whom?"

The tools

Tool

Input

Output

rechercher_collaborateurs

competence?, niveau_min?, agence?, mois?, jours_min?, limite

A short list, sorted by level then availability

obtenir_collaborateur

id

One person's profile: rated skills, day rate, languages, monthly load

analyser_staffing_mission

mission_id, candidats_max

A coverage verdict plus scored candidates, with typed structuredContent

reserver_collaborateur

collaborateur_id, mission_id, mois, jours

A booking confirmation, or an explicit error

What the code demonstrates

Each tool exists to make one point from the talk:

  • z.strictObject everywhere. A parameter the model invents is rejected with Unrecognized key: "…" instead of being silently ignored — the bug from lesson 1 of the talk.

  • The computation lives in the server. analyser_staffing_mission crosses skills, load and budget in tested TypeScript. The model gets a verdict, not tables to reconcile.

  • Two outputs per call. content carries the answer the model reads; structuredContent the same result as typed JSON for orchestrating code.

  • No empty success. reserver_collaborateur fails loudly if the person is unknown or out of capacity. An agent can never believe it wrote something it didn't.

Scripts

Command

Does

npm run build

Compile src/ to dist/

npm run dev

Compile on change

npm run check

Type-check only

npm start

Run the server on stdio

The dataset

src/donnees.ts: 8 people, 3 missions, a capacity of 20 working days a month, four open months (2026-09 to 2026-12). All fictional. Bookings made during a session live in memory and disappear on restart.

Stack

TypeScript 5.9 · @modelcontextprotocol/server 2.0 · Zod 4 · stdio transport · Node ≥ 20

Mind the SDK version. This server uses SDK v2 (@modelcontextprotocol/server, zod/v4, inputSchema as a z.strictObject({…})). Most tutorials still use SDK v1 (@modelcontextprotocol/sdk), whose import paths and inputSchema shape (a raw shape rather than a Zod object) differ. Copying this code into a v1 project won't work as is.

License

MIT

Available Tools

4 tools
analyser_staffing_missionAnalyser le staffing d une missionB

Evalue quels collaborateurs peuvent couvrir une mission : score d'adequation, ecarts de competences, cout estime et alerte budget. Une seule reponse, deja calculee.

Inputs: mission_id (required), candidats_max. Returns: candidats, etp_requis, mission_id, etp_couvert, +1 more

obtenir_collaborateurObtenir la fiche d un collaborateurA

Fiche detaillee d'un collaborateur : competences notees, TJM, langues et disponibilite mois par mois.

Inputs: id (required).

rechercher_collaborateursRechercher des collaborateursA

Recherche des collaborateurs disponibles selon une competence, une agence et un mois. Retourne une liste courte, triee par niveau de competence puis par disponibilite.

Inputs: mois, agence, limite, jours_min, +2 more.

reserver_collaborateurReserver un collaborateur sur une missionB

Pose une reservation de jours sur un collaborateur pour un mois donne. Echoue explicitement si le collaborateur, la mission ou la capacite ne suivent pas.

Inputs: mois (required), jours (required), mission_id (required), collaborateur_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool targets a distinct action: fetch one collaborator's detail, search a list, analyze mission fit, and create a reservation. The boundaries are clear and non-overlapping, so an agent can select confidently.

    Naming Consistency5/5

    All four names follow a consistent French verb_noun pattern (obtenir_/rechercher_/analyser_/reserver_) with plural/singular nouns used meaningfully. No mixed conventions or vague verbs.

    Tool Count4/5

    Four tools is on the lean side but well-scoped for a focused staffing demo, with each tool earning its place. Slightly thin given the domain could support more operations.

    Completeness3/5

    Covers the core search → detail → analysis → reservation flow, but there is no way to cancel/modify a reservation or list existing bookings/missions, leaving dead ends after a booking. Notable lifecycle gaps remain.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      B
      maintenance
      Provides MCP tools for job search, inbound recruiter activity triage, conversation inbox access, and guarded profile updates.
      -
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables AI-powered job search and resume matching with strict skill verification, resume parsing, and configurable user preferences, plus MCP tools for job search, Excel export, and email dispatch.
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables users to search and view job postings and manage career-profile data such as work experiences, job summaries, career goals, and technical skills through MCP-compatible clients.
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables AI assistants to search jobs, retrieve job details, and view or update career-profile data such as experiences, job summaries, career goals, and technical skills through MCP tools.
      -