DevTo-MCP
Provides tools for managing articles, comments, users, tags, organizations, reading list, and followers on DEV Community.
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., "@DevTo-MCPshow my unpublished articles"
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.
DevTo-MCP
A production-ready Model Context Protocol (MCP) server for the DEV Community (Forem) API. Manage articles, comments, users, tags, organizations, and more through any MCP-compatible client.
Quick Start
Install in VS Code
Install the DevTo MCP server in VS Code with one click:
Note: After installing, replace
YOUR_API_KEYwith your actual DEV Community API key from dev.to/settings/extensions.
Install in Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"devto": {
"command": "npx",
"args": ["-y", "@furkankoykiran/devto-mcp"],
"env": {
"DEVTO_API_KEY": "your_api_key_here"
}
}
}
}Install in Cursor
Add to your Cursor MCP settings:
{
"mcpServers": {
"devto": {
"command": "npx",
"args": ["-y", "@furkankoykiran/devto-mcp"],
"env": {
"DEVTO_API_KEY": "your_api_key_here"
}
}
}
}Related MCP server: devto-mvp-server
Features
17 tools across 8 domains for comprehensive DEV Community interaction
Full Forem API V1 support with proper authentication headers
Robust API client with request timeouts, automatic retries with exponential backoff, and rate-limit awareness
Written in TypeScript with strict type safety
Zod input validation on all tool parameters
Structured error messages with status codes, endpoints, and request IDs
Zero external HTTP dependencies (uses native
fetch)
Prerequisites
Node.js 18 or higher
DEV Community API Key — Get yours at dev.to/settings/extensions
Installation
Using npx (recommended)
DEVTO_API_KEY=your_key npx -y @furkankoykiran/devto-mcpGlobal install
npm install -g @furkankoykiran/devto-mcpFrom source
git clone https://github.com/furkankoykiran/DevTo-MCP.git
cd DevTo-MCP
npm install
npm run buildConfiguration
Set your DEV Community API key as an environment variable:
export DEVTO_API_KEY=your_api_key_hereAvailable Tools
Articles
Tool | Description |
| List published articles with filters (tag, username, state, top, pagination) |
| Get full article details by numeric ID |
| Create a new article or draft |
| Update an existing article |
| Get authenticated user's articles (published, unpublished, or all) |
Comments
Tool | Description |
| Get threaded comments for an article or podcast episode |
| Get a single comment by ID code |
Users
Tool | Description |
| Get the authenticated user's profile |
| Get any user's public profile |
Tags
Tool | Description |
| List available tags with pagination |
| Get tags followed by the authenticated user |
Organizations
Tool | Description |
| Get organization details by username |
| List an organization's published articles |
| List users in an organization |
Reading List
Tool | Description |
| Get the authenticated user's bookmarked articles |
Followers
Tool | Description |
| Get the authenticated user's followers |
Error Handling & Resilience
The API client includes production-grade resilience features:
Timeouts: All requests have a 30-second timeout via
AbortSignalRetries: Automatic retry with exponential backoff (1s → 2s → 4s) for transient errors (HTTP 429, 5xx)
Rate Limiting: Respects
Retry-Afterheaders; surfacesx-ratelimit-remainingin error messagesStructured Errors:
ForemApiErrorincludes status code, endpoint, HTTP method, request ID, and rate-limit info
Known Limitations
Reactions: The
toggle_reactiontool is currently disabled due to API 401 Unauthorized errors, likely caused by insufficient scopes on standard API keys. This feature may be re-enabled in a future release if API permissions are clarified.Draft Articles: Retrieval of draft articles via
get_article_by_iduses a fallback mechanism (searching user's full article list) because the public endpoint does not support drafts. This ensures seamless access for authenticated users.
Environment Variables
Variable | Required | Description |
| Yes | Your DEV Community API key |
Development
# Install dependencies
npm install
# Build
npm run build
# Lint
npm run lint
# Type check
npm run typecheck
# Unit tests
npm test
# Integration tests (requires DEVTO_API_KEY)
DEVTO_API_KEY=your_key npm run test:integration
# Run locally
DEVTO_API_KEY=your_key node dist/index.jsContributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Security
For security concerns, please see SECURITY.md.
License
This project is licensed under the MIT License — see the LICENSE file for details.
Acknowledgments
DEV Community for their excellent API
Model Context Protocol for the MCP standard
Forem for the open-source platform
Available Tools
16 toolscreate_articleB
Create a new article on DEV Community. Set published to false to save as draft.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | List of tags (max 4) | |
| title | Yes | Title of the article | |
| series | No | Article series name | |
| published | No | Whether to publish immediately (false = draft) | |
| main_image | No | Main cover image URL | |
| description | No | Short description for the article | |
| body_markdown | No | Article content in markdown format | |
| canonical_url | No | Original URL if cross-posting | |
| organization_id | No | Organization ID to publish under |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only hints at draft creation; does not disclose authentication, side effects, rate limits, or other behavioral traits.
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 concise sentences with no fluff. Could include more details without losing 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?
9 parameters, no output schema, no annotations. Description is too minimal for a creation tool; lacks return value and error handling context.
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 100%, so baseline is 3. Description adds value for published parameter but not for others.
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?
Clearly states verb 'Create' and resource 'article on DEV Community'. Distinguishes from sibling tools like update_article and get_articles.
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?
Only mentions draft behavior via published parameter. No guidance on when to use vs alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_article_by_idA
Get a published article by its numeric ID. Returns full article details including body content.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The numeric ID of the article |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds that the article must be published and includes body content, but does not disclose behavior for missing articles, error cases, or authentication needs. It is adequate but not thorough.
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 wasted words. Every word earned 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?
The tool is simple with one parameter and no output schema. However, the description is vague about what 'full article details' include beyond body content, leaving some ambiguity about the 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 coverage is 100%, so baseline is 3. The description adds the qualifier 'published' but otherwise does not enhance understanding beyond what the schema already provides for the id 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 tool gets a single published article by its numeric ID, distinguishing it from listing tools like get_articles and update operations.
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_articles or get_my_articles, or any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articlesA
List published articles from DEV Community with optional filters. Returns articles ordered by descending popularity by default.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag name | |
| top | No | Return most popular articles in the last N days | |
| page | No | Pagination page number | |
| tags | No | Comma-separated list of tags to filter by (any match) | |
| state | No | Article state filter | |
| per_page | No | Number of articles per page (default 30, max 1000) | |
| username | No | Filter by author username | |
| tags_exclude | No | Comma-separated list of tags to exclude | |
| collection_id | No | Filter by collection ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description correctly identifies read-only behavior (listing) and ordering, but lacks details on pagination, rate limits, or authentication.
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, front-loaded sentence conveying core purpose and default behavior. 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?
For a listing tool with 9 parameters and no output schema, description adequately covers purpose and order. Could mention defaults (e.g., per_page=30) or typical filter combinations for 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 covers all 9 parameters with descriptions (100% coverage). Description adds no extra meaning beyond 'optional filters', so baseline 3.
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?
Clearly states 'List published articles from DEV Community with optional filters' and specifies default ordering by descending popularity. Distinguishes well from siblings like get_article_by_id.
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 when-to-use or alternative guidance. Implies use for filtered listings, but does not contrast with single-article or user-specific tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_authenticated_userA
Get the profile of the currently authenticated DEV Community user (the owner of the API key).
| 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 the full burden. It clarifies that the tool returns the profile of the API key owner, which implies a read-only operation. However, it does not disclose potential behaviors like authentication requirements or rate limits, though for a simple get, this is acceptable.
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 with no wasted words, appropriately sized for a zero-parameter tool.
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 parameters, no annotations, and no output schema, the description could be more specific about the returned profile structure. It is minimally complete but lacks detail about what fields or data the profile contains.
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 no parameters, and schema coverage is 100%, so the description's mention of 'the currently authenticated user' adds context beyond the schema, earning a baseline of 4.
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 'profile of the currently authenticated DEV Community user', which distinguishes it from sibling tools like get_user_by_username that retrieve other users' profiles.
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 when to use (to get the current user's profile) but does not explicitly mention alternatives (e.g., get_user_by_username for other users) or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comment_by_idA
Get a single comment by its ID code. Returns the comment with its nested replies.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID code of the comment (alphanumeric string) |
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 returns the comment with nested replies, which is behaviorally informative. However, it does not disclose any other traits such as authentication, rate limits, or side effects (though 'Get' implies read-only). Adequate but not detailed.
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 sentences, immediately front-loaded with the action and resource. No extraneous information. 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?
Given the tool is simple (one parameter, no output schema), the description sufficiently covers the purpose and return value (comment with nested replies). It lacks mention of error cases or response structure, but for a 'get by ID' tool this is nearly 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 description coverage is 100% with the 'id' parameter described as 'The ID code of the comment (alphanumeric string)'. The description merely restates 'by its ID code', adding no additional meaning beyond the schema. Baseline 3 applies.
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 a single comment by its ID code' – a specific verb+resource+identifier. It distinguishes from the sibling 'get_comments' by specifying single vs. multiple. Purpose is clear and unambiguous.
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 when to use (when you have a specific comment ID) but does not explicitly state when not to use or mention alternatives like 'get_comments' for listing. No exclusion or context guidance beyond what's inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentsA
Get comments for an article or podcast episode as threaded conversations. Returns top-level comments with nested replies.
| Name | Required | Description | Default |
|---|---|---|---|
| a_id | No | Article ID to get comments for | |
| p_id | No | Podcast episode ID to get comments for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the return structure but omits crucial details: behavior when both a_id and p_id are provided, what happens if both are missing, whether pagination exists, and if authentication is required.
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 two sentences, front-loaded with the action and resource, and contains no unnecessary words. Every sentence 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's low complexity and lack of output schema, the description conveys the basic purpose and return structure. However, it does not specify pagination, result limits, or what fields are returned, leaving some gaps.
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 100%, with parameter descriptions already stating 'Article ID' and 'Podcast episode ID'. The tool description does not add new semantic information beyond what the schema provides, so baseline of 3 is appropriate.
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 gets comments for an article or podcast episode, and specifies it returns threaded conversations with nested replies, distinguishing it from sibling tools like get_comment_by_id.
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 vs alternatives. The description implies usage for getting comments for a specific resource, but does not mention exclusions or suggest alternative tools like get_comment_by_id for single comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_followed_tagsA
Get the tags followed by the authenticated user.
| 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 must disclose all behavioral traits. It only states the basic function, omitting authentication requirements, potential empty results, or any side effects. Minimal information.
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?
A single, clear sentence with no unnecessary words. Front-loaded and efficient.
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 no-parameter retrieval tool, the description covers the essential purpose. Lacks details on return format or pagination, but given no output schema and low complexity, it is mostly adequate.
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 no parameters, so 100% coverage. The description adds no parameter information, but none is needed. Baseline for zero parameters is 4.
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 tags followed by the authenticated user. It uses a specific verb 'Get' and resource 'followed tags', distinguishing it from sibling 'get_tags' which likely returns all tags.
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 like 'get_tags'. No mention of prerequisites, exclusions, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_followersA
Get the authenticated user's followers on DEV Community. Supports pagination with sort by creation date.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number | |
| sort | No | Sort followers by field | |
| per_page | No | Number of followers per page (default 80) |
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 mentions pagination and sorting behavior but does not explicitly state that this is a read-only operation (e.g., no side effects), authentication requirements, or rate limits. The behavior described is minimal.
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 two sentences, front-loaded with purpose, and includes only essential information (pagination and sort). 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?
With 3 parameters and no output schema or annotations, the description covers the basics but omits the return format (though implied). It also doesn't mention default per_page (80 from schema). Slightly incomplete for a tool with no output schema.
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 100%, with each parameter (page, sort, per_page) already described in the schema. The description adds no new semantics beyond restating pagination and sort by creation date, which matches the enum. Baseline 3 is appropriate.
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 'followers' scoped to 'the authenticated user'. It is distinct from sibling tools like 'get_user_by_username' and 'get_authenticated_user', as it targets followers specifically.
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 retrieving followers of the authenticated user but provides no explicit guidance on when not to use it or alternatives. Given the sibling tools, some are unrelated, but the description could mention that this does not retrieve followers of other users or lists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_articlesB
Get the authenticated user's own articles. Can filter by published, unpublished, or all.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number | |
| status | No | Filter by article status (default: all) | |
| per_page | No | Number of articles per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It mentions filtering but does not disclose that authentication is required (though implied), nor does it describe pagination behavior, rate limits, or any side effects. The description is sparse for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and wastes no words. It is appropriately concise.
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 does not clarify the return format (e.g., list of articles, pagination details). For a list tool, this is a minor gap. It adequately covers parameters and basic behavior.
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 100%, so parameters are well-defined in the schema. The description adds that filtering by status is possible, which corresponds to the 'status' parameter, but does not add new meaning beyond the schema's description.
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 the authenticated user's own articles, with filtering options. This distinguishes it from siblings like 'get_articles' which likely returns all articles or others' articles.
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 the authenticated user's own articles but does not explicitly state when to use this over alternatives like 'get_articles' or 'get_article_by_id'. No guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organizationB
Get details about a DEV Community organization by its username/slug.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Organization username or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It indicates a read operation but does not disclose return format, permissions, rate limits, or any side effects. Minimal behavioral context beyond the action.
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, front-loaded with key information, no unnecessary words. Efficient and to the point.
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 one-parameter tool with no output schema, the description is nearly complete. It could specify what 'details' include (e.g., organization metadata), but the existing information is sufficient for basic 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?
Schema description coverage is 100% and the description repeats the parameter (username/slug) without adding meaning beyond the schema. Baseline 3 applies as the schema already documents the parameter adequately.
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 action (Get details), resource (organization), and input (username/slug). It distinguishes from sibling tools like get_organization_articles and get_organization_users by focusing on the organization itself.
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 (e.g., get_organization_articles, get_organization_users). The description only states the function without context for selection, leaving the agent to infer usage from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organization_articlesC
Get articles published by an organization on DEV Community.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number | |
| per_page | No | Number of articles per page | |
| username | Yes | Organization username or slug |
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. It only states it 'gets' articles, implying a read operation, but fails to mention pagination behavior, rate limits, authentication needs, or whether it returns all articles or only published ones. The description is too minimal to provide adequate transparency.
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 effectively front-loads the purpose. It is concise with no waste. However, it could include a bit more detail without becoming verbose, so it earns a 4 rather than a 5.
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 3 parameters, absence of output schema, and no annotations, the description is incomplete. It does not explain return format, pagination, or how the organization is specified beyond the schema. For a simple read tool, more context (e.g., 'returns a list of articles with pagination') would be expected.
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 100%, so all parameters have descriptions in the schema. The tool description adds no additional meaning beyond what the schema already provides. Baseline score of 3 is appropriate as the schema does the heavy lifting, but the description does not enhance 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 states 'Get articles published by an organization on DEV Community.' It clearly identifies the verb 'Get', the resource 'articles published by an organization', and the platform. This distinguishes it from sibling tools like 'get_articles' (general articles) and 'get_organization' (org details), even without explicit differentiation.
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 does not mention prerequisites (e.g., organization existence), nor does it offer context for choosing between this and siblings like 'get_articles' or 'get_organization'. The sibling list is given, but no comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organization_usersB
Get users who belong to a DEV Community organization.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number | |
| per_page | No | Number of users per page | |
| username | Yes | Organization username or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description should disclose behavioral traits. It does not mention pagination behavior, error handling for invalid usernames, or response format. The read-only nature is implied but not explicit.
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?
A single sentence with 10 words, front-loaded with the verb. No filler. 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?
The description covers the core purpose but lacks details about pagination, response format, and error states. Given no output schema, more context would be 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?
Schema description coverage is 100% for all parameters. Description adds no additional meaning beyond the schema, achieving the baseline of 3.
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', resource 'users', and scope 'belong to a DEV Community organization'. It effectively distinguishes from siblings like get_organization (org info) and get_user_by_username (single user).
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 such as get_organization or search endpoints. No prerequisites or context for when the tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reading_listA
Get the authenticated user's reading list (bookmarked articles). Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number | |
| per_page | No | Number of items per page (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states 'get' (implied read-only) and mentions pagination, but lacks details on auth requirements, rate limits, or data freshness. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficient and clear.
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 retrieval tool with two optional params and no output schema, the description covers core functionality. Could hint at return structure or ordering, but acceptable.
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 100% with both parameters already well-described. The description adds 'Supports pagination' but no additional semantics beyond the schema's information.
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?
Clearly states verb 'get' and resource 'reading list (bookmarked articles)', distinguishing it from sibling tools like get_articles (all articles) and get_article_by_id (single article).
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 like get_my_articles or get_articles. The description leaves it to the agent to infer context from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagsB
List available tags from DEV Community with pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Pagination page number | |
| per_page | No | Number of tags per page (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic function. It does not disclose behavioral details such as authentication requirements, rate limits, or whether the list includes private tags, leaving significant gaps.
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 concise, consisting of a single sentence that clearly communicates the purpose. It is appropriately sized but could benefit from slightly more detail without becoming verbose.
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 simple nature of the tool (2 optional params, no output schema, no annotations), the description covers the basic functionality but omits details like sort order, response structure, or any side effects. It is minimally adequate.
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 100% with parameter descriptions. The description adds 'with pagination' but provides no additional semantic context beyond what the schema already offers (e.g., defaults, constraints). Baseline score of 3 is appropriate.
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 ('List') and the resource ('available tags from DEV Community'), and includes pagination context. This distinguishes it from sibling tools like get_articles, get_comments, etc.
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 pagination usage but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions. The context is clear but lacks depth for optimal decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_by_usernameB
Get a user's public profile by their username or numeric ID.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username or numeric user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It mentions 'public profile' implying read-only, but does not state whether authentication is needed, rate limits, or error behavior (e.g., user not found). Minimal disclosure.
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, no unnecessary words, front-loaded with verb 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?
For a simple one-parameter tool with no output schema, the description is adequate but does not mention return format or potential errors. Could slightly improve by noting it returns profile fields.
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 100% and the parameter description in the schema already specifies 'Username or numeric user ID'. The tool description repeats this without adding extra meaning, so baseline 3.
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 the resource ('user's public profile'), and specifies the identifier method ('by their username or numeric ID'). It distinguishes from sibling tools like get_articles or get_comments.
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 (e.g., get_authenticated_user). No exclusions or context provided.
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 by its ID. Only include fields you want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The numeric ID of the article to update | |
| tags | No | New tags (max 4) | |
| title | No | New title | |
| series | No | Series name (null to remove from series) | |
| published | No | Publish or unpublish the article | |
| main_image | No | New cover image URL | |
| description | No | New description | |
| body_markdown | No | New content in markdown | |
| canonical_url | No | New canonical URL | |
| organization_id | No | Organization ID |
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 only states the action ('update'), but does not disclose any behavioral traits such as required permissions, error handling, idempotency, or whether the update is atomic. This is insufficient for a mutation tool.
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 two sentences long, front-loaded with the primary purpose, and contains no redundant information. Every word is necessary.
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 10 parameters and no output schema, the description is minimal. It covers the basic purpose but omits details like what the response contains or any side effects. For a complex tool, a bit more completeness would be beneficial, though not severe given the schema descriptions.
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 100%, with each parameter well-described in the schema itself. The description adds marginal value by reinforcing that only changed fields should be included, but does not provide additional semantic or usage context beyond what is already in 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 states 'Update an existing article by its ID', which is a clear verb+resource combination. However, it does not distinguish itself from sibling tools like 'create_article' beyond the verb, and the resource is the same as many read tools.
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 instruction 'Only include fields you want to change' implies partial updates, providing some usage guidance. However, there is no explicit when-to-use or when-not-to-use information compared to alternatives like 'create_article' or 'get_article_by_id'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: articles, comments, users, followers, tags, organizations, and reading list. No two tools have overlapping purposes.
All tools follow a consistent verb_noun pattern with snake_case (e.g., get_article_by_id, create_article). Verbs are uniformly 'get', 'create', or 'update'.
16 tools cover multiple domains of DEV Community API. While on the higher end of the typical range, each tool serves a clear purpose without redundancy.
Missing key CRUD operations such as delete article, create/update comment, follow/unfollow tag, and add/remove reading list. Agents cannot perform full lifecycle actions.
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
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
A MCP server built for developers enabling Git based project management with project and personal…
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server implementation that allows AI assistants to access, search, and interact with Dev.to content, including fetching articles, retrieving user information, and publishing new content.1062MIT
- 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.11MIT
- AlicenseNot gradedqualityDmaintenanceCampaign-driven social engagement MCP server for authentic developer community interaction (Dev.to, Bluesky, Twitter, Reddit) with a streamlined scout-draft-strike pipeline minimizing LLM round trips.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the FreeFeed social network API. Enables reading timelines, posts, comments, and attachments, as well as writing posts, comments, and managing subscriptions.MIT
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/furkankoykiran/DevTo-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server