Skip to main content
Glama

CodeTour

动画化、由 LLM 驱动的 “用五岁小孩能懂的方式解释”GitHub 拉取请求导览。

CodeTour 是一个与本地浏览器查看器配套的 MCP 服务器。Claude(或任何由 MCP 驱动的 LLM)一步一步地调用 CodeTour 的工具;查看器会在拉取请求上动画展示——文件树、差异、脉动的行高亮——同时旁白以字幕形式显示,并通过浏览器内置的文本转语音功能朗读出来。每个站点都会链接回 GitHub,以便查看者自行深入查看细节。

工作原理

Claude ──(MCP stdio)──▶ codetour ──(WebSocket)──▶ your browser
                          │
                          └──(REST)──▶ GitHub API
  1. LLM 调用 get_pr_info / get_file_diff 通过 CodeTour 读取 PR,因此其旁白与显示的内容完全匹配。

  2. start_tour 会在你的浏览器中打开查看器,并等待你点击 开始(点击还会启用音频)。

  3. show_overview 和一系列 show_step 调用会动画展示这些更改。每次调用都会阻塞,直到旁白播报结束,因此导览会自动调整节奏。

  4. end_tour 显示带有 GitHub 上 PR 链接的结束摘要。

Related MCP server: Code Review MCP Server

安装

需要 Python 3.11+ 和 uv。

git clone <this repo> && cd CodeTour
uv sync

在 Claude Code 中以 用户范围 注册,以便这些工具在每个仓库中都可用:

claude mcp add --scope user codetour -- uv --directory /path/to/CodeTour run codetour

然后只需询问:

给我一个针对 https://github.com/owner/repo/pull/123 的高层导览。

codetour 技能

该仓库附带一个 Claude Code 技能(skills/codetour/SKILL.md),它教会 Claude 如何打造出色的导览:通过 gh 自动检测当前分支的 PR,在打开查看器之前规划 3–7 个站点,采用通俗易懂的讲解风格规则,以及如何在查看器关闭时恢复。通过将其链接(或复制)到你的个人技能目录来安装:

ln -s /path/to/CodeTour/skills/codetour ~/.claude/skills/codetour

安装该技能后,在任何仓库中,简单的一句“导览这个 PR”即可完成正确操作。在安装 MCP 服务器或该技能后,请重启你的 Claude Code 会话。

GitHub 身份验证

公共 PR 无需身份验证即可工作(速率限制较低)。对于私有仓库或需要更高限制的情况,CodeTour 会按顺序使用以下第一个可用凭据:GITHUB_TOKEN、GH_TOKEN,或 gh CLI 存储的令牌(gh auth login)。

配置

环境变量

默认值

含义

CODETOUR_PORT

8765

查看器端口(若被占用则向上探测)

CODETOUR_NO_BROWSER

未设置

设为 1 则从不自动打开浏览器

CODETOUR_MAX_FILES

300

每个 PR 最多获取的更改文件数

CODETOUR_MAX_PATCH_BYTES

100000

截断前每个文件差异的上限字节数

开发

uv run pytest                 # unit tests
uv run ruff check .           # lint
uv run codetour --demo        # web viewer only, replays a canned tour on a loop

演示模式是在前端上进行迭代的最快方式:它不需要 MCP 客户端,也不需要 GitHub 访问——打开打印出来的 URL,点击“开始”,然后观看预设的导览。

MCP 工具

工具

用途

get_pr_info(pr_url)

PR 元数据 + 每个文件的 hunk 行范围(首先调用)

get_file_diff(pr_url, path)

单个文件的完整解析差异

start_tour(pr_url, tour_title?)

打开查看器,等待点击“开始”

show_overview(narration, key_points?)

PR 摘要卡片,语音播报

show_step(file, narration, line_start?, line_end?, side?, style?)

在文件/行上动画停留

end_tour(summary)

带 GitHub 链接的结束卡片

tour_status()

诊断信息

Available Tools

7 tools
end_tourA

Finish the tour: shows a closing summary card with a 'View on GitHub' button and speaks the summary. Blocks until spoken.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does disclose meaningful behavior: it displays a closing card, offers a 'View on GitHub' button, speaks the summary, and blocks until spoken. This is genuinely useful, though it does not disclose post-condition behavior such as whether tour state is reset or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the primary purpose followed by precise behavioral detail and a blocking caveat. Zero filler; every clause earns its place, and the blocking note is correctly placed at the end where it is actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no annotations and no output schema, the description covers the main outcomes the agent needs to know: what is shown, what is spoken, and that the call blocks. The only gap is unclear guidance on what content makes a valid summary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for the bare schema property 'summary'. It partially does: the summary is the content that appears in the closing card and is spoken aloud. This conveys the parameter's role, but it stops short of giving format or content guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Finish the tour'), then elaborates with concrete behavior: closing summary card, 'View on GitHub' button, and spoken summary. It clearly differentiates from siblings like start_tour, show_step, and tour_status by being the terminal action of the tour lifecycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrase 'Finish the tour' — it is the end of the tour lifecycle, the natural counterpart to start_tour. However, the description never explicitly says when to call it versus show_overview or tour_status, nor does it state any exclusions or prerequisites, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_file_diffA

Return the full parsed diff for one changed file in the PR: every hunk with every line (kind add/del/ctx, old/new line numbers, text). Use this to read the actual code changes so your show_step narration is accurate.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
pr_urlYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose the output shape (every hunk, line kinds, line numbers, text). However, it omits any behavior around errors, missing files, or side effects, though the read-only nature is implicitly clear from 'Return'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler. The core output is front-loaded, followed by a practical usage tip. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description adequately explains the returned structure and the intended use case. It could mention edge cases like invalid paths or empty diffs, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explicitly define pr_url or path formats. It does add contextual meaning by tying them to 'one changed file in the PR', but leaves details like how to specify a path or URL unresolved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Return' and the resource: the full parsed diff for one changed file in the PR, including hunk and line details. It distinguishes itself from sibling tools like show_step and get_pr_info by focusing on reading actual code changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage purpose: 'Use this to read the actual code changes so your show_step narration is accurate.' This tells the agent when to call it, though it does not explicitly name alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pr_infoA

Fetch a GitHub pull request's metadata and a compact summary of every changed file. Call this FIRST, before start_tour, so your narration matches what will be displayed.

Each file includes its diff hunk ranges: {old_start, old_end, new_start, new_end}. Those are the line numbers you pass to show_step (side="new" uses new_start/new_end). Use get_file_diff to read the actual changed lines of a specific file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pr_urlYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explains what is returned (metadata, compact per-file summary, diff hunk ranges) and how the output maps to show_step's line parameters. It does not discuss auth or error edge cases, but for a read-only fetch tool it gives substantial behavioral context without contradicting anything.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, then provides integration instructions and a pointer to get_file_diff. Every sentence earns its place; there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description adequately explains what the tool returns and how to consume those results with show_step and get_file_diff. It could add URL format details and error behavior, but it is largely complete for its role in the tour workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, pr_url, has no schema description (0% coverage), and the description does not compensate by explaining accepted URL formats or examples. The parameter name is suggestive, but no actual semantic guidance is added beyond the structural schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: fetching a GitHub pull request's metadata and a compact summary of every changed file. It clearly differentiates itself from siblings like get_file_diff and show_step by positioning itself as the initial information-gathering step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit sequencing is provided: 'Call this FIRST, before start_tour' and 'Use get_file_diff to read the actual changed lines of a specific file.' This tells an agent exactly when to invoke this tool and which alternative to choose for a different need.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_overviewA

Show the PR overview card (title, author, +/- stats, file count) with your narration as a spoken caption, plus optional short bullet key_points. Blocks until the narration finishes speaking. Keep narration to 1-3 short, plain-language sentences.

ParametersJSON Schema
NameRequiredDescriptionDefault
narrationYes
key_pointsNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It usefully discloses that the tool 'Blocks until the narration finishes speaking' and that it presents a visual card with a spoken caption. However, it does not mention side effects (e.g., whether it modifies state, requires a selected PR, works independently of a tour, or returns a value), leaving agent-relevant behavior under-specified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the intent, includes the blocking trait, and adds a concrete usage constraint in three sentences. No redundant content or filler; every sentence contributes to understanding or using the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema and no annotations, the description covers the core behavior and parameter constraints. But it leaves out contextual prerequisites and interactions with sibling tour tools: whether an active PR must be loaded, whether this is a tour step, or whether it requires an active tour context. Since the sibling list suggests a tour workflow, this information is useful for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It does so by adding meaning to both parameters: 'narration' is explained as a spoken caption, with a length constraint ('1-3 short, plain-language sentences'), and 'key_points' is clarified as 'optional short bullet' content, suggesting a visual bulleted list beyond the raw schema's 'array of strings'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Show the PR overview card' with the exact fields ('title, author, +/- stats, file count'). It clearly differentiates from siblings like get_pr_info (which retrieves data) and show_step (which shows tour steps) by emphasizing the narrated spoken caption and blocking behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool vs the sibling tools. It doesn't mention when to choose show_overview over get_pr_info or show_step, and no exclusions or preconditions are provided. The only usage constraint ('Keep narration to 1-3 short, plain-language sentences') concerns content format, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_stepA

Show one tour step: selects file in the file tree, animates its diff into view, scrolls to line_start..line_end (line numbers on the side version, as returned by get_pr_info/get_file_diff), and pulses a highlight ("highlight") or dims everything else ("spotlight"). The narration appears as a caption and is spoken aloud; the call BLOCKS until speech completes, so call show_step sequentially to pace the tour. Omit line_start/line_end to frame the whole file. Out-of-range lines are snapped to the nearest hunk and reported in warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes
sideNonew
styleNohighlight
line_endNo
narrationYes
line_startNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and it does so excellently. It discloses all behavioral traits: selecting in the file tree, animating diff, scrolling, pulsing/dimming, displaying and speaking narration, blocking until speech ends, snapping out-of-range lines to the nearest hunk, and reporting warnings. This is comprehensive and contradicts nothing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence adds value. It front-loads the core action, then layers behavioral details (blocking, sequential), optional parameter behavior, and edge cases. No fluff or repetition; it is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with no annotations and no output schema, the description covers the action, parameter semantics, edge cases (snapping, warnings), and usage constraints (blocking, sequential). It does not explicitly mention prerequisites like an active tour or the return value, but these are implied by the tour context and the mention of warnings, making it sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain each parameter, and it does: file (selects in tree), side (line numbers on that version), style (highlight vs spotlight), line_start/line_end (scroll range, omit for whole file, out-of-range snapping), narration (caption + speech). This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('show') and resource ('one tour step'), then details the exact sequence of actions: selecting a file, animating its diff, scrolling to a line range, and applying a highlight or spotlight. It clearly distinguishes itself from siblings like start_tour, show_overview, and end_tour by describing the step-level behavior within a tour.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: call sequentially to pace the tour because the call blocks until speech completes, and omit line_start/line_end to frame the whole file. It does not explicitly contrast with alternatives, but the context of being a step in a tour and the mention of blocking sequential behavior imply when it should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_tourA

Start an animated tour of the pull request. Fetches the PR, opens the viewer in the user's browser, and shows a title/start screen. Blocks up to ~30s waiting for the viewer to connect and the user to click Start (which also enables audio). Replaces any previous tour. Call get_pr_info first so you can plan your steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
pr_urlYes
tour_titleNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and succeeds: it discloses side effects (opens viewer in browser, replaces previous tour, enables audio on Start), a blocking condition (~30s wait for user), and the fetch step. This is unusually transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler. Each clause carries operational information: fetch, open viewer, block, replace, and prerequisite call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no annotations, the description covers side effects, blocking behavior, and sequencing. It doesn't describe return values, errors, or what happens after Start, but those are likely secondary for an agent deciding whether and when to call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only gives parameter names/types, so the description must add meaning. pr_url is implied by 'Fetches the PR,' and tour_title is loosely tied to 'shows a title/start screen,' but the description never explicitly maps tour_title to the displayed title. Coverage is adequate but not explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Start an animated tour of the pull request.' It then details the concrete workflow (fetch PR, open viewer, show start screen), clearly distinguishing it from sibling tools like show_overview or get_pr_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: 'Call get_pr_info first so you can plan your steps.' This is a clear prerequisite and sequencing instruction, though it does not enumerate exclusions or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tour_statusA

Diagnostics: whether a tour is active, whether a browser viewer is connected, audio state, steps shown, and the viewer URL. Use this if a call timed out or you suspect the viewer window was closed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does well: 'Diagnostics' signals a read-only nature, and it enumerates the state it reports (active, connected, audio, steps, URL). It does not explicitly state it has no side effects, but the diagnostic framing implies non-mutation, which is sufficient for a 0-parameter status tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler. The diagnostic purpose and output fields are front-loaded, followed by a single targeted usage condition. Every word earns its place, and the structure makes it scannable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must convey what the tool returns, and it does: active state, browser connection, audio state, steps shown, and viewer URL. For a 0-parameter diagnostics tool, this covers the essential information an agent needs. It could mention that the viewer URL is only present when connected, but this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema coverage, so there is nothing for the description to clarify about arguments. The description instead clarifies what the tool returns (the diagnostic fields), which is the relevant semantic content. Baseline 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Diagnostics:' and specifies exactly what is reported: tour active state, browser viewer connection, audio state, steps shown, and viewer URL. This clearly distinguishes it from the action-oriented siblings (start_tour, show_step, end_tour), making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Use this if a call timed out or you suspect the viewer window was closed.' This is concrete and actionable. It stops short of naming explicit alternatives or exclusions, but the diagnostic framing makes it obvious this is the status-check tool among action tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedend_tour
    • First observedget_file_diff
    • First observedget_pr_info
    • First observedshow_overview
    • First observedshow_step
    • First observedstart_tour
    • First observedtour_status

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a distinctly different role: fetching PR metadata, fetching file diffs, starting the tour, showing overview/step/end screens, and checking diagnostics. No two tools overlap in purpose, making selection unambiguous.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern (get_pr_info, get_file_diff, start_tour, show_overview, show_step, end_tour). 'tour_status' is the one outlier, reading as a noun phrase rather than a verb-driven action.

Tool Count5/5

Seven tools is well-scoped for a PR tour workflow: two for data retrieval, four for tour progression, and one for diagnostics. Each tool serves a necessary function without redundancy.

Completeness5/5

The tool surface covers the full tour lifecycle: retrieving PR context, reading diffs, starting the tour, showing overview and steps, ending cleanly, and diagnosing state. No obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers