{"_id":"42-mcp-server","_rev":"2-38e63208184de360ca2bae02da58b5de","name":"42-mcp-server","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"42-mcp-server","version":"1.0.0","keywords":["mcp","model-context-protocol","ai","llm","ai-agent","42","42-api","42-mcp-server"],"license":"ISC","_id":"42-mcp-server@1.0.0","maintainers":[{"name":"mateolbs","email":"mateo.lebrassancho@gmail.com"}],"homepage":"https://github.com/MatLBS/42-mcp-server#readme","bugs":{"url":"https://github.com/MatLBS/42-mcp-server/issues"},"bin":{"42-mcp-server":"dist/index.js"},"dist":{"shasum":"fbb65d2e37b30d4533652a1923a8a0c3adbff492","tarball":"https://registry.npmjs.org/42-mcp-server/-/42-mcp-server-1.0.0.tgz","fileCount":4,"integrity":"sha512-SJ2BZnY/PN3huGdj1V/pE5zSpa7Cc/tCrNIc1MjihNZv1odmtpxakWbtHM1Y/qgKhrbQ22ETKbF1nYM2PhmRwQ==","signatures":[{"sig":"MEQCIERqkrTN1NO1DyGO1nZd+04GgS6XWjbzEXaVJaB37UE3AiBhyMIvJfhKNcKVzOMArxxbOOEAKEiP3TH+6J/8JYOpgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9637},"main":"index.js","type":"module","gitHead":"7e69cffa5097e0c8b93d0dd8d093e8e36b121f78","scripts":{"ci":"npm run build","build":"tsc","prepublishOnly":"npm run ci"},"_npmUser":{"name":"mateolbs","email":"mateo.lebrassancho@gmail.com"},"repository":{"url":"git+https://github.com/MatLBS/42-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.18.0","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.13.2"},"_npmOperationalInternal":{"tmp":"tmp/42-mcp-server_1.0.0_1781599616895_0.7454416396277197","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"42-mcp-server","version":"1.0.3","bin":{"42-mcp-server":"dist/index.js"},"type":"module","scripts":{"build":"tsc","ci":"npm run build","prepublishOnly":"npm run ci"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","axios":"^1.18.0","dotenv":"^17.4.2","zod":"^3.25.76"},"devDependencies":{"@types/node":"^24.13.2","typescript":"^5.9.3"},"main":"index.js","repository":{"type":"git","url":"git+https://github.com/MatLBS/42-mcp-server.git"},"keywords":["mcp","model-context-protocol","ai","llm","ai-agent","42","42-api","42-mcp-server"],"license":"ISC","bugs":{"url":"https://github.com/MatLBS/42-mcp-server/issues"},"homepage":"https://github.com/MatLBS/42-mcp-server#readme","_id":"42-mcp-server@1.0.3","gitHead":"4cdd163e648519fa87633c6133caafb799c5828c","description":"A [Model Context Protocol](https://modelcontextprotocol.io) server designed by [Mateo LBS](https://github.com/MatLBS) to interact with the [42 API](https://api.intra.42.fr). It lets AI assistants look up 42 students' profiles, progression, teams, and coal","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-JbHi5poOxICD5gJ10UWYvlWpqskc1TZfNy3fUc9L4xseKtlosGNp9JSgmkWh2dVEqFu2WfT42YyJDTo+m/bwRg==","shasum":"fbaf740be57af64f9601b410736394f5db7d9515","tarball":"https://registry.npmjs.org/42-mcp-server/-/42-mcp-server-1.0.3.tgz","fileCount":5,"unpackedSize":18216,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDSFLZkn7DNeFN9QLAf1Nw/iKufBLYoZ7qlKc94k99EyAIhAMwSd6LeQmhUpARpfMHS8995cbpIXXLsZeKIPa6HAccr"}]},"_npmUser":{"name":"mateolbs","email":"mateo.lebrassancho@gmail.com"},"directories":{},"maintainers":[{"name":"mateolbs","email":"mateo.lebrassancho@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/42-mcp-server_1.0.3_1781977254386_0.2107571669728061"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T08:46:56.671Z","modified":"2026-06-20T17:40:54.633Z","1.0.0":"2026-06-16T08:46:57.033Z","1.0.3":"2026-06-20T17:40:54.524Z"},"bugs":{"url":"https://github.com/MatLBS/42-mcp-server/issues"},"license":"ISC","homepage":"https://github.com/MatLBS/42-mcp-server#readme","keywords":["mcp","model-context-protocol","ai","llm","ai-agent","42","42-api","42-mcp-server"],"repository":{"type":"git","url":"git+https://github.com/MatLBS/42-mcp-server.git"},"maintainers":[{"name":"mateolbs","email":"mateo.lebrassancho@gmail.com"}],"readme":"# 42 MCP Server\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server designed by [Mateo LBS](https://github.com/MatLBS) to interact with the [42 API](https://api.intra.42.fr). It lets AI assistants look up 42 students' profiles, progression, teams, and coalition standing, and browse campus life — locations, events, and exams.\n\n[![Security Scan](https://mcpampel.com/badge/MatLBS/42-mcp-server.svg)](https://mcpampel.com/repo/MatLBS/42-mcp-server)\n\n## Features\n\n- **Profiles & progression:** Look up any 42 student's profile, cursus progression, project statuses, earned achievements, quests, and titles by login or ID\n- **Search:** Search/list users with filters (campus, login, piscine year/month), paginated\n- **Teams:** Get the teams a user has been part of, or the full detail of a team (members, status, final mark, repo url)\n- **Coalitions:** Get a user's coalition membership/score, or a coalition's score history\n- **Campus life:** List campuses, see who's currently logged in and where, browse upcoming events and exam dates\n\n## How to Install\n\nAdd the server to your MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"42-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"42-mcp-server@latest\"],\n      \"env\": {\n        \"FORTY_TWO_TOKEN\": \"<FORTY_TWO_TOKEN>\",\n        \"FORTY_TWO_URL\": \"https://api.intra.42.fr\"\n      }\n    }\n  }\n}\n```\n\n## Configuration\n\n| Variable          | Description                                          |\n| ------------------ | ------------------------------------------------------ |\n| `FORTY_TWO_TOKEN`  | A 42 API access token (OAuth2 Bearer token)            |\n| `FORTY_TWO_URL`    | Base URL of the 42 API (`https://api.intra.42.fr`)     |\n\n`FORTY_TWO_TOKEN` is used as-is and is not refreshed automatically by the server. Get one via the\nClient Credentials grant, using the UID/secret of a 42 OAuth app created at\n[profile.intra.42.fr/oauth/applications](https://profile.intra.42.fr/oauth/applications) (the\n\"public\" scope is enough):\n\n```bash\ncurl -X POST \"https://api.intra.42.fr/oauth/token\" \\\n  -d \"grant_type=client_credentials\" \\\n  -d \"client_id=<uid>\" \\\n  -d \"client_secret=<secret>\"\n```\n\nCopy the `access_token` field from the response into `FORTY_TWO_TOKEN`. It expires after a couple\nof hours (see `expires_in` in the response), so you'll need to repeat this and update it when it\ndoes.\n\n### Output format\n\nThe server returns **JSON** output.\n\n## Available Tools\n\n### Profiles & progression\n\n| Tool                        | Description                                                                |\n| --------------------------- | --------------------------------------------------------------------------- |\n| `42-get-user`               | Get a 42 user's full profile by numeric ID or login                        |\n| `42-search-users`           | List/search users with optional filters (campus, login, piscine year/month), paginated |\n| `42-get-user-cursus`        | Get a user's progression across cursus (level, skills, blackholed_at)      |\n| `42-get-user-projects`      | Get a user's project statuses (validated/failed, mark, team)               |\n| `42-get-user-achievements`  | Get the achievements (badges) a user has earned                            |\n| `42-get-user-quests`        | Get a user's quest progress (in-progress and validated quests)             |\n| `42-get-user-titles`        | Get the titles a user has unlocked                                         |\n\n### Teams\n\n| Tool                        | Description                                                                |\n| --------------------------- | --------------------------------------------------------------------------- |\n| `42-get-user-teams`         | Get the teams a user has been part of for project defenses                 |\n| `42-get-team`                | Get full details of a team by ID (members, status, final mark, repo url)   |\n\n### Coalitions\n\n| Tool                        | Description                                                  |\n| --------------------------- | -------------------------------------------------------------- |\n| `42-get-user-coalition`     | Get a user's coalition membership and current score             |\n| `42-get-coalition-scores`   | Get the score history (points gained/lost) of a coalition       |\n\n### Campus life\n\n| Tool                        | Description                                                  |\n| --------------------------- | -------------------------------------------------------------- |\n| `42-list-campus`            | List all 42 campuses, paginated                               |\n| `42-get-campus-locations`   | Get workstation locations for a campus (who's logged in where) |\n| `42-list-events`            | List upcoming events for a campus, paginated                  |\n| `42-get-event`              | Get details of a specific event by ID                          |\n| `42-list-exams`             | List exam dates for a campus, paginated                       |\n","readmeFilename":"README.md","description":"A [Model Context Protocol](https://modelcontextprotocol.io) server designed by [Mateo LBS](https://github.com/MatLBS) to interact with the [42 API](https://api.intra.42.fr). It lets AI assistants look up 42 students' profiles, progression, teams, and coal"}