使用说明
42 MCP服务器
英语| 日本语
42 MCP服务器 是一个暴露 42的内部网API,通过 模型上下文协议(MCP)这使得LLM(大型语言模型)代理能够安全和标准化地访问42的丰富数据(用户信息、项目、校园信息等)。
概述
该服务器将请求抽象到42 API,并以MCP定义的资源和工具的形式提供这些请求。它支持两种传输模式,Stdio和HTTP,使其与从CLI工具到现代IDE扩展的各种客户端兼容。
特性
- 双重运输: 支持Stdio和HTTP。
- 42 API集成: 提供有关42个用户、项目、校园等的信息。
- 工具: 配备了许多有用的工具,如用户搜索和Cursus级检索。
先决条件
设置
-
克隆存储库:
git clone https://github.com/smizuoch/42-mcp-server.git cd 42-mcp-server -
安装依赖项:
npm install -
获得42个API证书: 您需要在42内部网上创建一个OAuth应用程序来获取客户端ID和密钥。
- 访问 42个OAuth应用程序
- 使用您的42帐户登录
- 填写申请详情:
- 姓名: 为您的应用程序输入一个名称(例如,“42 MCP服务器”)
- 重定向URI: 进入
http://localhost:8080(或任何本地主机URL) - 范围: 选择适当的范围(例如。,
public用于基本访问)
- 点击“提交”以创建应用程序
- 复制生成的 应用标识符 和 秘密
-
设置环境变量: 复制
.env.example创建a.env文件并填写您的42个API证书。cp .env.example .env……的内容
.env文件:42_CLIENT_ID=YOUR_42_CLIENT_ID 42_CLIENT_SECRET=YOUR_42_CLIENT_SECRET替换
YOUR_42_CLIENT_ID使用应用程序ID和YOUR_42_CLIENT_SECRET使用步骤3中的秘密。
用法
发展模式
-
标准模式: 使用标准输入/输出与MCP客户端通信。
npm run dev -
HTTP模式: 启动HTTP服务器以与MCP客户端通信。适用于VSCode扩展和类似工具。
npm run dev:http
生产
-
构建TypeScript:
npm run build -
启动HTTP服务器:
npm run start服务器将在以下时间启动
http://127.0.0.1:8042.
VSCode集成
-
以HTTP模式启动服务器:
npm run dev:http您将在终端中看到这样的日志:
MCP HTTP server ready on port 8042 MCP endpoint: http://127.0.0.1:8042/ Health check: http://127.0.0.1:8042/health VSCode Configuration (.vscode/mcp.json): { "servers": { "42-api": { "url": "http://127.0.0.1:8042/" } } } -
创建VSCode配置文件: 创建一个名为的文件
.vscode/mcp.json在项目根目录中,粘贴上面日志中显示的内容。.vscode/mcp.json:{ "servers": { "42-api": { "url": "http://127.0.0.1:8042/" } } } -
重新加载VSCode后,扩展程序将识别服务器,您可以使用前缀调用资源和工具,如
@42-api.
提供MCP功能
资源
| URI | 描述 |
|---|---|
42://user/{id} |
指定ID的用户配置文件 |
42://me |
当前已验证用户的配置文件 |
42://campus |
所有校区列表 |
42://attachments |
所有附件列表 |
42://attachments/{id} |
指定项目的附件 |
42://projects |
所有项目列表 |
42://project/{id} |
指定ID的项目详细信息 |
42://me/projects |
已验证用户的项目列表 |
42://accreditations |
所有认证列表 |
42://accreditation/{id} |
指定ID的认证详细信息 |
工具
| 工具名称 | 描述 |
|---|---|
searchUsers |
按登录名搜索用户。 |
getCursusLevel |
获取用户在特定Cursus中的级别。 |
getUserProjects |
获取用户项目列表。 |
getCoalition |
获取用户的联盟信息。 |
getCampusUsers |
通过校园ID或用户ID获取校园用户关联 |
getBalances |
获取余额信息(需要特定角色)。 |
getClusters |
获取集群信息(需要特定角色)。 |
getLocations |
获取用户登录状态(座位信息)。 |
getAttachments |
获取项目或项目会话的附件列表。 |
getAttachment |
获取特定附件的详细信息(如PDF URL)。 |
getProjects |
获取项目列表(包括可选的Cursus和过滤器规格)。 |
getProject |
获取特定项目的详细信息。 |
getMyProjects |
获取经过身份验证的用户的项目列表。 |
getAccreditations |
获取认证列表,可选择按用户、cursus、验证状态进行过滤。 |
getAccreditation |
获取特定认证的详细信息。 |