Dev.to MCP Server
MCP 서버 개발
이 저장소에는 Dev.to에 대한 모델 컨텍스트 프로토콜 서버 구현이 포함되어 있으며, 이를 통해 AI 어시스턴트가 Dev.to 콘텐츠에 액세스하고 상호 작용할 수 있습니다.

MCP란 무엇인가요?
모델 컨텍스트 프로토콜(MCP)은 AI 어시스턴트가 외부 서비스, 도구 및 데이터 소스와 상호 작용할 수 있도록 하는 표준입니다. 이 서버는 Dev.to 콘텐츠에 대한 액세스를 제공하기 위해 MCP 사양을 구현합니다. MCP에 대해 자세히 알아보려면 이 영상을 시청하세요.
Related MCP server: devto-mvp-server
특징
Dev.to에서 최신 및 인기 기사를 가져옵니다.
다양한 기준으로 기사 검색
특정 기사에 대한 자세한 정보를 얻으세요
사용자에 대한 자세한 정보를 얻습니다.
태그 또는 사용자 이름으로 기사에 접근하세요
Dev.to에 새로운 기사를 작성하고 게시하세요
기존 문서 업데이트
성능 향상 및 API 호출 감소를 위한 캐싱 메커니즘
설치
이 저장소를 복제하세요
지엑스피1
MCP 서버에 연결
아래 json을 적절한 {{PATH}} 값으로 복사하세요.
{ "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 구성 디렉토리에
claude_desktop_config.json으로 저장합니다.~/Library/Application Support/Claude/claude_desktop_config.jsonCursor 의 경우 Cursor 구성 디렉토리에
mcp.json으로 저장합니다.~/.cursor/mcp.jsonClaude Desktop/Cursor를 다시 시작하세요
Claude Desktop을 열면 이제 Devto가 사용 가능한 통합으로 표시됩니다.
또는 커서를 다시 시작하세요.
사용 가능한 도구
서버는 다음과 같은 도구를 제공합니다.
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 환경 변수로 설정해야 합니다.
기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
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.-