Factorial MCP Server
使用说明内容(Markdown格式)
-
项目简介
- 该项目实现一个 MCP 服务端,允许 AI 客户端通过标准化的 JSON-RPC 调用来读取资源、执行工具、渲染与获取提示模板等能力,从而在本地或容器中与 Factorial HR API 集成,完成如请假申请、信息查询等任务的自动化对话流程。
-
主要功能点
- MCP 兼容:提供使用 MCP 工具的端点,支持客户端初始化、工具列表查询、工具调用等标准流程。
- 资源与工具暴露:实现若干 MCP 工具,涵盖授权、员工信息、时间休假管理等场景。
- OAuth2 授权:通过 OAuth2 完成对 Factorial API 的安全验证,并持久化令牌。
- Factorial API 集成:对 Factorial 公共 API 进行 GET/POST/PUT/DELETE 请求,带令牌鉴权、缓存等优化。
- 会话与授权管理:维护访问令牌状态、回调处理、状态校验等,支持 Interative Authorization 流程。
- 本地化与扩展性:提供本地化的 HTTP 回调服务器(OAuthHttpServer)及可扩展的工具/权限模型。
- 测试覆盖:包含多种集成与单元测试,验证工具注册与调用、授权流程、HTTP 回调等。
-
安装步骤
- 需要的运行环境:Java 17+、Docker(用于 MCP 客户端示例集成)以及本地或容器化部署环境。
- 构建与打包:在项目根目录执行构建命令(如使用 Just 进行构建与运行的教程所示),构建完成后会生成可用于 Docker 的镜像 GHCR.io/ratek-20/factorial-mcp-server。
- 运行依赖:在运行前需要配置环境变量,如 OAUTH2_APPLICATION_ID、OAUTH2_APPLICATION_SECRET、Factorial API 的重定向 URI、主机名等,以及可能的数据库/缓存卷等(文档中有详细说明)。
- 啟动示例(通常通过 MCP 客户端进行连接,示例中以 STDIO 传输为主):
- 将服务器镜像通过 Docker 运行,并暴露端口 7000,数据卷挂载到 /app/data,同时传入 OAuth 应用凭据与传输协议参数。具体参数请参考仓库提供的示例配置。
-
服务器配置(MCP 客户端需要的配置信息,示例以 JSON 表示,实际为文本配置,非代码)
- serverName: "factorial-mcp-server"
- command: "docker"
- args: [ "run", "-i", "--rm", "-p", "7000:7000", "-v", "factorial-mcp-server_cache:/app/data", "-e", "EXIT_ON_EOF=true", "-e", "OAUTH2_APPLICATION_ID", "-e", "OAUTH2_APPLICATION_SECRET", "ghcr.io/ratek-20/factorial-mcp-server:latest", "--transport", "stdio" ]
- 说明:该配置表示通过 Docker 运行服务器镜像,开启交互式输入输出(stdio)传输,端口暴露给 MCP 客户端,数据缓存保存在 Docker 的命名卷中,且注入 OAuth 应用凭据以完成授权流程。
-
基本使用方法
- 启动后,通过 MCP 客户端(如 Claude Code、Gemini CLI、Copilot CLI 等)建立与服务器的连接,使用 initialize 握手、获取工具列表、调用具体工具等。
- 使用 OAuth2 授权流程首次使用时会在浏览器中完成授权,授权成功后服务器将缓存并使用访问令牌进行后续 API 调用。
- 常用工具示例包括:
- get_current_employee、get_employee(查询员工信息)
- get_available_vacation_days、get_leave_types、read_time_offs、request_time_off、approve_time_off、update_time_off、delete_time_off(时间休假管理相关操作)
- 如遇令牌失效,系统会尝试刷新令牌,刷新失败时需重新授权。