douban-mcp
Provides tools for searching and retrieving movie and book information, user collections, and ratings on Douban, as well as marking and rating movies and books.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@douban-mcpshow me the top 250 movies"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
douban-mcp 🎬 📕
面向 agent 的豆瓣 MCP 服务 + CLI。同一个包既能做 Claude Desktop 的 MCP server(stdio/SSE),又能给 Claude Code/OpenClaw 等 agent 直接当 CLI 用。
npm 包名为
douban-mcp-cli(裸名douban-mcp在 npm 已被他人占用);GitHub 仓库 / 产品名仍为douban-mcp。
✨ 特性
✅ 12 个只读工具(电影 / 图书 / 用户态 全覆盖)
✅ 4 个写工具(标记想看/在看/看过 + 打分 + 评论 + 标签),双模式 opt-in
✅ 双数据源(HTML 默认 / Frodo API 可选),随时切换
✅ MCP server (stdio + SSE) + agent native CLI(
--json模式)✅ Claude Code Skill 包随仓库交付
✅ 内置缓存 + 限速 + 风控退避
⏳ v1.1:覆盖率 90%+;user search、doulist items
⏳ v1.2:短评写操作
Related MCP server: douban-mcp
🚀 快速开始
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"douban": {
"command": "npx",
"args": ["-y", "douban-mcp-cli", "serve"],
"env": { "DOUBAN_COOKIE": "你的cookie(可选)" }
}
}
}CLI(任何 agent / 命令行)
npx -y douban-mcp-cli search-movie --q "盗梦空间" --count 3
npx -y douban-mcp-cli get-movie --id 3541415
npx -y douban-mcp-cli --json movie-chart --kind top250 --count 5 | jq启用写操作:
export DOUBAN_COOKIE="bid=...; dbcl2=\"...\"; ck=...; ll=\"108288\""
export DOUBAN_ENABLE_WRITE=true
npx -y douban-mcp-cli mark-movie --id 3541415 --status collect --rating 5⚠️ 写操作有触发风控/封号风险。建议先用小号验证;本项目对账号安全不承担责任。
⚠️ 关于详情页必须配 cookie
v1.0 实测:search- 和 movie-chart top250 等聚合页匿名可用;但 get-movie / get-book / get-*-reviews 等详情页*会被豆瓣风控重定向到 sec.douban.com,必须配置 DOUBAN_COOKIE 才能稳定访问。
匿名模式下详情页会得到一条清晰错误:
⚠️ 豆瓣对该页面触发了风控(详情页常见)。请配置 DOUBAN_COOKIE 后重试。注:原先设计的
DOUBAN_DATA_SOURCE=frodo备用通道(豆瓣 App API)目前已被服务端加签名要求拦截(invalid_request_997 签名缺失),v1.0 不可用。详见docs/jack_todo.md。v1.x 计划做 cookie warm-up + 探索签名逆向。
🛠️ 工具清单
只读(默认全部可用)
工具 | 鉴权 | 说明 |
| 无 | 关键词搜索电影 |
| 无 | 电影详情 |
| 无 | 短评列表 |
| 无 | 榜单 (top250 / weekly / new) |
| 无 | 关键词搜索图书 |
| 无 | 图书详情 |
| 无 | 短评列表 |
| 无 | 榜单 (fiction / non_fiction / new) |
| uid 缺省时需 cookie | 想看/在看/看过列表 |
| uid 缺省时需 cookie | 豆列 |
| uid 缺省时需 cookie | 用户信息 |
鉴权 / 写
工具 | 鉴权 | 说明 |
| cookie | cookie 是否有效 |
| cookie + DOUBAN_ENABLE_WRITE | 标记/取消标记电影 |
| cookie + DOUBAN_ENABLE_WRITE | 标记/取消标记图书 |
📚 文档
⚙️ 环境变量
变量 | 默认 | 说明 |
| — | 登录态 cookie |
|
| 启用写操作 |
|
|
|
| 内置默认 | 覆盖 frodo apikey |
|
| debug/info/warn/error |
|
| 关闭缓存(测试用) |
| 内置 Chrome UA | 覆盖默认 UA |
🔧 SSE 模式
npx -y douban-mcp-cli serve --transport sse --port 3000
# 然后在 MCP 客户端连接 http://localhost:3000/sse🧰 调试
# 用 mcp-inspector 一键调试
npx @modelcontextprotocol/inspector npx -y douban-mcp-cli serve
# 直接命令行调用任何工具(agent 也用这种方式)
npx -y douban-mcp-cli list-tools
npx -y douban-mcp-cli describe search-movie
npx -y douban-mcp-cli doctor🛡️ 免责声明
本项目仅供学习和个人使用,禁止用于商业目的或大规模数据爬取。使用本项目造成的任何账号风险(限流、封禁等)由使用者自行承担。本项目无任何官方背景。
Available Tools
11 toolsget_bookARead-only
获取图书详情(作者、出版、ISBN、简介等)。id 是豆瓣图书 subject id(数字)。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, so the safety is clear. The description adds that it returns fields like author, publisher, etc., but doesn't disclose any additional behavioral traits (e.g., rate limits, required permissions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the core purpose, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description covers the key aspects. However, it could mention the return format or any pagination, but it's reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains that 'id' is a Douban book subject id (numeric), which adds crucial meaning beyond the pattern constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get book details (author, publisher, ISBN, description, etc.)', which is specific and distinguishes from sibling tools like get_book_reviews or search_book.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the 'id' parameter but does not provide guidance on when to use this tool versus others (e.g., search_book for finding books, get_book_reviews for reviews). Context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_book_chartBRead-only
获取图书榜单。kind: fiction (小说)、non_fiction (随笔)、new (新书速递)。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is clear. The description adds no further behavioral details such as rate limits, pagination behavior (despite 'count' parameter), or response format. Without output schema, more context would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) and front-loaded with the core purpose. Every part adds value; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and moderate complexity (2 parameters, one with enum), the description should explain what the output looks like (e.g., list of books with fields). It only covers the input 'kind' parameter. The absence of output format and behavior of 'count' leaves the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'kind' enum values (fiction, non_fiction, new) which adds meaning beyond the schema's bare enum list. However, the 'count' parameter is not described; its purpose (number of items) is only implicit from its default and bounds. Schema coverage is 0%, so the description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'get book chart' and lists the specific categories (fiction, non_fiction, new) supported by the 'kind' parameter. This clearly distinguishes it from sibling tools like 'get_book' (single book) or 'get_book_reviews' (reviews).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_book' or 'get_movie_chart'. There is no mention of prerequisites, limitations, or contexts where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_book_reviewsCRead-only
获取图书的短评列表。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description is consistent (a read operation). However, the description adds no extra behavioral info such as pagination, ordering, or scope of reviews returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but at the expense of necessary detail. It does not earn its place as it omits critical parameter and usage information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 0% schema description coverage, no output schema, and only a vague purpose statement, the description is grossly insufficient. An agent cannot determine valid parameter values or expected response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the tool description provides no explanation of parameters. The 'id' parameter's meaning (likely book ID) and 'count' parameter's effect are left unspecified, severely hindering correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '获取图书的短评列表。' clearly states the action (get list) and resource (book reviews). It aligns with the tool name, but does not differentiate from sibling tools like get_book or get_movie_reviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No context about prerequisites, filtering, or cases where other tools are more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_movieARead-only
获取一部电影的详细信息(导演、演员、评分、简介等)。id 是豆瓣电影 subject id(数字)。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. Description adds that it returns specific fields (director, actors, rating, synopsis), which aligns and provides context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with primary action, no redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description sufficiently explains return content (detailed info with examples). Adequate for a single-param read tool, though could mention more fields explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no description for 'id' (0% coverage). Description explains id is the Douban movie subject id and must be numeric, adding essential meaning beyond the pattern constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb '获取' and resource '详细信�' of a movie, with examples like director, actors, rating. Specifies that id is the Douban movie subject id, distinguishing it from sibling search_movie.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells when to use (to get detailed movie info) but no explicit guidance on when not to use or comparison to siblings like search_movie or get_movie_reviews.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_movie_chartARead-only
获取电影榜单。kind: top250 (Top250)、weekly (一周口碑榜)、new (近期上映)。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| count | No | ||
| start | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds context about chart kinds but does not explain pagination behavior (start/count) or any other traits beyond annotations, missing an opportunity given zero schema description coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two short sentences to state purpose and key parameter meaning without any unnecessary words, demonstrating excellent front-loading and brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description covers chart types and purpose but omits return format and pagination details (start/count), leaving some gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 only explains the 'kind' parameter's enum values (top250, weekly, new), leaving 'count' and 'start' completely undocumented, which is inadequate for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves movie charts ('获取电影榜单') and lists the available kinds (top250, weekly, new), distinguishing it from sibling tools like get_book_chart or search_movie.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for getting pre-defined movie charts by enumerating kinds, but lacks explicit guidance on when to use this tool over alternatives like get_movie or search_movie, 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_movie_reviewsARead-only
获取一部电影的短评列表(不含长评)。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the description adds minimal behavioral context beyond excluding long reviews. It does not disclose sorting, pagination, rate limits, or authentication requirements, which is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that communicates the core purpose without superfluous words. It is front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should hint at the return format or fields. It does not, leaving the agent uncertain about the structure of the review list. Additionally, the description does not mention pagination or ordering, which are common for list endpoints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds no parameter explanations. The 'id' and 'count' parameters are defined in the schema with constraints (pattern, default, etc.), but without a description, the agent may not know 'id' refers to the movie ID or that 'count' limits the number of reviews.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns short reviews for a movie, excluding long reviews. It distinguishes itself from siblings like 'get_movie' (movie details) and 'get_book_reviews' (different resource), using a specific verb '获取' and resource '短评列表'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it is for short reviews only, but does not mention when not to use or provide context about other review-related tools like 'get_book_reviews'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_collectionsBRead-only
获取某用户的"想看/在看/看过"列表。无 cookie 时必须传 uid。
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| count | No | ||
| start | No | ||
| status | Yes | ||
| category | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is clear. The description adds a behavioral constraint: uid is required when no cookie is available. This provides some context beyond the annotations, but does not cover other traits like authentication requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no filler, and front-loads the core purpose. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, 3 required, 2 enums, and no output schema, the description is insufficient. It does not explain pagination (count, start) or the category parameter, nor does it describe the response format. Users need to infer or guess return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description clarifies that 'status' corresponds to the Chinese terms '想看/在看/看过' and that 'uid' is needed without cookie. However, it does not explain 'count', 'start', or 'category' beyond their enum values. The parameter names are somewhat self-explanatory but the description fails to provide full semantic context for all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a user's collection list with specific statuses (想看/在看/看过). It uses a specific verb '获取' and resource '用户收藏列表'. While it doesn't explicitly differentiate from sibling tools like get_user_doulist, the scope is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a conditional note about passing uid when no cookie is present, but it does not specify when to use this tool over alternatives or when not to use it. There is no guidance on preferred scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_doulistCRead-only
获取某用户的豆列清单。无 cookie 时必须传 uid。
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds 'no cookie' condition but does not describe return format, side effects, or other behaviors. Minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded with key action. However, it could be structured to separate param info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description lacks return details and includes a contradiction with schema. Incomplete for proper agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description claims uid is required only if no cookie, contradicting the schema which requires uid always. This misleads the agent. No explanation of uid meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it gets a user's doulist, which is clear and specific. However, it does not differentiate from sibling tools like get_user_collections, so purpose is clear but not distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides conditional guidance: 'must pass uid if no cookie', which implies when uid is needed. But no explicit when-to-use or alternatives given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileARead-only
获取某用户的基本信息。无 cookie 时必须传 uid。
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a read operation. The description adds behavioral context by noting the conditional requirement for uid based on cookie presence, which goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. Every part serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is nearly sufficient. It covers the main action and a key usage condition. Minor lack: it could mention that the tool requires authentication.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, placing burden on the description. It explains that uid is mandatory when no cookie is available, but does not clarify what uid represents (e.g., user ID format, scope). The added context is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves basic user information. The name 'get_user_profile' and the description together establish a specific verb-resource pair, distinguishing it from sibling tools like get_book or get_movie.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when the uid parameter is required (when no cookie is present). However, it does not explicitly mention when to use this tool versus alternatives, nor does it state 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.
search_bookBRead-only
按关键词搜索豆瓣图书。
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true. The description adds no behavioral context beyond the search action, such as pagination, rate limits, or result format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence. It could be more structured (e.g., front-loading key info), but it effectively communicates the core purpose without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with two parameters and no output schema, the description is minimally adequate. However, it lacks specifics on result handling or search scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the parameters (e.g., what 'q' accepts, how 'count' affects results) beyond the schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Douban books by keyword. It distinguishes from siblings like get_book (single book) and search_movie (movies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like get_book for details. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_movieARead-only
按关键词搜索豆瓣电影。返回标题/年份/评分/链接的 markdown 列表。
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds context about the output format (markdown list). No contradictions. It doesn't detail auth or rate limits, but the read-only nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence efficiently conveys action and output. Slightly more detail could be added without bloat, but it's well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and minimal annotations, the description covers basic purpose and output but lacks parameter details and edge-case behavior (e.g., pagination, matching rules). Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not explain parameters. Although parameter names (q, count) are intuitive, the description fails to add meaning like expected query format or count usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Douban movies by keyword and returns a markdown list with specific fields (title, year, rating, link). It distinguishes itself from siblings like search_book and get_movie.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching movies but provides no explicit when-to-use or when-not-to-use guidance compared to alternatives like get_movie for specific movies.
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. Dates show when Glama detected each change.
11 tool updates
v1.0.0-alpha.0- First observed
get_book - First observed
get_book_chart - First observed
get_book_reviews - First observed
get_movie - First observed
get_movie_chart - First observed
get_movie_reviews - First observed
get_user_collections - First observed
get_user_doulist - First observed
get_user_profile - First observed
search_book - First observed
search_movie
TDQS
Each tool targets a distinct resource-action combination: book vs movie vs user, and get vs search vs chart. No two tools have overlapping purposes, and descriptions clearly differentiate them.
All tools follow a consistent verb_resource_subresource pattern in snake_case (e.g., get_book_reviews, search_movie). No mixing of conventions.
11 tools cover the main read operations for books, movies, and users. This is a reasonable number—neither too few nor too many for the domain.
The set includes search, detail, reviews, and charts for both books and movies, plus user info. It lacks write operations (e.g., rating, reviewing) but within the apparent read-only scope, it is fairly complete. Minor gaps like missing movie/book tags or celebrity info, but not essential.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Russian books search, details, and recommendation candidates.
Books MCP — wraps Open Library API (free, no auth)
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MusicBrainz MCP — wraps MusicBrainz Web Service v2 (free, no auth)
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that wraps The Movie Database (TMDB) API, enabling search for movies and TV shows, retrieval of movie details, recommendations, similar movies, trending content, streaming providers, and movie discovery.8-
- AlicenseCqualityDmaintenanceMCP server for querying Douban books, movies, TV shows, and group topics, with tools for searching, retrieving details, and listing reviews.1015MIT
- AlicenseAqualityAmaintenanceMCP server for The Movie Database (TMDB): search and look up movies, TV shows and people, and read IMDb/Rotten Tomatoes/Metacritic ratings (via OMDb) in the same call.312274MIT
- AlicenseNot gradedqualityBmaintenanceOfficial MCP server for the DDYS (低端影视) API, enabling search, details, resources, collections, comments, and media export (STRM, M3U) via natural language.17MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jackjin1997/douban-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server