使用说明

项目简介

本项目 'Advent of Code MCP Server' (aoc-mcp) 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 MCP 客户端(如 Cursor 编辑器)提供访问 Advent of Code 谜题内容和输入数据的能力。它通过 MCP 协议提供 'get_puzzle' 工具,允许客户端根据年份和日期获取指定谜题的描述和输入。

主要功能点

  • 获取谜题描述: 根据指定的年份和日期,获取 Advent of Code 网站上对应谜题的 Part 1 和 Part 2 的描述文本。
  • 获取谜题输入: 根据指定的年份和日期,获取对应谜题的个人输入数据。需要用户配置有效的 Advent of Code 会话 Cookie。
  • MCP 工具: 提供 'get_puzzle' 工具,可以通过 MCP 客户端调用,方便快捷地获取谜题信息。
  • 标准 MCP 服务器: 遵循 MCP 协议规范,易于集成到任何兼容 MCP 协议的客户端环境中。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/dbrowning28/aoc-mcp.git
    cd aoc-mcp
  2. 安装 uv:

    pip install uv  # 或者 macOS 上使用:brew install uv
  3. 创建虚拟环境并安装依赖:

    uv venv
    source .venv/bin/activate  # Windows 系统使用: .venv\Scripts\activate
    uv pip sync
  4. 配置会话 Cookie:

    • 在项目根目录下创建 '.env' 文件。
    • 从 Advent of Code 网站获取您的 'session' cookie。
      • 登录 Advent of Code
      • 打开浏览器开发者工具 (F12)。
      • 切换到 "Application" 或 "存储" (Storage) 选项卡。
      • 在 "Cookies" 下找到 'session' cookie。
      • 复制 'session' cookie 的值并粘贴到 '.env' 文件中,格式如下:
        AOC_SESSION_COOKIE=您的_session_cookie_值
      • 请务必妥善保管您的 session cookie,不要泄露或提交到版本控制系统。

服务器配置

为了让 MCP 客户端(例如 Cursor)连接到 'aoc-mcp' 服务器,您需要配置客户端的 MCP 设置。以下是配置信息示例(JSON 格式),请根据您的实际情况进行配置。

{
  "servers": [
    {
      "name": "aoc-mcp",
      "command": "python",
      "args": ["-m", "aoc_mcp.server"],
      "languages": [],
      "rootPath": "."
    }
  ]
}

配置参数说明:

  • 'name': 服务器名称,可以自定义,例如 "aoc-mcp"。
  • 'command': 启动服务器的命令,这里使用 'python'。
  • 'args': 命令参数,指定运行 'aoc_mcp.server' 模块来启动服务器。
  • 'languages': 指定服务器支持的语言类型,这里留空表示不限制。
  • 'rootPath': 服务器的工作目录,设置为当前项目根目录 "." 即可。

请注意: MCP 客户端通常需要您在设置中填入以上 JSON 配置信息,以便客户端能够找到并启动 'aoc-mcp' 服务器。具体的配置位置和方法请参考您使用的 MCP 客户端的文档。

基本使用方法

配置完成后,在 MCP 客户端环境中,您可以使用 'aoc-mcp' 服务器提供的 'get_puzzle' 工具来获取 Advent of Code 谜题信息。

例如,在支持 MCP 协议的环境中,您可以使用类似以下的调用方式(具体代码取决于 MCP 客户端的 API):

result = await mcp.invoke("aoc-mcp/get_puzzle", {
    "year": 2023,
    "day": 1
})

# result 将包含谜题的 year, day, parts (描述), 和 input
part1_description = result["parts"][0]
puzzle_input = result["input"]

其中 '"aoc-mcp/get_puzzle"' 表示调用名为 "aoc-mcp" 的 MCP 服务器提供的 "get_puzzle" 工具。参数 '{ "year": 2023, "day": 1 }' 指定要获取 2023 年第 1 天的谜题信息。

返回的 'result' 是一个 JSON 对象,包含谜题的年份、日期、描述(parts 列表)和输入数据。您可以根据需要从中提取所需的信息。

信息

分类

开发者工具