Skip to main content
Glama

linuxdo-mcp

本帖使用社区公益推广,符合推广要求。我申明并遵循社区要求的以下内容:

  • 我的项目是免费使用的,无收费(变相收费、赞助)部分: 是

  • 我的帖子已经打上 #公益推广 标签: 是

  • 我的项目属于个人项目,与公司或商业机构无关: 是

  • 我的项目不存在QQ、TG等群组引流: 是

  • 我的项目不存在非运营必要的网站引流: 是

  • 我的项目不存在为他人推广、AFF: 是

  • 我的项目无关联的商业项目: 是

  • 我的站点存在登录,并已接入 LINUX DO Connect: 否

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是

  • 以上选择我承诺是永久有效的,接受社区和佬友监督: 是

搜索 / 阅读 linux.do(Discourse 论坛)的 MCP 服务器。 用 curl_cffi 模拟 Chrome TLS 指纹绕过 Cloudflare, 凭登录 cookie 访问受信任等级限制的内容。

工具

工具

返回

说明

whoami()

JSON

当前 cookie 对应的登录用户与信任等级

search(query, page=1, pages=1)

JSON

全量搜索,query 支持 Discourse 高级语法

get_topic(topic_id, posts=5)

JSON

话题详情 + 前 N 楼正文

list_categories()

JSON

所有板块,含各自话题数 topic_count、帖子数 post_count

category_topics(category_id, page=1)

JSON

指定类别下的话题列表(每页约 30),含该类别总话题数

list_tags()

JSON

所有标签及各自话题数 count

tag_topics(tag, page=1)

JSON

指定标签下的话题列表

user_info(username)

JSON

用户资料:信任等级、头衔、发帖数、获赞数、注册/在线时间

latest_topics(page=1)

JSON

首页「最新」话题

top_topics(period="weekly", page=1)

JSON

「热门」话题,period: daily/weekly/monthly/quarterly/yearly/all

user_actions(username, limit=20)

JSON

某用户的发帖/回复活动(含摘要与链接)

format_search(query, page=1, pages=1)

Markdown

同 search,直接返回成品 Markdown(标题+URL+摘要)

format_topic(topic_id, posts=20)

Markdown

同 get_topic,直接返回成品 Markdown(出处头+逐楼表格)

  • format_* 工具返回拼好的 Markdown 字符串,客户端可原样展示;其余返回结构化 JSON。

  • get_topic / format_topic 的 topic_id 可直接传话题 URL(如 https://linux.do/t/xxx/2885565),自动解析出 id。

  • 搜索高级语法:order:latest、#分类、@用户、tags:标签、after:2025-01-01、in:title 等。

Related MCP server: USCardForum MCP Server

前置

  • 安装 uv(提供 uvx)。

  • 准备一个 linux.do 的登录 cookie(_t),给法见下方「登录配置」。只需 _t,不需要 cf_clearance。

配置(复制到你的 MCP 客户端)

uvx 会自动拉取并运行,无需下载代码。基础配置:

{
  "mcpServers": {
    "linuxdo": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/mrsxs/linuxdo-mcp", "linuxdo-mcp"]
    }
  }
}

再按下面「登录配置」二选一填 env。

  • Claude Code:claude mcp add-json linuxdo '<上面的内容>',或写进 .mcp.json / 设置。

  • Cursor / Claude Desktop / Cline:粘进各自的 MCP 配置文件即可。

登录配置(两种方式,二选一)

为什么不直接读你平时用的浏览器?因为工具和主浏览器共用同一个 _t 时, Discourse 的 token 轮换会判定异常、把会话作废,导致主浏览器被顶下线。 所以默认 LINUXDO_READ_BROWSER=0(不读浏览器),请用下面任一「独立身份」。

方式一:独立 token(任何平台通用,最省心)

在隐身窗口或另一个浏览器登录 linux.do,F12 → Application → Cookies → https://linux.do → 复制 _t 的值,填进 env:

"env": { "LINUXDO_COOKIE": "_t=你复制的值" }

只需填一次:工具之后自动接收 Discourse 轮换、写回缓存自续期,长期免维护,且与主浏览器互不影响。

方式二:专用 Chrome profile 自动读(macOS/Linux,免手工复制)

在 Chrome 右上角头像 →「添加」新建一个 profile(例:显示名 linuxdo),在其中登录 linux.do,然后:

"env": {
  "LINUXDO_READ_BROWSER": "1",
  "LINUXDO_CHROME_PROFILE": "linuxdo"
}

LINUXDO_CHROME_PROFILE 可填显示名(Chrome 菜单里看到的,如 linuxdo)或目录名(如 Profile 1); 填错会列出所有可用 profile 供对照。工具首次自动读该 profile 做 bootstrap,之后同样走缓存自续期。 你日常用的主 profile(Default)完全不受影响——只要不在这个专用 profile 里刷 linux.do 就永不冲突。

  1. 缓存文件 ~/.cache/linuxdo-mcp/cookie.json(权限 600,工具自维护、含轮换续期,最新);

  2. 环境变量 LINUXDO_COOKIE(方式一,首次 bootstrap 后写入缓存);

  3. 浏览器 cookie 库(方式二,仅当 LINUXDO_READ_BROWSER=1)。

_t 是 Discourse 的滚动 token,工具每次请求都会接收服务器轮换回来的新值写回缓存, 所以配一次通常长期有效;遇 401/403 会清缓存并提示更新。

方式二各平台授权差异:

平台

Chrome/Chromium/Brave

Firefox

macOS

首次弹一次钥匙串授权框,选「始终允许」;uv 缓存重建致解释器路径变化时会再弹一次

免授权

Linux

一般免授权(cookie 若在已上锁的 gnome-keyring/kwallet 则需解锁)

免授权

Windows

不支持(pycookiecheat 只支持 macOS/Linux),请用方式一或 LINUXDO_BROWSER=firefox

免授权

环境变量一览

变量

说明

LINUXDO_COOKIE

方式一:手工指定 cookie,形如 _t=xxx(裸 token 也可)

LINUXDO_READ_BROWSER

方式二:置 1 才允许读浏览器(默认 0,防止与主浏览器互顶)

LINUXDO_CHROME_PROFILE

方式二:Chrome 系 profile 的显示名或目录名(如 linuxdo / Profile 1)

LINUXDO_BROWSER

chrome(默认)/chromium/brave/slack/firefox

LINUXDO_COOKIE_TTL

缓存有效期秒数,默认 2592000(30 天,配合自续期)

LINUXDO_CACHE_DIR

缓存目录,默认 ~/.cache/linuxdo-mcp

LINUXDO_IMPERSONATE

TLS 指纹,默认 chrome

⚠️ _t 等于你的 linux.do 登录凭证,只填进自己的本地配置,切勿分享给他人。

本地运行(开发)

uvx --from . linuxdo-mcp        # 或 uv run src/linuxdo_mcp/server.py

备注

  • cookie 过期返回 401/403 时会清缓存并提示更新;按你选的方式重配一次即可(方式二一般不会到期,浏览器保持登录时会自动续期)。

  • 读取浏览器 cookie 依赖 pycookiecheat,只读取 linux.do 一个域名下的 cookie。

  • 偶发被 Cloudflare 拦截时会自动重试 3 次;仍失败可设 LINUXDO_IMPERSONATE=chrome131(或 chrome124)换指纹。

  • 所有请求为只读 GET,不做任何写操作。

Available Tools

13 tools
category_topicsA

列出指定类别下的话题(每页约 30 条)。返回含该类别总话题数 topic_count、 本页话题列表与是否有下一页。category_id 用 list_categories 查询。每条话题已含 category、min_trust_level。展示约定同 latest_topics(Markdown 表格、完整标题、 纯文字表头禁用 emoji)。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
category_idYes

TDQS

A3.6/5.0
Behavior3/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. It discloses pagination (about 30 per page), return structure (topic_count, list, next-page flag), and topic fields (category, min_trust_level). It also specifies output formatting (Markdown table, full title, no emoji). This goes beyond a bare description, but it omits edge behavior (e.g., empty category, invalid ID) and does not explicitly state read-only nature, though it is implied.

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

Conciseness4/5

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

The description is organized into short clauses that each add distinct value: purpose, return behavior, parameter lookup, topic content, and formatting rules. It is front-loaded with the core action and avoids redundancy. Slightly verbose in listing display details, but each sentence earns its place.

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 the tool's simplicity (2 integer params, no output schema, no annotations), the description covers most operational needs: what it returns, how to get the required parameter, and display format. The main gap is the undocumented 'page' parameter and any error/empty-state behavior. Overall, it is fairly complete for a listing operation.

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?

Schema coverage is 0%, so the description must explain parameters. It clarifies category_id by instructing to query it via list_categories, but it does not describe the 'page' parameter at all—its role, defaults, or bounds. One of two parameters is left unexplained, which is a significant gap for a tool with zero 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 explicitly states '列出指定类别下的话题' (list topics under a specified category), giving a clear verb and resource scope. It further distinguishes the tool by detailing the return payload (topic_count, topic list, next-page flag) and referencing display conventions from latest_topics, so an agent can differentiate it from siblings like tag_topics or latest_topics.

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?

The description gives context on how to obtain category_id via list_categories, implying the tool is used when a category is known. However, it does not explicitly state when to prefer this over alternatives (e.g., tag_topics, latest_topics) or provide negative usage conditions. It offers some guidance but not exclusions.

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

format_topicA

同 get_topic,但直接返回拼好的 Markdown(出处头 + 逐楼表格),客户端可原样展示。 topic_id 可传数字 id 或 linux.do 话题 URL(自动解析)。posts=楼层数, start=起始楼层(1-based,翻页用,如 start=21)。

ParametersJSON Schema
NameRequiredDescriptionDefault
postsNo
startNo
topic_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the output format and the URL auto-parsing behavior, but does not mention error handling, authentication, rate limits, or whether the operation is read-only. These gaps matter because no annotations are present.

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 two sentences with no filler. The first sentence front-loads the core purpose and output format, and the second efficiently covers all parameter semantics.

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?

The description is largely complete for a formatting tool: it explains output, parameters, and pagination, and an output schema exists to cover return structure. It relies on get_topic for underlying behavior and omits edge cases or limits, but nothing critical is missing for basic 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 description coverage is 0%, so the description fully compensates. It explains topic_id accepts either a numeric ID or a linux.do URL, posts means number of floors, and start is a 1-based starting floor for pagination with an example. Every parameter is given meaningful semantics.

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 that this tool behaves like get_topic but returns pre-assembled Markdown with a source header and per-post table, which distinguishes it from its sibling get_topic. The purpose is specific and actionable.

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 explicitly frames format_topic as an alternative to get_topic, indicating it is for clients that want display-ready Markdown. It does not explicitly state when not to use it or mention other alternatives, but the comparison to get_topic gives clear usage context.

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

get_topicB

读取指定话题的详情与楼层正文。topic_id 可传数字 id,也可直接传 linux.do 话题 URL(如 https://linux.do/t/xxx/2885565/1,会自动取出 id)。posts=返回楼层数, start=起始楼层(1-based,用于翻页,如 start=21 取第 21 楼起)。返回含 total_posts(总楼数)。

ParametersJSON Schema
NameRequiredDescriptionDefault
postsNo
startNo
topic_idYes

TDQS

B3.4/5.0
Behavior3/5

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

无注释,描述承担全部负担。它披露了topic_id的URL自动提取、分页参数及返回含total_posts,但未说明错误行为、权限要求或只读确认。对于只读操作,信息基本足够但不够深入。

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?

描述紧凑无冗余,先说明核心用途再详述参数,所有句子都承载信息。没有浪费字符。

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?

无输出模式,描述提到返回含total_posts但未描述完整结构。对于3个参数的简单只读工具,基本信息具备,但未覆盖错误处理或与其他工具的区分,完整性中等。

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?

模式覆盖率为0%,描述完全补偿。它解释了topic_id可接受数字或URL并自动提取ID,以及posts和start的用途、默认值和分页语义,远优于模式本身的类型定义。

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

Purpose4/5

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

描述明确说明工具读取指定话题的详情与楼层正文,动词'读取'加资源'话题',并解释了topic_id可传数字或URL。它清楚区分了基本功能,但未直接提及与兄弟工具如format_topic的差异,因此未达到最高分。

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?

描述提供了参数用法(posts、start)但未说明何时使用此工具而非search、format_topic等。没有上下文或排除条件,代理只能推测其适用场景。

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

latest_topicsA

获取首页「最新」话题列表(每页约 30 条)。每条已含 category(分类名)、 min_trust_level(最低等级要求,null=无限制),无需再逐条 get_topic 查分类。

展示约定:用 Markdown 表格,列依次为 标题(完整勿截断) | 分类 | 等级 | 回复 | 点赞 | 链接;表头与单元格一律纯文字,禁用 emoji(多字节 emoji 在生成时可能 碎成「����」乱码)。等级按 min_trust_level 显示「Lv0/1/2/3」,null 显示「—」。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo

TDQS

A4.1/5.0
Behavior4/5

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

在完全没有 annotations 的情况下,描述承担了行为披露责任并做得较充分:说明了每条约 30 条、条目已含 category 与 min_trust_level、Markdown 表格列格式、禁用 emoji 的原因及 null 等级显示规则。未明确提及认证、错误行为或排序细节,但「获取」一词已暗示只读,且格式细节远超一般描述。

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

Conciseness4/5

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

内容按核心功能、数据保证、展示约定分层组织,核心动词和分页信息前置,没有冗余。展示约定部分较长但都为正确调用和输出服务,整体结构清晰。

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?

对于只有一个可选参数、无输出 schema、无 annotations 的简单列表工具,描述已覆盖列表范围、分页、条目字段和输出格式,调用所需信息基本齐全。页码语义和异常行为等轻微缺口不影响低复杂度工具的整体可用性。

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?

唯一参数 page 是带默认值 1 的整数,且 schema 描述覆盖率为 0%。描述补充了「每页约 30 条」的分页事实,但未说明页码如何从 1 开始、如何翻页或边界情况,属于部分弥补而非完整说明。

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?

描述以明确动词「获取」和资源「首页「最新」话题列表」开头,并说明分页规模,目的非常具体。它还通过与 get_topic 的对比(无需逐条查分类)帮助 agent 区分该工具与兄弟工具。

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?

描述了清晰的适用场景(首页最新列表),并明确给出一个排除性指引:无需再调用 get_topic 获取分类或等级字段。但没有明确说明与 search、category_topics、top_topics 等兄弟工具的选用关系,仍留有一定推断空间。

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

list_categoriesA

列出所有板块/类别,含每个类别的话题数(topic_count)与帖子数(post_count)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/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. It discloses the output content (all categories with topic_count and post_count) and implies a read-only listing, but it does not mention pagination, ordering, or any other behavioral caveats. For a zero-parameter list operation this is adequate but not rich.

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 a single efficient sentence that front-loads the primary action and resource, then adds the return-relevant counts. Every word earns its place with no redundancy or filler.

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 zero-parameter, read-only listing tool, the description is nearly complete: it states the scope ('all categories') and the notable fields in the result. The lack of an output schema is not a serious gap given the simplicity, though ordering or pagination details would make it fully complete.

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 input schema is empty with zero parameters, so there are no parameter semantics to document. The baseline for zero parameters is 4, and the description correctly avoids inventing parameter details.

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 uses a specific verb ('列出' / list) with a clear resource ('所有板块/类别' / all categories) and names the key included fields (topic_count and post_count). This distinguishes it from sibling tools like category_topics, which operate on topics within a category rather than listing categories themselves.

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?

The use case is implied: call this when you need all categories with their counts. However, there is no explicit guidance about when not to use it or which sibling tool should be chosen instead, such as category_topics for topics inside a category.

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

list_tagsA

列出所有标签及各自的话题数(count)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 full behavioral burden. It conveys a read-style enumeration and the returned fields, but does not disclose ordering, pagination, or how counts are computed. That is adequate for a simple list tool, but adds no behavioral context beyond the obvious.

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?

A single compact Chinese sentence with zero filler; the verb and resource appear first, with the count detail following, and the parenthetical '(count)' usefully signals the response field name. Every word earns its place.

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?

Despite having no parameters, no output schema, and no annotations, the description covers scope ('所有') and return contents (tags with counts), which is nearly all an agent needs to invoke the tool. Only ordering or pagination behavior is left unspecified — a minor gap for a trivial enumeration.

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, which sets the rubric baseline at 4. The description correctly adds no parameter detail and instead uses the space to describe the response contents (tags plus topic counts), which the empty schema cannot convey.

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 uses a specific verb ('列出'/list) with an explicit resource ('所有标签'/all tags) and states the return payload — each tag's topic count. This distinguishes it from sibling tools like list_categories (categories, not tags) and search.

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?

No explicit when-to-use or when-not-to-use guidance appears, and no sibling alternatives are named. The intended usage is reasonably implied by the scoped phrasing 'all tags', but an agent gets no routing hints to separate it from list_categories, category_topics, or tag_topics.

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

tag_topicsA

列出指定标签下的话题(每页约 30 条)。tag 用标签名(如「人工智能」)。每条话题 已含 category、min_trust_level。展示约定同 latest_topics(Markdown 表格、完整 标题、纯文字表头禁用 emoji)。

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes
pageNo

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It compensates by disclosing pagination (~30 per page), that each topic already includes category and min_trust_level, and the Markdown display convention with full titles and no emoji in plain-text headers. It omits ordering and invalid-tag behavior, but these are minor for a simple read-only listing 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?

The description is three short sentences with the core purpose front-loaded. It covers what the tool does, how to pass the tag, and rendering details without 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?

For a simple two-parameter, read-only tool with no output schema and no annotations, the description is nearly complete: it covers tag value semantics, pagination, included fields, and display style. Remaining gaps such as ordering and error handling are small and unlikely to cause incorrect invocation.

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%, so the description must add meaning. It explains that tag means a tag name, with an example, and the ~30-per-page statement indirectly clarifies the page parameter's purpose. It does not explicitly describe page numbering or bounds beyond the schema's default of 1, so compensation is partial.

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

Purpose4/5

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

The description clearly states a specific action and resource: list topics under a named tag, with page size and tag-name semantics. It does not explicitly name sibling tools such as category_topics or latest_topics to differentiate them, but the 'tag' wording and tag-name example disambiguate it from category/latest-based listings.

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?

The intended use is implied: call this tool when you want topics under a particular tag name, and the description gives concrete tag-value guidance. However, it does not explicitly say when not to use it or point to alternatives like category_topics or latest_topics, so the by-tag vs by-category decision is left to inference.

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

top_topicsA

获取「热门」话题列表。period 取 daily/weekly/monthly/quarterly/yearly/all。 每条已含 category、min_trust_level。展示约定同 latest_topics(Markdown 表格、 完整标题、纯文字表头禁用 emoji)。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
periodNoweekly

TDQS

A3.5/5.0
Behavior3/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. It does disclose useful behavioral details: each item includes category and min_trust_level, and results follow a Markdown table display convention. However, it does not mention pagination behavior, sorting, or whether the operation is read-only, though '获取' implies a read operation.

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 three short sentences with no redundancy. It front-loads the core purpose, then gives parameter values, then output/display conventions. Every sentence adds information.

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 list tool with no output schema or annotations, the description covers the main needs: purpose, period values, returned fields, and display formatting. It is slightly incomplete regarding pagination behavior and result ordering, but these are minor gaps for this tool.

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?

Schema description coverage is 0%, so the description must compensate. It explicitly enumerates all valid period values (daily/weekly/monthly/quarterly/yearly/all), which is essential. The page parameter is not explained, but its integer type and default of 1 make it reasonably self-evident.

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

Purpose4/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: '获取「热门」话题列表' (get the hot topics list). The period parameter further clarifies scope. It does not explicitly differentiate from siblings like latest_topics, but the 'hot' qualifier is distinct enough to avoid confusion.

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 versus alternatives such as latest_topics or category_topics. The reference to latest_topics is only about display conventions, not selection criteria. Usage is only implied by the tool's name and purpose.

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

user_actionsC

获取某用户的发帖/回复活动(含摘要与跳转链接)。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
usernameYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description carries the full disclosure burden. It mentions that results include summaries and jump links, but it does not describe ordering, pagination, time range, or how limit affects results. This is a partial but incomplete behavioral picture.

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

Conciseness4/5

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

The description is a single concise sentence with no filler, and the core action and resource are front-loaded. It lacks structured detail, but it is appropriately sized for the information it provides.

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

Completeness2/5

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

With no output schema and no annotations, the description leaves important gaps: limit semantics, result shape, pagination, and when to choose this over sibling tools. It is sufficient only for a very basic understanding of the call.

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?

Schema description coverage is 0%, so the description must compensate for parameter meaning. It implicitly maps '某用户' to username, but it never explains the limit parameter, its default, or its effect. The compensation is only partial.

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

Purpose4/5

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

The description uses a specific verb ('获取') and a clear resource ('某用户的发帖/回复活动'), and adds return details (摘要与跳转链接). It is distinguishable from siblings like user_info or search, though it does not explicitly name those alternatives.

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 guidance on when to use this tool versus user_info, search, or format_topic. No exclusions or contextual triggers are provided, so an agent must infer applicability from the tool name and minimal description.

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

user_infoB

查询用户资料:信任等级、注册/最后在线时间、发帖数、获赞数等。

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

B3/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 of behavioral disclosure. It indicates the operation is a query (read-only) via the verb '查询', which is a useful trait. However, it does not disclose potential errors, rate limits, authentication requirements, or whether the user must exist. The minimal read-only implication earns a baseline score, but richer context is missing.

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

Conciseness4/5

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

The description is a single, compact sentence that front-loads the core action and resource, then lists the key data points. It is efficient with no redundant words, though it could be slightly more explicit about the parameter.

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 simple, single-parameter read tool, the description covers the main purpose and the delivered information. However, with no output schema and no annotations, it leaves gaps such as error behavior, whether the user must exist, and the exact output format. It is adequate but not fully complete for an agent encountering this tool for the first time.

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?

Schema description coverage is 0%, so the description must compensate. It does not mention the 'username' parameter at all, nor explain how to specify which user to query. The purpose implies that a user identifier is needed, but without explicit parameter semantics, agents may be unsure of the expected format or whether the username is a login name or display name.

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

Purpose4/5

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

The description clearly states the action ('查询' - query) and the target resource (用户资料 - user profile), and enumerates the data fields returned (trust level, registration/last online time, post count, like count). It is specific and distinct from sibling tools like get_topic or search, though it does not explicitly differentiate itself by name.

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?

No guidance is provided about when to use this tool versus alternatives. There is no mention of prerequisites, such as requiring a valid username, nor any comparison with similar tools like user_actions or whoami. Usage context must be inferred entirely from the tool name and description.

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

whoamiA

查看当前 cookie 对应的 linux.do 登录用户与信任等级。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/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 behavioral disclosure burden. It uses the clear read-only verb '查看' (view), indicating no side effects. It also specifies the source of identity (current cookie) and the data returned (user and trust level). This is adequately transparent for a simple read operation, though it does not describe failure modes like unauthenticated sessions.

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 a single concise sentence that front-loads the action and resource. Every word earns its place; there is no redundant or extraneous content.

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 zero-parameter, read-only tool with no output schema, the description conveys the essential purpose and data source. It could specify what happens when no cookie is present or the shape of the returned trust level, but these are minor omissions for such a simple tool.

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 zero parameters, and the schema is complete (100% coverage). The description adds contextual meaning by clarifying that the tool operates on the current cookie rather than taking any explicit input. This satisfies the baseline for a no-parameter 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 states a specific verb ('查看' = view) and a distinct resource: the linux.do logged-in user and trust level associated with the current cookie. This clearly distinguishes it from sibling tools like user_info, which would target arbitrary users rather than the authenticated session.

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?

The description provides no explicit guidance on when to use this tool versus alternatives. There are no stated exclusions, prerequisites, or hints about situations where a sibling tool would be more appropriate. Usage is only implied by the tool's self-evident purpose.

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. 13 tool updatesv0.2.0
    • First observedcategory_topics
    • First observedformat_search
    • First observedformat_topic
    • First observedget_topic
    • First observedlatest_topics
    • First observedlist_categories
    • First observedlist_tags
    • First observedsearch
    • First observedtag_topics
    • First observedtop_topics
    • First observeduser_actions
    • First observeduser_info
    • First observedwhoami

TDQS

B3.4/5.0

Scored across 13 tools

Disambiguation3/5

Most tools map to distinct resources or filters, but search/format_search and get_topic/format_topic are essentially the same operations differing only in output formatting. The descriptions make the distinction explicit, so confusion is possible but not severe.

Naming Consistency3/5

Names mix bare verbs (search), verb_noun patterns (get_topic, list_categories), noun_topics forms (category_topics, latest_topics), and standalone words (whoami). All names are lowercase snake_case and readable, but they do not follow a single predictable convention.

Tool Count4/5

At 13 tools the count is within a reasonable range for a forum reader, but format_search and format_topic are redundant with search and get_topic, slightly padding the surface. The remaining tools each contribute meaningfully to searching and browsing the forum.

Completeness4/5

For a read-oriented forum browsing/searching server, the coverage is solid: search, topic detail, categories, tags, users, and topic feeds are all present. Obvious gaps like posting or replying would matter only if write access was expected, which is not suggested by the tool set.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to interact with Discourse forums through search, reading topics/posts, managing categories and users. Supports secure authentication and optional write operations with rate limiting.
    14
    7,087 npm
    76
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables interaction with USCardForum, a Discourse-based community for US credit cards and points. Supports topic discovery, content reading, user research, forum search, and authenticated actions like notifications and bookmarks.
    22
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with USCardForum, a Discourse-based community focused on US credit cards and points, providing access to topics, user profiles, search, and authenticated actions like notifications and bookmarks.
    22
    MIT