项目简介
'aoc-utils-mcp' 是一个基于 Model Context Protocol (MCP) 构建的服务器,利用 FastMCP 框架实现。它专注于提供与 Advent of Code (AoC) 相关的实用工具,核心功能是让大型语言模型 (LLM) 客户端能够方便地获取特定年份和日期的 AoC 谜题输入数据。该项目也是一个实现 Python 函数 MCP 服务器的优秀示例,并展示了如何将其集成到 Gemini CLI 等 AI 工具中。
主要功能点
- 获取谜题输入 (get_puzzle_input):
- 提供 'get_puzzle_input(year: int, day: int)' 工具,允许客户端(如LLM)指定年份和日期来检索对应的 Advent of Code 谜题数据。
- 该工具需要您提供有效的 AoC 会话 Cookie,以便获取您的个性化谜题输入。
- 健康检查:
- 提供 '/health' 端点,用于检查 MCP 服务器的运行状态。
安装步骤
-
克隆仓库:
git clone https://github.com/derailed-dash/aoc-utils-mcp.git cd aoc-utils-mcp -
创建并激活虚拟环境,安装依赖: 该项目使用 'uv' 进行依赖管理。
uv sync source .venv/bin/activate -
获取 AoC 会话密钥: 要获取您的 AoC 谜题数据,需要提供唯一的 AoC 会话密钥。
- 访问 Advent of Code 网站 并登录。
- 打开浏览器开发者工具 (F12)。
- 切换到 'Application' 或 '存储' 标签页,展开 'Cookies',找到名为 'session' 的 Cookie。
- 复制该 Cookie 的值。
-
设置环境变量: 将复制的会话密钥设置为环境变量 'AOC_SESSION_COOKIE'。
export AOC_SESSION_COOKIE=<您的会话密钥> -
运行 MCP 服务器: 切换到服务器代码目录并启动服务器。
cd mcp-server/src # 默认使用 stdio 传输协议(推荐本地开发) fastmcp run server.py # 或者使用 HTTP 传输协议,例如在 9000 端口 fastmcp run server.py --transport http --port 9000服务器启动后,即可通过 MCP 客户端进行连接和调用。
服务器配置(供 MCP 客户端使用)
MCP 客户端(如 Gemini CLI)需要配置该服务器才能进行交互。配置信息通常以JSON格式提供,包含以下关键字段:
- 服务器名称 (Server Name): 用于唯一标识此MCP服务器,例如 'aoc-utils-mcp'。
- 启动命令 (Command): 执行服务器的命令,通常是 'uv'。
- 启动参数 (Args): 传递给启动命令的参数列表,例如 'run'、'--with' 'fastmcp'、'fastmcp'、'run' 以及服务器主脚本的完整路径(例如,如果您将仓库克隆到 '/home/user/',则路径可能为 '/home/user/aoc-utils-mcp/mcp-server/src/server.py')。
- 环境变量 (Env): 服务器运行时所需的环境变量,例如 'AOC_SESSION_COOKIE'。在实际配置中,其值应替换为您在步骤4中设置的系统环境变量 '${AOC_SESSION_COOKIE}'。
- 工作目录 (Cwd): 服务器启动时的工作目录,通常指向服务器脚本所在的目录(例如 '/home/user/aoc-utils-mcp/mcp-server/src')。
请确保在启动MCP客户端之前,'AOC_SESSION_COOKIE' 环境变量已在您的系统环境中设置。
基本使用方法
一旦 MCP 服务器运行且您的 MCP 客户端(如 Gemini CLI)配置完成,您就可以通过 LLM 客户端与该服务交互。
例如,在 Gemini CLI 中,您可以直接通过自然语言提示来调用 'get_puzzle_input' 工具:
- 示例提示: "Fetch the input data for AoC 2022 day 1, and save to tmp/aoc_2022_day1_input.txt" (获取 2022 年第 1 天的 AoC 输入数据,并保存到 tmp/aoc_2022_day1_input.txt)
LLM 客户端将识别 'get_puzzle_input' 工具,并根据您的提示提取 'year' 和 'day' 参数,然后调用 MCP 服务器上的该工具来获取数据。
信息
分类
开发者工具