Skip to main content
Glama
furkankoykiran

@furkankoykiran/coderlegion-mcp

@furkankoykiran/coderlegion-mcp

CI npm version GitHub Package License: MIT Node.js

TypeScript MCP server for CoderLegion — connect AI agents (Claude, Cursor, Cline) to the developer community platform.

Built with the official MCP TypeScript SDK, it exposes 13 tools covering post management, profile editing, content search, and social interactions — all accessible from any MCP-compatible client.


Features

Category

Tools

Posts

create_post, edit_post, delete_post, get_post, list_posts, add_comment

Profile

get_profile, edit_profile

Search

search_posts, browse_tag, get_categories

Social

react_to_post, get_notifications, get_activity_feed


Related MCP server: mcpcodeserver

Prerequisites

  1. Node.js 20+ (node --version)

  2. A CoderLegion account with valid session cookies


Installation

Option 1 — Run directly with npx (no install required)

CODERLEGION_PHPSESSID=xxx CODERLEGION_QA_SESSION=xxx npx @furkankoykiran/coderlegion-mcp

Option 2 — Install globally from npm

npm install -g @furkankoykiran/coderlegion-mcp
CODERLEGION_PHPSESSID=xxx CODERLEGION_QA_SESSION=xxx coderlegion-mcp

Option 3 — Install from GitHub Packages

npm install -g @furkankoykiran/coderlegion-mcp --registry=https://npm.pkg.github.com
CODERLEGION_PHPSESSID=xxx CODERLEGION_QA_SESSION=xxx coderlegion-mcp

Option 4 — Build from source

git clone https://github.com/furkankoykiran/coderlegion-mcp.git
cd coderlegion-mcp
npm install
npm run build
node build/index.js

Configuration

The server is configured entirely via environment variables — no config file needed.

Variable

Default

Description

CODERLEGION_PHPSESSID

(empty)

PHP session ID — required

CODERLEGION_QA_SESSION

(empty)

Q2A session cookie — required

CODERLEGION_QA_NOTICED

1

Notice acknowledgement cookie

Getting your cookies

  1. Log in to coderlegion.com in your browser

  2. Open Developer Tools (F12) > Application > Cookies > https://coderlegion.com

  3. Copy the values for PHPSESSID and qa_session


MCP Client Setup

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "coderlegion": {
      "command": "npx",
      "args": ["-y", "@furkankoykiran/coderlegion-mcp"],
      "env": {
        "CODERLEGION_PHPSESSID": "your-php-session-id",
        "CODERLEGION_QA_SESSION": "your-qa-session-value"
      }
    }
  }
}

VS Code (Cline / Continue)

Add to your MCP server settings:

{
  "coderlegion": {
    "command": "npx",
    "args": ["-y", "@furkankoykiran/coderlegion-mcp"],
    "env": {
      "CODERLEGION_PHPSESSID": "your-php-session-id",
      "CODERLEGION_QA_SESSION": "your-qa-session-value"
    }
  }
}

Built from source

{
  "coderlegion": {
    "command": "node",
    "args": ["/absolute/path/to/coderlegion-mcp/build/index.js"],
    "env": {
      "CODERLEGION_PHPSESSID": "your-php-session-id",
      "CODERLEGION_QA_SESSION": "your-qa-session-value"
    }
  }
}

Claude Code (CLI)

claude mcp add -s user coderlegion \
  -e CODERLEGION_PHPSESSID=your-php-session-id \
  -e CODERLEGION_QA_SESSION=your-qa-session-value \
  -- npx -y @furkankoykiran/coderlegion-mcp

Available Tools

Posts

create_post

Create a new post on CoderLegion. Supports Articles, Tutorials, Launches, and Videos with Markdown content, scheduling, and category-specific fields.

Note: CoderLegion enforces a maximum of 4 tags per post.

Parameter

Type

Required

Description

title

string

Yes

Post title

content

string

Yes

Post content in Markdown

tags

string

Yes

Comma-separated tags, max 4 (e.g. python,automation,mcp)

category

enum

Yes

2 Articles, 5 Tutorials, 1971 Launches, 2005 Videos

draft

boolean

No

Save as draft (default: false)

schedule_time

string

No

Publish time: YYYY-MM-DDThh:mm

schedule_utc

string

No

Timezone offset in minutes for scheduling

source_url

string

No

Source URL for attribution

os_type

enum

No

Project or Product (Launches only)

os_tagline

string

No

Short tagline (Launches only)

repo_url

string

No

Repository URL (Launches only)

web_url

string

No

Website/demo URL (Launches only)

os_status

enum

No

Active, Development, Experimental, Archived, None (Launches only)

os_license

enum

No

1 MIT, 2 Apache 2.0, 3 GPL v3, 4 BSD, 5 Other (Launches only)

os_availability

enum

No

Free, Paid, Trial, None (Launches only)

vdo_type

string

No

Video type e.g. Tutorials, Product Demos (Videos only)

vdo_url

string

No

Video URL e.g. YouTube link (Videos only)

edit_post

Edit an existing post's title, content, tags, or category. Only the fields you provide are changed; everything else remains as-is.

Parameter

Type

Required

Description

id

string

Yes

Post ID (numeric)

slug

string

Yes

Post URL slug

title

string

No

New title

content

string

No

New Markdown content

tags

string

No

New comma-separated tags

category

enum

No

New category ID

delete_post

Hide (soft-delete) a post. The post becomes invisible to other users but is not permanently removed.

Parameter

Type

Required

Description

id

string

Yes

Post ID (numeric)

slug

string

Yes

Post URL slug

get_post

Retrieve a post's title, content snippet, tags, and author information.

Parameter

Type

Required

Description

id

string

Yes

Post ID (numeric)

slug

string

Yes

Post URL slug

list_posts

Retrieve all posts by a specific CoderLegion user.

Parameter

Type

Required

Description

username

string

Yes

CoderLegion username

add_comment

Add a Markdown comment to a post thread.

Parameter

Type

Required

Description

id

string

Yes

Post ID (numeric)

slug

string

Yes

Post URL slug

content

string

Yes

Comment text in Markdown

comment_id

string

Yes

Comment thread ID (from the post page)


Profile

get_profile

Get the authenticated user's CoderLegion profile information — name, tagline, location, website, about, skills, interests, achievements, fun fact, and quote. No parameters required.

edit_profile

Edit the authenticated user's profile. Only the fields you provide are updated; others remain unchanged.

Parameter

Type

Required

Description

name

string

No

Full display name

tagline

string

No

Short tagline/headline shown under the name

about

string

No

About/bio section

location

string

No

Location (e.g. Istanbul, Türkiye)

website

string

No

Personal website URL

skills

string

No

Skills description

interests

string

No

Interests description

achievements

string

No

Achievements description

fun_fact

string

No

Fun fact about you

quote

string

No

Favorite quote


search_posts

Full-text search across all CoderLegion posts.

Parameter

Type

Required

Description

query

string

Yes

Search query

browse_tag

Browse posts filtered by a specific tag.

Parameter

Type

Required

Description

tag

string

Yes

Tag name (e.g. python, javascript)

get_categories

Retrieve all post categories with their IDs and descriptions. No parameters required.


Social

react_to_post

React to a post with a like or love. Calling again on the same post toggles the reaction off.

Parameter

Type

Required

Description

post_id

string

Yes

Post ID to react to

type

enum

Yes

like or love

get_notifications

Retrieve your notification feed (comments, reactions, follows). No parameters required.

get_activity_feed

Retrieve the social activity feed from followed users. No parameters required.


Development

# Clone and install
git clone https://github.com/furkankoykiran/coderlegion-mcp.git
cd coderlegion-mcp
npm install

# Run in development mode (auto-reloads on change)
npm run dev

# Type-check
npm run typecheck

# Build for production
npm run build

Testing with MCP Inspector

npx @modelcontextprotocol/inspector node build/index.js

Set the environment variables in the Inspector UI and verify all 13 tools are listed.


Contributing

Contributions are welcome. Please read the contributing guidelines and open an issue before submitting a pull request for significant changes.


License

MIT — see LICENSE.

Available Tools

14 tools
add_commentC

Add a comment to a CoderLegion post

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPost ID (numeric)
slugYesPost URL slug
contentYesComment text in Markdown
comment_idYesComment thread ID (numeric, from the post page)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full behavioral burden for a mutation operation. It does not disclose authentication requirements, whether the comment is immediately visible, rate limits, or any side effects; the single sentence adds nothing beyond the implied write action.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately terse for a simple action, though it could benefit from a clarifying clause without becoming verbose.

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

Completeness2/5

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

For a four-parameter mutation tool with no annotations and no output schema, the description is critically thin. It omits usage context, behavioral expectations, and return information, leaving the agent under-informed about when and how to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters with clear descriptions. The tool description adds no additional parameter meaning, making the baseline of 3 appropriate.

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

Purpose4/5

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

States a specific verb ('Add') and resource ('comment') with the target platform ('CoderLegion post'), making the action unambiguous. It does not explicitly differentiate from siblings (e.g., create_post, react_to_post), but no sibling is similarly named or scoped, so the lack of differentiation is minor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use guidance, no prerequisites, and no mention of alternatives such as create_post or edit_post. An agent must infer that this is the correct tool solely from the name and resource.

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

browse_tagB

Browse posts by tag on CoderLegion

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesTag name (e.g. "python", "javascript")

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and discloses almost nothing: no pagination, ordering, result count, or auth requirements are mentioned. It implies a read-only browse but never confirms it.

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

Conciseness4/5

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

A single short sentence that front-loads the action and resource with zero filler. It is efficient, though perhaps terse enough to leave gaps the agent must fill.

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

Completeness3/5

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

For a simple one-parameter read tool with no output schema, the definition is minimally adequate. It omits result behavior (pagination, sorting, counts), which an agent needs to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single tag parameter is documented with examples in the schema itself. The description adds no meaning beyond what the schema already provides, so the baseline 3 applies.

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

Purpose4/5

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

The description states a clear verb+resource: browsing posts filtered by tag on CoderLegion. It does not, however, distinguish itself from siblings like search_posts or list_posts, leaving the agent to guess which filtering tool fits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by "by tag" — there is no explicit statement of when to prefer this over search_posts or list_posts, nor any exclusion. The agent can infer the intent but must decide routing on its own.

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

create_postC

Create a new post on CoderLegion. Supports Articles, Tutorials, Launches, and Videos.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYesComma-separated tags, max 4 (e.g. "python,automation,mcp")
draftNoSave as draft instead of publishing (default: false)
titleYesPost title
contentYesPost content in Markdown
os_typeNoLaunch type (Launches only)
vdo_urlNoVideo URL, e.g. YouTube link (Videos only)
web_urlNoWebsite/demo URL (Launches only)
categoryYesCategory ID: 2=Articles, 5=Tutorials, 1971=Launches, 2005=Videos
repo_urlNoRepository URL (Launches only)
vdo_typeNoVideo type: Tutorials, Product Demos, Feature Launches, etc. (Videos only)
os_statusNoProject status (Launches only)
os_licenseNoLicense: 1=MIT, 2=Apache 2.0, 3=GPL v3, 4=BSD, 5=Other (Launches only)
os_taglineNoShort tagline (Launches only)
source_urlNoSource URL for attribution
schedule_utcNoTimezone offset in minutes for scheduling
schedule_timeNoSchedule publish time: YYYY-MM-DDThh:mm
os_availabilityNoAvailability (Launches only)

TDQS

C2.9/5.0
Behavior2/5

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

With zero annotations, the description carries the full behavioral burden, yet it only says what post types exist. It does not disclose whether the post publishes immediately (draft vs scheduled), what permissions are required, or what happens to category-specific fields for unrelated categories – critical for a 17-parameter 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.

Conciseness4/5

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

Two short sentences, front-loaded with the core action, with no filler. The second sentence earns a bit of place by enumerating supported content types, though it partly restates the category enum.

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

Completeness2/5

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

For a 17-parameter tool with no annotations and no output schema, the description is too thin. It omits how the many category-specific fields interact (Launches vs Videos vs Articles), draft/scheduling semantics, and any return or confirmation behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 17 parameters including the category enum and per-category fields. The description's mention of Articles/Tutorials/Launches/Videos loosely maps to the category enum but adds no syntax or constraint detail beyond it. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ('Create a new post on CoderLegion'), clearly distinct from siblings like edit_post and get_post. The second sentence names the supported post categories, which helps scope the tool, but there is no explicit contrast with any sibling beyond the verb itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs edit_post or list_posts, nor any mention of prerequisites (auth, category selection). Usage is only inferable from the bare verb 'create'.

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

delete_postB

Hide (soft-delete) a post on CoderLegion. The post becomes invisible to other users.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPost ID (numeric)
slugYesPost URL slug

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the soft-delete semantics and the visibility effect ('invisible to other users'), but says nothing about reversibility, whether the author still sees the post, or required permissions/ownership.

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

Conciseness5/5

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

Two short sentences, zero filler, with the soft-delete semantics front-loaded right after the verb so the most surprising fact reads first.

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

Completeness3/5

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

For a simple two-parameter tool with no output schema this is nearly adequate, but a mutation with no annotations should at least hint at permissions/reversibility. The core effect is covered; the operational prerequisites are not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (id, slug) are documented in the schema, so the description adds no parameter-level meaning beyond what is already structured. Baseline 3 applies.

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

Purpose4/5

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

Names a specific verb (hide/soft-delete) and resource (a post) and clarifies an important nuance that the tool name delete_post would otherwise obscure: it is a soft delete, not a permanent one. It does not explicitly contrast with edit_post, but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what happens but gives no when-to-use guidance, no mention of when a permanent delete would be preferable, and no reference to any sibling tool. The agent must infer usage entirely from the name and the word 'Hide'.

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

edit_postC

Edit an existing post on CoderLegion

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPost ID (numeric)
slugYesPost URL slug
tagsNoNew comma-separated tags
titleNoNew title
contentNoNew content in Markdown
categoryNoNew category ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Edit' implies mutation, but the description does not state whether this requires specific permissions, whether edits are immediately visible, what happens to omitted fields (partial vs. full update), or any side effects. This is a significant gap 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with zero waste. It efficiently states the tool's purpose without unnecessary words.

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

Completeness2/5

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

Given the complexity of a mutation tool with six parameters (two required) and no annotations or output schema, the description is incomplete. It fails to address permissions, partial update behavior, or return values. The schema covers parameters, but behavioral context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters in detail (e.g., types, enum for category). The description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

States a clear verb+resource: 'Edit an existing post on CoderLegion.' This distinguishes it from sibling tools like create_post, delete_post, and get_post. However, it does not differentiate from edit_profile explicitly beyond the resource name, and provides no detail on what aspects of the post can be edited.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication, ownership), nor does it indicate when editing is appropriate or when other tools like delete_post or create_post might be better. There is no when/when-not guidance.

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

edit_profileB

Edit the authenticated user's CoderLegion profile. Only specified fields are updated; others remain unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFull display name
aboutNoAbout/bio section
quoteNoFavorite quote
skillsNoSkills description
taglineNoShort tagline/headline shown under the name
websiteNoPersonal website URL
fun_factNoFun fact about you
locationNoLocation (e.g. "Istanbul, Türkiye")
interestsNoInterests description
achievementsNoAchievements description

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully discloses PATCH-like partial-update semantics ('others remain unchanged'), which prevents an agent from fearing it will blank unspecified fields. It does not cover auth/permission needs beyond the phrase 'authenticated user's', reversibility, or error behavior.

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

Conciseness5/5

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

Two tight sentences with the mutation's scope front-loaded and the partial-update guarantee immediately after. No filler, no redundancy.

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

Completeness3/5

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

For a 10-parameter mutation tool with no annotations and no output schema, the description covers what the tool does and the partial-update contract but omits what the response returns, validation/failure behavior, and any auth caveats. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 10 parameters are documented at 100% schema coverage, so the schema already carries full semantics. The description adds no field-level meaning, syntax, or format constraints beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb (Edit) and resource (authenticated user's CoderLegion profile), clearly distinguishable from get_profile in the sibling list. It stops short of naming the read counterpart explicitly, so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, prerequisites, or alternatives are given. The partial-update note ('Only specified fields are updated') describes mechanics rather than the conditions under which an agent should choose this tool over get_profile or others.

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

get_activity_feedA

Get the CoderLegion social activity feed from followed users

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the data source scope (followed users only), which is useful, but says nothing about pagination, ordering, result limits, or authentication requirements for a feed endpoint.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; every word contributes to identifying the resource and its scope.

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

Completeness3/5

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

With no output schema and no annotations, the description should say more about what comes back (activity items, ordering, whether results are paginated or bounded). For a simple zero-param read the gap is modest but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing parameter-related for the description to explain or compensate for.

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

Purpose4/5

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

States a specific verb (Get) and resource (social activity feed) plus a scope qualifier ('from followed users') that separates it from siblings like get_notifications and list_posts. It does not explicitly name or contrast with any sibling, which keeps it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from followed users' implies when this tool is appropriate (viewing posts/activity of accounts you follow), but there is no explicit when-to-use guidance and no alternative tool is named, even though get_notifications and list_posts overlap in intent.

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

get_categoriesA

List all CoderLegion post categories with their IDs

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It conveys useful scope information ("all" categories with IDs, implying a complete unfiltered listing), but says nothing about authentication/permissions needed or whether results are cached or paginated.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler. Every word earns its place, and no additional text would be needed for a tool this simple.

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

Completeness4/5

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

For a trivial, 0-param, read-only listing tool with no output schema and no annotations, the description is nearly sufficient, telling the agent what is returned. It could go slightly further by describing the shape of a category record beyond the ID.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for a 0-param tool applies. The description correctly implies no inputs are required.

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

Purpose4/5

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

States a specific verb ("List") and resource ("CoderLegion post categories"), and even names the returned payload (categories with IDs). No sibling tool covers categories, so there is no real ambiguity, though the description does not explicitly set itself apart from any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: nothing tells the agent this is the prerequisite step for create_post/edit_post category assignment, and no alternatives or exclusions are mentioned. Usage is only inferable from the tool name itself.

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

get_notificationsB

Get your CoderLegion notifications

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and delivers almost nothing. It doesn't state read-only nature, whether it requires auth, whether results are paginated, or how read state is handled.

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

Conciseness5/5

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

A single short sentence, front-loaded and waste-free. Nothing redundant or padded.

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

Completeness2/5

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

For a no-param tool, the description is functionally callable but omits nearly all useful context — no mention of auth requirement, pagination, sort order, or overlap with get_activity_feed. With no annotations and no output schema, the description is too thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline of 4 applies. There is nothing for the description to clarify beyond the schema's empty object.

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

Purpose4/5

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

States a specific verb (get) and resource (notifications) scoped to the caller. Siblings are all posts/comments/profile/feed tools, so notifications is clearly distinguished, though the description doesn't elaborate on what notifications contain or how they're ordered.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus get_activity_feed, which is a plausibly overlapping sibling. No exclusions, prerequisites, or context for when notifications should be fetched.

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

get_postA

Read a post from CoderLegion and return its title, content snippet, tags, and author

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPost ID (numeric)
slugYesPost URL slug

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the return shape (title, content snippet, tags, author) and implies a non-destructive read, but says nothing about behavior when the id/slug is invalid or mismatched, or whether content is truncated.

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

Conciseness5/5

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

A single tight sentence with zero filler, front-loading the action and following immediately with the concrete return fields.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned fields, which is the key missing structured information for a read tool. It stops short of covering error behavior or the id/slug relationship, but is otherwise sufficient for a simple two-param fetch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented as 'Post ID (numeric)' and 'Post URL slug', establishing the baseline of 3. The description adds no extra meaning, such as whether id and slug must refer to the same post or how slug is derived.

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

Purpose4/5

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

States a specific verb (Read) and resource (a post from CoderLegion) and enumerates the returned fields, which clearly distinguishes it from list_posts, search_posts, and browse_tag. It does not name those siblings explicitly, but the single-post read intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent can infer this fetches one post by id/slug, but there is no statement of when to prefer it over search_posts or list_posts, and no mention of prerequisites or failure conditions.

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

get_profileA

Get the authenticated user's CoderLegion profile information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a meaningful behavioral constraint — the result is scoped to the authenticated user, not an arbitrary user — which tells the agent the operation needs an authenticated session. It says nothing about the returned payload's shape or error behavior when unauthenticated.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; every word is load-bearing and the resource is named immediately.

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

Completeness4/5

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

For a zero-parameter read of the caller's own profile, the description covers what the tool does and who it acts on. The only minor gap is that, since no output schema exists, it doesn't hint at what profile fields come back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The description correctly implies no inputs are needed by referring only to the authenticated context.

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

Purpose4/5

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

The description gives a specific verb ("Get") and resource ("authenticated user's CoderLegion profile information"), which is clearly distinguishable from the sibling edit_profile. It stops short of explicitly contrasting itself with edit_profile, but the read vs. write framing makes the distinction evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scope phrase "authenticated user's" — an agent can infer this is the correct call when it needs the current user's own profile, with no parameters required. However, it never states when to prefer this over edit_profile or what preconditions (auth) apply, so the guidance is only implicit.

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

list_postsC

List posts by a CoderLegion user

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesCoderLegion username

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'List' implies a safe read, but the description says nothing about pagination, ordering, result limits, whether drafts/private posts are included, or what the response contains.

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

Conciseness4/5

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

A single short, front-loaded sentence with no filler or repetition. It is efficient, though it is efficient partly by omitting information an agent would want.

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

Completeness3/5

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

For a one-parameter list tool this is minimally adequate, and the parameter is fully covered by the schema. With no output schema and no annotations, though, the description should at least indicate result shape or pagination behavior for the calling agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the single 'username' parameter is already documented in the schema as 'CoderLegion username'. The phrase 'by a CoderLegion user' restates that mapping without adding format or validation detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('List') and resource ('posts') scoped to a CoderLegion user, which is clearer than a bare tautology. However it does nothing to differentiate itself from siblings like search_posts, get_post, or get_activity_feed, which also surface posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus search_posts (filtered search) or get_post (single post), nor any mention of prerequisites or result scope. The agent must infer the distinction 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.

react_to_postC

React to a CoderLegion post with a like or love

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesReaction type
post_idYesPost ID to react to

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not indicate whether reactions can be changed or removed, whether there are rate limits, whether authentication is required beyond the implied post_id, or what the response contains. Only the core action is described.

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

Conciseness5/5

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

A single, clear sentence that is front-loaded and wastes no words. It efficiently conveys the essential action and the available reaction types.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It omits when to use it, behavioral traits (like idempotency or changeability), and expected outcomes, leaving significant gaps for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (post_id and type with enum). The description adds no additional meaning beyond what the schema provides, such as format examples or validation rules. Baseline 3 is appropriate.

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

Purpose4/5

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

Clearly states a specific verb (react) and resource (CoderLegion post) with the allowed reaction types (like/love), so the agent knows exactly what the tool does. It doesn't explicitly differentiate from siblings like add_comment, but the verb 'react' is distinct enough to not be confused.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as add_comment or edit_post. It doesn't state prerequisites (e.g., whether the post must exist, whether the user can react to their own post) or any constraints.

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

search_postsC

Search for posts on CoderLegion

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it says nothing about result ranking, pagination, limits, or that this is a read-only operation. For a search tool with zero annotation coverage, this is a notable gap.

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

Conciseness4/5

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

A single short, front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification rather than tight phrasing.

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

Completeness3/5

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

For a one-parameter search tool this is minimally viable, but with no output schema the description could reasonably indicate what results look like or how matching works. Nothing beyond the bare purpose is conveyed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and the schema documents it at 100% coverage, so the baseline is 3. The description adds no syntax, matching behavior, or format hints beyond what the schema already says.

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

Purpose4/5

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

States a specific verb (search) and resource (posts), so an agent immediately understands it queries posts. However, it does nothing to distinguish itself from siblings like list_posts, get_post, or browse_tag, which also surface posts by different means.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use search_posts versus list_posts or browse_tag. The agent must infer that a keyword query is the differentiator, which is plausible but never stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv1.1.1
    • First observedadd_comment
    • First observedbrowse_tag
    • First observedcreate_post
    • First observeddelete_post
    • First observededit_post
    • First observededit_profile
    • First observedget_activity_feed
    • First observedget_categories
    • First observedget_notifications
    • First observedget_post
    • First observedget_profile
    • First observedlist_posts
    • First observedreact_to_post
    • First observedsearch_posts

TDQS

A3.5/5.0

Scored across 14 tools

Disambiguation4/5

Most tools target a distinct action+resource, but the read-side of posts has four overlapping entry points (list_posts, search_posts, browse_tag, get_activity_feed) that an agent could easily confuse when just wanting to find posts. The descriptions do differentiate them (by user, query, tag, followed users), so ambiguity is manageable rather than severe.

Naming Consistency5/5

Every tool follows a clean verb_noun snake_case pattern (get_post, create_post, edit_post, delete_post, add_comment, react_to_post, get_profile, edit_profile). No mixed conventions or vague verbs appear anywhere in the set.

Tool Count5/5

14 tools is well within the sweet spot for a social/blogging platform and each one maps to a real user-facing operation. Nothing feels padded or redundant at the count level.

Completeness4/5

Posts have full lifecycle coverage (create, get, list, search, browse, edit, soft-delete) plus comments, reactions, categories, profile, notifications, and a feed. Minor gaps exist on the secondary resources — no delete/unreact for reactions, no comment listing or deletion — but these are workable omissions.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Production-ready template for building MCP servers with TypeScript, featuring example tools and resources, and Claude Desktop integration.
    1
    4 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A TypeScript template for building MCP servers, enabling developers to create custom tools for AI assistants like Claude.
    11 npm
    MIT