42 API 服务器

42 MCP Server 是一个通过 Model Context Protocol (MCP) 暴露 42 内网 API 的服务器,使 LLM 代理能够安全、标准化地访问 42 的丰富数据(用户信息、项目、校园信息等)。

  • by smizuoch
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 smizuoch/42-mcp-server

使用说明

42 MCP服务器

英语| 日本语

42 MCP服务器 是一个暴露 42的内部网API,通过 模型上下文协议(MCP)这使得LLM(大型语言模型)代理能够安全和标准化地访问42的丰富数据(用户信息、项目、校园信息等)。

概述

该服务器将请求抽象到42 API,并以MCP定义的资源和工具的形式提供这些请求。它支持两种传输模式,Stdio和HTTP,使其与从CLI工具到现代IDE扩展的各种客户端兼容。

特性

  • 双重运输: 支持Stdio和HTTP。
  • 42 API集成: 提供有关42个用户、项目、校园等的信息。
  • 工具: 配备了许多有用的工具,如用户搜索和Cursus级检索。

先决条件

  • Node.js (v20.x或更高版本)
  • npm
  • 42 API客户端ID和机密

设置

  1. 克隆存储库:

    git clone https://github.com/smizuoch/42-mcp-server.git
    cd 42-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 获得42个API证书: 您需要在42内部网上创建一个OAuth应用程序来获取客户端ID和密钥。

    1. 访问 42个OAuth应用程序
    2. 使用您的42帐户登录
    3. 填写申请详情:
      • 姓名: 为您的应用程序输入一个名称(例如,“42 MCP服务器”)
      • 重定向URI: 进入 http://localhost:8080 (或任何本地主机URL)
      • 范围: 选择适当的范围(例如。, public 用于基本访问)
    4. 点击“提交”以创建应用程序
    5. 复制生成的 应用标识符 和 秘密
  4. 设置环境变量: 复制 .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
    

生产

  1. 构建TypeScript:

    npm run build
    
  2. 启动HTTP服务器:

    npm run start
    

    服务器将在以下时间启动 http://127.0.0.1:8042.

VSCode集成

  1. 以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/"
        }
      }
    }
    
  2. 创建VSCode配置文件: 创建一个名为的文件 .vscode/mcp.json 在项目根目录中,粘贴上面日志中显示的内容。

    .vscode/mcp.json:

    {
      "servers": {
        "42-api": {
          "url": "http://127.0.0.1:8042/"
        }
      }
    }
    
  3. 重新加载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 获取特定认证的详细信息。

技术栈