Dev.to MCP Server
开发人员到 MCP 服务器
该存储库包含 Dev.to 的模型上下文协议服务器实现,允许 AI 助手访问并与 Dev.to 内容交互。

什么是 MCP?
模型上下文协议 (MCP) 是一项标准,用于支持 AI 助手与外部服务、工具和数据源进行交互。此服务器实现了 MCP 规范,以提供对 Dev.to 内容的访问。要了解更多关于 MCP 的信息,请观看此视频
Related MCP server: devto-mvp-server
特征
从 Dev.to 获取最新和热门文章
按不同标准搜索文章
获取特定文章的详细信息
获取有关用户的详细信息。
通过标签或用户名访问文章
创建并发布新文章到 Dev.to
更新现有文章
缓存机制以提高性能并减少 API 调用
安装
克隆此存储库
git clone https://github.com/Arindam200/devto-mcp.git
cd devto-mcp连接到 MCP 服务器
使用适当的 {{PATH}} 值复制以下 json:
{ "mcpServers": { "devto": { "command": "{{PATH_TO_UV}}", // Run `which uv` and place the output here "args": [ "--directory", "{{PATH_TO_SRC}}",// cd into the repo, run `pwd` and enter the output here "run", "server.py" ], "env": { "DEV_TO_API_KEY":"Your Dev.to API Key" // Get it from https://dev.to/settings/extensions. } } } }您可以从Dev.to 设置页面获取 Dev.to API 密钥。
对于Claude ,将其保存为
claude_desktop_config.json并保存在 Claude Desktop 配置目录中:~/Library/Application Support/Claude/claude_desktop_config.json对于Cursor ,将其保存为
mcp.json并保存在 Cursor 配置目录中:~/.cursor/mcp.json重启 Claude Desktop/Cursor
打开 Claude Desktop,您现在应该看到 Devto 是一个可用的集成。
或者重新启动 Cursor。
可用工具
该服务器提供以下工具:
get_latest_articles()- 从 Dev.to 获取最新文章get_top_articles()- 从 Dev.to 获取最受欢迎的文章get_articles_by_tag(tag)- 通过标签获取文章get_article_by_id(id)- 通过 ID 获取特定文章search_articles(query, page=1)- 通过标题/描述中的关键词搜索文章get_article_details(article_id)- 获取特定文章的完整内容和元数据get_articles_by_username(username)- 获取特定作者撰写的文章create_article(title, body_markdown, tags, published)- 创建并发布新文章update_article(article_id, title, body_markdown, tags, published)- 更新现有文章
示例查询
以下是您可以向连接到该服务器的 AI 助手询问的一些示例:
“在 Dev.to 上查找有关 Python 的文章”
“向我展示最新的 Dev.to 文章”
“获取文章 1234 的详细信息”
“用户‘ben’写了哪些文章?”
“搜索有关机器学习的文章”
“创建一篇题为‘Python 入门’的新文章”
“更新我的 ID 为 5678 的文章,以修复内容中的拼写错误”
高级功能
自定义提示
服务器提供了可供AI助手使用的预定义提示:
search_prompt- 创建格式化的搜索提示analyze_article- 创建提示来分析特定文章
验证
服务器需要 Dev.to API 密钥才能执行某些操作,尤其是创建和更新文章。API 密钥应设置为环境变量DEV_TO_API_KEY 。
贡献
欢迎贡献代码!欢迎提交 Pull 请求。
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
Available Tools
10 toolscreate_articleB
Create and publish a new article on Dev.to
Args:
title: The title of the article
body_markdown: The content of the article in markdown format
tags: Comma-separated list of tags (e.g., "python,tutorial,webdev")
published: Whether to publish immediately (True) or save as draft (False)
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| body_markdown | Yes | ||
| tags | No | ||
| published | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'publish' behavior and the draft/published option, but lacks critical details: authentication requirements, rate limits, what happens on failure, whether articles are editable after publishing, or response format. For a write operation with zero annotation coverage, this is insufficient.
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?
Perfectly structured and concise. The first sentence states the purpose, followed by a clear 'Args:' section with bullet-point explanations. Every sentence earns its place, with no redundant information. The formatting makes it easy to scan.
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?
Incomplete for a write operation with no annotations or output schema. While parameters are well-explained, missing critical context: authentication needs, error handling, response format, and behavioral constraints (e.g., tag limits, publishing consequences). The description doesn't compensate for the lack of structured metadata.
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 provides clear semantics for all 4 parameters: title (article title), body_markdown (content in markdown), tags (comma-separated list with example), and published (immediate vs draft). This adds substantial value beyond the bare schema, though it doesn't cover all edge cases (e.g., tag limits).
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 'Create and publish a new article on Dev.to' - a specific verb (create/publish) and resource (article). It distinguishes from siblings like get_article_by_id or update_article by focusing on creation rather than retrieval or modification. However, it doesn't explicitly contrast with all siblings (e.g., update_article could also involve publishing).
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 versus alternatives. While the purpose implies creation, there's no mention of prerequisites (e.g., authentication needs), when not to use it (e.g., for updating existing articles), or explicit alternatives like update_article for modifications. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_article_by_idC
Get a specific article by ID from Dev.to
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify authentication requirements, rate limits, error handling, or what happens if the ID doesn't exist. For a tool with zero annotation coverage, this is insufficient.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple lookup tool and front-loads the essential 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?
For a tool with no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It doesn't explain what data is returned, error conditions, or how this differs from similar sibling tools. The context demands more comprehensive guidance.
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 mentions 'by ID' which aligns with the single 'id' parameter in the schema. However, with 0% schema description coverage, the description doesn't add any details about ID format, constraints, or examples. It provides basic mapping but minimal additional semantic value.
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') and resource ('a specific article by ID from Dev.to'), making the purpose immediately understandable. However, it doesn't distinguish this tool from similar siblings like 'get_article_details' or 'get_articles_by_tag', which likely also retrieve articles but through different mechanisms.
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 no guidance on when to use this tool versus alternatives. With siblings like 'get_article_details', 'get_articles_by_tag', and 'search_articles', there's no indication whether this tool is for retrieving a single known article ID versus other lookup methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_article_detailsC
Get detailed information about a specific article
Args:
article_id: The ID of the article to retrieve
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes |
TDQS
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 states the tool retrieves information, implying a read-only operation, but doesn't disclose behavioral traits like error handling, authentication needs, rate limits, or what 'detailed information' entails. This leaves significant gaps for an agent.
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 appropriately sized and front-loaded with the main purpose. The two-sentence structure is efficient, though the 'Args' section is redundant with the schema and could be omitted to improve conciseness.
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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, potential errors, or how it differs from similar sibling tools. For a retrieval tool in a context with multiple article-related tools, more context is needed.
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 adds minimal semantics beyond the input schema: it names the parameter ('article_id') and states it's for retrieving an article. However, with 0% schema description coverage, it doesn't compensate by explaining the ID format, constraints, or examples. The baseline is 3 due to the single parameter being straightforward.
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 verb ('Get') and resource ('detailed information about a specific article'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_article_by_id' which likely serves a similar function, preventing a perfect score.
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 no guidance on when to use this tool versus alternatives such as 'get_article_by_id' or 'search_articles'. It mentions retrieving a specific article but doesn't clarify prerequisites, exclusions, or comparative use cases with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articles_by_tagC
Get articles by tag from Dev.to
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes |
TDQS
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 states the action ('Get articles') but does not describe traits such as whether it's read-only, requires authentication, has rate limits, returns paginated results, or what format the output takes. This leaves significant gaps for a tool that likely interacts with an external API.
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, efficient sentence with zero waste. It is appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration, making it easy for an agent to parse quickly.
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's complexity (interacting with Dev.to API), lack of annotations, no output schema, and low parameter coverage, the description is incomplete. It fails to address behavioral aspects, output format, error handling, or usage context, leaving the agent with insufficient information to invoke the tool effectively beyond basic purpose.
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 mentions 'by tag', which aligns with the single parameter 'tag' in the schema. However, with 0% schema description coverage, the schema provides no details about the parameter. The description adds minimal semantic value by indicating the parameter's role but lacks specifics like tag format, case sensitivity, or examples, resulting in a baseline score due to incomplete compensation.
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 verb ('Get') and resource ('articles by tag from Dev.to'), making the purpose understandable. It distinguishes from some siblings like 'get_article_by_id' or 'get_articles_by_username' by specifying the tag-based filtering, though it doesn't explicitly differentiate from 'search_articles' which might also support tag filtering.
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_articles' or 'get_latest_articles'. The description implies usage for tag-based retrieval but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articles_by_usernameC
Get articles written by a specific user
Args:
username: The username of the author
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
TDQS
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 states the action ('Get articles') but doesn't describe traits like whether it's read-only (implied by 'get'), what happens if the username doesn't exist (e.g., returns empty list or error), rate limits, authentication needs, or output format (e.g., list of articles with basic details). This leaves significant gaps for a tool with no 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 appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by a structured 'Args' section. There's no wasted text, and it efficiently covers the essentials. However, it could be slightly more concise by integrating the parameter explanation into the main sentence without losing clarity.
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's complexity (simple retrieval with one parameter), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'articles' entail (e.g., full content or summaries), how results are returned (e.g., paginated list), or error conditions. For a tool with no structured data to rely on, more context is needed to be fully helpful.
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 adds minimal semantics beyond the input schema. It includes an 'Args' section that documents the single parameter 'username' with a brief explanation ('The username of the author'), which provides basic context. However, with 0% schema description coverage, this doesn't fully compensate—it lacks details like format constraints (e.g., case sensitivity) or examples. The baseline is 3 due to the single parameter, but the added value is limited.
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's purpose: 'Get articles written by a specific user.' It specifies the verb ('Get') and resource ('articles'), and distinguishes it from siblings like 'get_article_by_id' or 'get_articles_by_tag' by focusing on authorship. However, it doesn't explicitly differentiate from 'get_user_info' or 'search_articles' in terms of scope or output format.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as whether the username must exist or be valid, or compare it to siblings like 'search_articles' for broader queries or 'get_user_info' for user metadata. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_articlesB
Get the latest articles from Dev.to
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states what the tool does but doesn't disclose behavioral traits such as pagination, rate limits, authentication needs, or what 'latest' means (e.g., time window, sorting). This is a significant gap for a tool with no structured safety hints.
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, efficient sentence that directly states the tool's purpose with zero waste. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
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 annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain what 'latest' entails, how results are returned, or how this differs from other article-fetching tools, leaving the agent with insufficient context for reliable use.
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 tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter documentation in the description. The baseline for 0 parameters is 4, as the description appropriately doesn't discuss non-existent parameters, though it could hint at implicit defaults (e.g., number of articles).
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 verb 'Get' and the resource 'latest articles from Dev.to', making the purpose unambiguous. However, it doesn't differentiate from siblings like 'get_top_articles' or 'get_articles_by_tag' which also retrieve articles with different filters, so it doesn't reach the highest level of specificity.
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 no guidance on when to use this tool versus alternatives. With siblings like 'get_top_articles' and 'get_articles_by_tag', there's no indication whether this tool is for chronological recency, popularity, or other criteria, leaving the agent to guess based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_articlesB
Get the top articles from Dev.to
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states the action but doesn't reveal any behavioral traits such as rate limits, authentication requirements, pagination, or what 'top' entails (e.g., sorting criteria, number of articles returned). This leaves significant gaps for an agent to understand how the tool behaves.
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, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it highly concise and well-structured for quick understanding.
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 complexity of fetching 'top' articles (which could involve sorting, filtering, or ranking logic), the description is incomplete. With no annotations and no output schema, it fails to explain what 'top' means, how many articles are returned, or the format of the response. This leaves critical context missing for effective tool use.
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 input schema has 0 parameters with 100% coverage, meaning there are no parameters to document. The description doesn't need to add parameter semantics, so it meets the baseline expectation. No additional value is required or provided beyond the schema.
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 verb 'Get' and the resource 'top articles from Dev.to', making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'get_latest_articles' or 'get_articles_by_tag', which reduces clarity about what makes 'top' articles different.
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 no guidance on when to use this tool versus alternatives like 'get_latest_articles' or 'search_articles'. There's no mention of what 'top' means (e.g., by views, likes, recency) or any context for selecting this tool over siblings, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_infoC
Get information about a Dev.to user
Args:
username: The username of the user
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool retrieves information, implying a read-only operation, but doesn't disclose behavioral traits like authentication needs, rate limits, error conditions, or what specific information is returned. This is inadequate for a tool with zero 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 appropriately sized and front-loaded with the purpose in the first sentence. The Args section is clear but could be more integrated. No wasted sentences, though it lacks depth.
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 annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain return values, error handling, or behavioral context needed for effective tool use. This is a simple tool but requires more guidance for the agent.
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 adds minimal semantics: it mentions 'username' as the parameter in the Args section, but the schema already documents this parameter with 0% coverage. Since schema coverage is low, the description doesn't compensate by explaining format, constraints, or examples. Baseline 3 applies as it doesn't add significant value beyond the schema.
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's purpose: 'Get information about a Dev.to user' specifies the verb ('Get information') and resource ('Dev.to user'). It distinguishes from siblings like article-related tools, but doesn't explicitly differentiate from potential user-related siblings not present in the list.
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 versus alternatives is provided. The description doesn't mention prerequisites, context for usage, or comparison with other tools. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_articlesB
Search for articles on Dev.to
Args:
query: Search term to find articles
page: Page number for pagination (default: 1)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| page | No |
TDQS
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. While it mentions pagination ('page number for pagination'), it doesn't describe important behavioral traits like rate limits, authentication requirements, response format, error conditions, or what happens with empty results. For a search tool with zero annotation coverage, this is insufficient.
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 appropriately sized and front-loaded with the core purpose first. The two-sentence structure with clear parameter explanations is efficient, though the 'Args:' section formatting could be slightly cleaner. Every sentence earns its place by adding 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's moderate complexity (search function with pagination), no annotations, and no output schema, the description is minimally adequate but has clear gaps. It covers the basic purpose and parameters but lacks crucial context about authentication, rate limits, response format, and when to use versus sibling tools. The absence of output schema means the description should ideally explain what the search returns.
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 adds meaningful context for both parameters beyond what the schema provides. For 'query', it explains it's a 'Search term to find articles' (schema just says 'Query'). For 'page', it clarifies it's for 'pagination' and provides the default value (schema only shows default:1). With 0% schema description coverage, the description effectively compensates by explaining parameter purposes.
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's purpose: 'Search for articles on Dev.to' - a specific verb ('Search') and resource ('articles on Dev.to'). It distinguishes itself from siblings like 'get_articles_by_tag' or 'get_latest_articles' by being a general search function, though this differentiation isn't explicitly stated.
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. The description doesn't mention when this general search is preferable to more specific sibling tools like 'get_articles_by_tag' or 'get_latest_articles', nor does it provide any context about use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_articleB
Update an existing article on Dev.to
Args:
article_id: The ID of the article to update
title: New title for the article (optional)
body_markdown: New content in markdown format (optional)
tags: New comma-separated list of tags (optional)
published: Change publish status (optional)
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes | ||
| title | No | ||
| body_markdown | No | ||
| tags | No | ||
| published | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it implies a mutation operation ('Update'), it doesn't mention permission requirements, whether changes are reversible, rate limits, or what happens to fields not specified. This leaves significant gaps for a tool that modifies content.
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 efficiently structured with a clear opening statement followed by a well-organized parameter list. Every sentence adds value without redundancy, and the formatting makes it easy to scan. It's appropriately sized for a tool with 5 parameters.
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 mutation tool with no annotations and no output schema, the description does well on parameter semantics but lacks important behavioral context. It doesn't explain what the tool returns, error conditions, or authentication requirements. The parameter explanations are strong, but other critical aspects are missing.
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 provides clear explanations for all 5 parameters beyond their schema titles, including optionality notes and format hints (e.g., 'comma-separated list of tags', 'markdown format'). Since schema description coverage is 0%, this description fully compensates by adding meaningful semantic context for each parameter.
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 ('Update') and resource ('an existing article on Dev.to'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from its sibling 'create_article' beyond the 'existing' qualifier, which is why it doesn't reach a perfect score.
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 no guidance on when to use this tool versus alternatives like 'create_article' or other article-related tools. It lacks context about prerequisites (e.g., authentication needs) or scenarios where this tool is appropriate versus other operations.
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.
10 tool updates
- First observed
create_article - First observed
get_article_by_id - First observed
get_article_details - First observed
get_articles_by_tag - First observed
get_articles_by_username - First observed
get_latest_articles - First observed
get_top_articles - First observed
get_user_info - First observed
search_articles - First observed
update_article
TDQS
Scored across 10 tools
Most tools have distinct purposes targeting different operations (create, get, update, search), but there is some ambiguity between get_article_by_id and get_article_details which appear to serve similar retrieval functions. The other tools are clearly differentiated by their target data or action.
All tools follow a consistent verb_noun pattern with snake_case throughout (e.g., create_article, get_articles_by_tag, update_article). The naming is predictable and follows a clear convention without any deviations in style or structure.
With 10 tools, this server is well-scoped for managing Dev.to content, covering core operations like CRUD for articles, user info retrieval, and various query methods. Each tool serves a specific purpose without bloat, making the count appropriate for the domain.
The toolset provides comprehensive coverage for article management (create, read, update, search) and user information, but lacks delete functionality for articles, which is a minor gap. Core workflows are supported, and agents can likely work around the missing delete operation.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that enables AI assistants like Claude to interact with Substack newsletters, allowing for post retrieval, content searching, and author information access through a standardized interface.MIT
- AlicenseNot gradedqualityDmaintenanceThis is a complete MCP (Model Context Protocol) server that implements a articles of dev.to with robust validation using TypeScript and Zod. The server integrates directly with Cursor, allowing you search articles on dev.to.3 npmMIT
- AlicenseAqualityCmaintenanceA production-ready MCP server for the DEV Community (Forem) API, enabling management of articles, comments, users, tags, organizations, reading list, and followers through any MCP-compatible client.1619 npm5MIT
- FlicenseNot gradedqualityDmaintenanceProvides MCP tools to interact with Dev.to, enabling searching, browsing, and publishing articles through natural language.-