42 MCP服务器
英语| 日本语
42 MCP服务器 是一个暴露 42的内部网API,通过 模型上下文协议(MCP)这使得LLM(大型语言模型)代理能够安全和标准化地访问42的丰富数据(用户信息、项目、校园信息等)。
概述
该服务器将请求抽象到42 API,并以MCP定义的资源和工具的形式提供这些请求。它支持两种传输模式,Stdio和HTTP,使其与从CLI工具到现代IDE扩展的各种客户端兼容。
特性
- 双重运输: 支持Stdio和HTTP。
- 42 API集成: 提供有关42个用户、项目、校园等的信息。
- 工具: 配备了许多有用的工具,如用户搜索和Cursus级检索。
先决条件
- (v20.x或更高版本)
- 42 API客户端ID和机密
设置
- 克隆存储库:
git clone https://github.com/smizuoch/42-mcp-server.git
cd 42-mcp-server- 安装依赖项:
npm install- 获得42个API证书:
您需要在42内部网上创建一个OAuth应用程序来获取客户端ID和密钥。
1. 访问 42个OAuth应用程序 1. 使用您的42帐户登录 1. 填写申请详情: - 姓名: 为您的应用程序输入一个名称(例如,“42 MCP服务器”) - 重定向URI: 进入 http://localhost:8080 (或任何本地主机URL) - 范围: 选择适当的范围(例如。, public 用于基本访问) 1. 点击“提交”以创建应用程序 1. 复制生成的 应用标识符 和 秘密
- 设置环境变量:
复制 .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 | 获取特定认证的详细信息。 |
