Skip to main content
Glama
eraincc
by eraincc

Emlog MCP Server

GitHub License English 简体中文 繁體中文

An Emlog blog system integration service based on Model Context Protocol (MCP), allowing AI assistants to interact with Emlog blogs through standardized interfaces.

Features

Resources

  • Blog Articles (emlog://articles) - Get all blog article lists

  • Categories (emlog://categories) - Get all category information

  • Comments (emlog://comments) - Get comment lists (based on latest articles)

  • Micro Notes (emlog://notes) - Get micro note lists

  • Draft Articles (emlog://drafts) - Get all draft article lists

  • User Information (emlog://user) - Get current user information

Tools

  • create_article - Create new blog articles

  • update_article - Update existing blog articles

  • get_article - Get specific article details

  • search_articles - Search articles (supports keyword, tag, category filtering)

  • like_article - Like articles

  • add_comment - Add comments

  • get_comments - Get comment lists for specific articles

  • create_note - Create micro notes

  • upload_file - Upload files (images and other media resources)

  • get_user_info - Get user information

  • get_draft_list - Get draft article lists

  • get_draft_detail - Get detailed information of specific drafts

Related MCP server: MCP Blogger Posting Server

Tech Stack

  • TypeScript - Type-safe JavaScript superset

  • Node.js - JavaScript runtime environment

  • MCP SDK - Model Context Protocol TypeScript SDK

  • Axios - HTTP client library

  • Zod - TypeScript-first schema validation library

  • form-data - Multipart form data processing

Installation and Configuration

Use emlog-mcp directly in Claude Desktop configuration without local installation. Jump to MCP Client Configuration section.

Method 2: Local Development Installation

1. Clone the Project

git clone https://github.com/eraincc/emlog-mcp.git
cd emlog-mcp

2. Install Dependencies

npm install

3. Environment Variable Configuration

Copy the example configuration file and edit:

cp .env.example .env

Set the following environment variables in the .env file:

# Emlog API base URL (required)
EMLOG_API_URL=https://your-emlog-site.com

# Emlog API key (required)
EMLOG_API_KEY=your_api_key_here

Getting API Key:

  1. Log in to your Emlog backend management system

  2. Go to "Settings" → "API Interface"

  3. Enable API functionality and generate API key

  4. Copy the generated key to the .env file

4. Build Project

npm run build

5. Run Service

npm start

Or development mode:

npm run dev

MCP Client Configuration

Claude Desktop Configuration

Add to Claude Desktop configuration file (usually located at ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "emlog": {
      "command": "npx",
      "args": ["emlog-mcp"],
      "env": {
        "EMLOG_API_URL": "https://your-emlog-site.com",
        "EMLOG_API_KEY": "your_api_key_here"
      }
    }
  }
}

Note: The configuration now directly uses the published npm package emlog-mcp, no local installation or compilation required. npx will automatically download and run the latest version.

The project also provides an example configuration file claude-desktop-config.json for reference.

Other MCP Clients

For other MCP-supporting clients, please refer to their respective documentation for stdio transport configuration.

API Interface Documentation

This service is built on Emlog's REST API, supporting the following main operations:

Article Management

  • GET /api/article_list - Get article lists

  • GET /api/article_view - Get specific article details

  • POST /api/article_save - Create/update articles

  • POST /api/article_like - Like articles

Draft Management

  • GET /api/draft_list - Get draft lists

  • GET /api/draft_detail - Get specific draft details

Category Management

  • GET /api/sort_list - Get category lists

Comment Management

  • GET /api/comment_list - Get comment lists

  • POST /api/comment_save - Publish comments

Micro Notes

  • GET /api/note_list - Get micro note lists

  • POST /api/note_save - Publish micro notes

File Upload

  • POST /api/upload - Upload files

User Management

  • GET /api/userinfo - Get user information

Usage Examples

Create Blog Article

// Through MCP tool call
{
  "name": "create_article",
  "arguments": {
    "title": "My New Article",
    "content": "This is the article content, supporting HTML and Markdown formats.",
    "sort_id": 1,
    "tag": "technology,programming,MCP",
    "is_private": "n",
    "allow_comment": "y"
  }
}

Search Articles

// Search articles containing keywords
{
  "name": "search_articles",
  "arguments": {
    "keyword": "technology",
    "page": 1,
    "count": 10
  }
}

Get Article List

// Through MCP resource access
{
  "uri": "emlog://articles"
}

Get Draft List

// Get draft list
{
  "name": "get_draft_list",
  "arguments": {
    "count": 10
  }
}

Get Draft Details

// Get detailed information of specific draft
{
  "name": "get_draft_detail",
  "arguments": {
    "id": 123
  }
}

Upload File

// Upload image file
{
  "name": "upload_file",
  "arguments": {
    "file_path": "/path/to/image.jpg"
  }
}

Create Micro Note

// Publish micro note
{
  "name": "create_note",
  "arguments": {
    "content": "This is a micro note",
    "is_private": false
  }
}

Error Handling

The service includes comprehensive error handling mechanisms:

  • Network Errors - Automatic retry and timeout handling

  • API Errors - Detailed error information return

  • Authentication Errors - API key validation failure prompts

  • Parameter Errors - Input parameter validation and prompts

Development and Debugging

Available Scripts

# Build project
npm run build

# Start service
npm start

# Development mode (auto restart)
npm run dev

# Watch mode (auto compile)
npm run watch

# Run tests
npm test

Log Output

The service outputs runtime status information to stderr for debugging:

Emlog MCP server running on stdio

Test Service

The project includes a simple test script test-server.js to verify if the service is working properly:

node test-server.js

Security Considerations

  1. API Key Protection - Ensure API keys are not leaked, use environment variables for storage

  2. HTTPS Connection - Recommend using HTTPS connection to Emlog API in production

  3. Permission Control - Ensure API keys have appropriate permission scope

  4. Input Validation - All user inputs are validated and sanitized

Troubleshooting

Common Issues

  1. Connection Failure

    • Check if EMLOG_API_URL is correct

    • Confirm Emlog site is accessible

  2. Authentication Failure

    • Verify if EMLOG_API_KEY is valid

    • Check API key permissions

  3. Tool Call Failure

    • Check specific reasons in error messages

    • Confirm parameter format is correct

Project Structure

emlog-mcp/
├── src/                    # Source code directory
│   ├── index.ts           # MCP service main entry
│   └── emlog-client.ts    # Emlog API client
├── dist/                  # Compiled output directory
├── docs/                  # Documentation directory
│   └── api_doc.md        # Detailed Emlog API documentation
├── .env.example          # Environment variable example file
├── .gitignore            # Git ignore file configuration
├── claude-desktop-config.json  # Claude Desktop configuration example
├── test-server.js        # Test script
├── package.json          # Project configuration and dependencies
├── tsconfig.json         # TypeScript configuration
└── README.md             # Project documentation

Contributing

Welcome to submit Issues and Pull Requests to improve this project. Before submitting code, please ensure:

  1. Code passes TypeScript compilation checks

  2. Follows project code style

  3. Adds appropriate error handling

  4. Updates relevant documentation

License

MIT License

Available Tools

12 tools
add_commentAdd CommentC

Add a comment to an article

ParametersJSON Schema
NameRequiredDescriptionDefault
commailNoEmail of the commenter
commentYesThe comment content
comnameYesName of the commenter
comurlNoWebsite URL of the commenter
gidYesThe ID of the article to comment on
pidNoParent comment ID for replies

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 states the tool adds a comment but doesn't describe what happens after submission (e.g., comment appears publicly, requires moderation, triggers notifications). For a mutation tool with zero annotation coverage, this lack of behavioral details is a significant gap.

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, direct sentence with zero wasted words. It front-loads the core action ('Add a comment') and target ('to an article'), making it immediately scannable and efficient for an agent.

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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, error conditions, or return values. While the schema covers parameters well, the overall context for safe and effective use is lacking.

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%, with each parameter clearly documented in the schema (e.g., 'gid' as article ID, 'pid' for replies). The description adds no parameter-specific information beyond implying 'gid' is needed to target an article. This meets the baseline of 3 since the 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?

The description clearly states the action ('Add') and target ('comment to an article'), making the purpose immediately understandable. It distinguishes from siblings like 'create_article' or 'update_article' by focusing specifically on commenting functionality. However, it doesn't explicitly differentiate from potential comment-related tools like 'reply_to_comment' (though none exist in siblings), keeping it from a perfect score.

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

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., article must exist), exclusions (e.g., cannot comment on drafts), or related tools like 'get_comments' for viewing comments. Without such context, the agent must infer usage from the tool name alone.

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

create_articleCreate ArticleC

Create a new blog article

ParametersJSON Schema
NameRequiredDescriptionDefault
allow_remarkNoWhether to allow comments
contentYesThe content of the article
coverNoThe cover image URL
draftNoWhether to save as draft (y) or publish (n)
excerptNoThe excerpt/summary of the article
sort_idNoThe category ID for the article
tagsNoComma-separated tags for the article
titleYesThe title of the article
topNoWhether to pin to homepage

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 full burden for behavioral disclosure. 'Create a new blog article' implies a write/mutation operation but provides no information about permissions required, whether creation is reversible, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in behavioral transparency.

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 maximally concise with a single sentence that gets straight to the point. There's zero wasted language or unnecessary elaboration - it's front-loaded with the essential information about what the tool does.

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 9 parameters, no annotations, and no output schema, the description is inadequate. It doesn't address behavioral aspects, error conditions, return values, or how this tool relates to siblings. The combination of being a write operation with complex inputs requires more contextual information than provided.

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?

The description adds no parameter information beyond what's already in the schema (which has 100% coverage). All 9 parameters are documented in the schema with descriptions, so the baseline score of 3 is appropriate. The description doesn't provide additional context about parameter relationships, default behaviors, or usage patterns.

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 clearly states the verb ('Create') and resource ('blog article'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'create_note' or 'update_article' - it just states the basic function without clarifying what distinguishes this specific article creation tool.

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 like 'create_note' or 'update_article'. There's no mention of prerequisites, appropriate contexts, or when this specific article creation tool should be chosen over other creation/mutation tools in the sibling list.

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

create_noteCreate NoteC

Create a new micro-note

ParametersJSON Schema
NameRequiredDescriptionDefault
privateNoWhether the note is private (y) or public (n)
tYesThe content of the micro-note

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. It states 'Create a new micro-note', implying a write/mutation operation, but doesn't disclose any behavioral traits such as permissions required, whether notes are ephemeral or persistent, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 extremely concise with a single sentence ('Create a new micro-note') that directly states the purpose without any fluff. It is front-loaded and wastes no words, making it efficient for quick understanding. Every word earns its place by conveying essential action and resource information.

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 tool's mutation nature (creating a note), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like side effects, error handling, or return values, which are critical for an agent to use the tool correctly. The high schema coverage helps with parameters, but overall context for safe and effective usage is lacking.

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%, with clear descriptions for both parameters ('t' as content, 'private' with enum values). The description adds no parameter semantics beyond what the schema provides, as it doesn't mention parameters at all. Given high schema coverage, the baseline score of 3 is appropriate, as the schema adequately documents parameters without needing description supplementation.

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 clearly states the action ('Create') and resource ('new micro-note'), making the purpose immediately understandable. It distinguishes from siblings like 'add_comment' or 'create_article' by specifying 'micro-note' as the resource type. However, it doesn't explicitly differentiate from 'create_article' beyond the resource name, missing a clear distinction in scope or format.

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 when to choose 'create_note' over 'create_article' or 'add_comment', nor does it specify prerequisites, contexts, or exclusions for usage. This leaves the agent without explicit direction for tool selection among siblings.

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

get_articleGet ArticleC

Get a specific article by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the article to retrieve
passwordNoPassword for protected articles

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 full burden for behavioral disclosure. It states the tool retrieves an article but doesn't describe what happens if the ID is invalid, whether it returns full or partial content, if authentication is needed, or error handling. This leaves significant gaps in understanding the tool's behavior beyond basic retrieval.

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 extremely concise with a single sentence that directly states the tool's purpose. It's front-loaded with the core action and contains no unnecessary words or redundant information, making it highly efficient for quick understanding.

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 lack of annotations and output schema, the description is incomplete for a retrieval tool. It doesn't explain what is returned (e.g., article content, metadata), error conditions, or authentication needs. For a tool with 2 parameters and no structured behavioral hints, more context is needed to fully understand its operation.

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 fully documents both parameters ('id' and 'password'). The description adds no additional meaning beyond what's in the schema, such as explaining ID formats or when the password is required. This meets the baseline score of 3 since the schema handles parameter documentation adequately.

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 clearly states the action ('Get') and resource ('a specific article by ID'), making the purpose immediately understandable. It distinguishes from siblings like 'search_articles' by focusing on retrieval of a single item rather than searching multiple. However, it doesn't explicitly contrast with other read operations like 'get_draft_detail' or 'get_comments', which slightly limits differentiation.

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 when to choose 'get_article' over 'search_articles' for finding articles, or when to use it versus 'get_draft_detail' for draft content. There are also no prerequisites or exclusions stated, such as requiring authentication or article visibility.

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

get_commentsGet CommentsC

Get comments for an article (with pagination support)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the article
pageNoPage number for paginated comments (requires backend pagination enabled)

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. It mentions 'pagination support', which adds some context about handling large datasets, but fails to cover critical aspects like whether this is a read-only operation, potential rate limits, authentication requirements, error conditions, or what the return format looks like (e.g., structure of comments).

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 extremely concise and front-loaded, consisting of a single sentence that directly states the tool's function and key feature (pagination). There is no wasted text, making it efficient for an agent to parse.

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 tool that retrieves data with pagination, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., safety, performance), output structure, and usage context, leaving significant gaps for an agent to operate effectively.

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?

The input schema has 100% description coverage, clearly documenting both parameters ('id' and 'page'). The description adds minimal value by implying the tool fetches comments for an article and supports pagination, but doesn't provide additional semantics beyond what the schema already states, such as pagination behavior details or format constraints.

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 clearly states the tool's purpose with a specific verb ('Get') and resource ('comments for an article'), distinguishing it from siblings like 'get_article' or 'add_comment'. However, it doesn't explicitly differentiate from potential similar tools beyond the sibling list provided, such as if there were a 'get_all_comments' tool.

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 mentions pagination support but doesn't specify when pagination is needed or how it relates to other tools like 'get_article' or 'search_articles', leaving the agent to infer usage context.

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

get_draft_detailGet Draft DetailC

Get details of a specific draft

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the draft to retrieve

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. It only states it retrieves details without mentioning whether this is a read-only operation, if it requires authentication, what happens if the draft doesn't exist, or the format of the returned details. This leaves significant gaps for a tool that fetches data.

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, straightforward sentence with no wasted words. It's front-loaded and efficiently conveys the core action, making it easy to parse quickly.

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 fetching specific data, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral aspects like error handling, return format, or authentication needs, which are crucial for proper tool invocation in this context.

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?

The description doesn't add meaning beyond the input schema, which has 100% coverage and clearly documents the 'id' parameter as 'The ID of the draft to retrieve'. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 clearly states the verb ('Get') and resource ('details of a specific draft'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_draft_list' or 'get_article', which would require more specificity about what 'details' entail.

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 is provided on when to use this tool versus alternatives. For example, it doesn't explain when to use 'get_draft_detail' versus 'get_draft_list' or 'get_article', nor does it mention prerequisites like needing a draft ID.

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

get_draft_listGet Draft ListC

Get list of draft articles

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of drafts to retrieve

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose permissions, rate limits, pagination, sorting, or return format (e.g., list structure). This is inadequate for a tool with potential complexity in list retrieval.

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, efficient sentence with zero waste. It is front-loaded and appropriately sized for a simple tool, earning full marks for conciseness.

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 no annotations and no output schema, the description is incomplete. It lacks details on behavior, return values, and usage context, which are essential for an agent to effectively use this tool in a system with multiple article-related siblings.

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 fully documents the 'count' parameter. The description adds no parameter semantics beyond what the schema provides, meeting the baseline of 3 for high coverage without extra value.

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 clearly states the verb 'Get' and the resource 'list of draft articles', making the purpose understandable. It distinguishes from siblings like 'get_draft_detail' (specific draft) and 'get_article' (published articles), but could be more specific about scope (e.g., all drafts vs filtered).

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 is provided on when to use this tool versus alternatives like 'search_articles' (which might filter drafts) or 'get_draft_detail' (for a single draft). The description implies usage for retrieving drafts but lacks explicit context or exclusions.

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

get_user_infoGet User InfoB

Get current user information

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 burden of behavioral disclosure. It states 'Get current user information' but doesn't clarify what 'current' means (e.g., logged-in user, default user), whether it's a read-only operation, what permissions are required, or the format of returned data. This leaves significant gaps in understanding the tool's behavior beyond basic purpose.

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 extremely concise with a single sentence ('Get current user information'), which is front-loaded and wastes no words. For a simple tool with no parameters, this brevity is effective and appropriate, making it easy to parse quickly.

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 tool's simplicity (0 params, no output schema, no annotations), the description is minimal but incomplete. It lacks details on behavioral aspects like authentication needs, data format, or error handling. While the schema handles inputs, the description should provide more context for a tool that retrieves user information, especially without annotations to fill in gaps.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, which is appropriate here. Baseline is 4 for 0 params, as the schema fully covers the absence of inputs, and the description doesn't need to compensate for any gaps.

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 clearly states the action ('Get') and resource ('current user information'), making the tool's purpose understandable. However, it doesn't differentiate from potential sibling tools that might also retrieve user information (though none are listed in siblings), so it's not fully specific. The verb+resource combination is straightforward but lacks nuance about what 'information' entails.

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, context for 'current user' (e.g., authentication needed), or compare it to other tools like 'get_article' or 'get_comments'. Without such guidance, an agent might struggle to select this tool appropriately in scenarios involving user data retrieval.

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

like_articleLike ArticleC

Like an article

ParametersJSON Schema
NameRequiredDescriptionDefault
avatarNoAvatar URL of the person liking
gidYesThe ID of the article to like
nameNoName of the person liking

TDQS

C2/5.0
Behavior1/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 but fails to do so. It doesn't reveal if this is a read-only or mutative operation, what permissions are required, potential side effects, or response format, leaving critical behavioral traits unspecified.

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 extremely concise with a single sentence, 'Like an article,' which is front-loaded and wastes no words. While it lacks substance, it earns full marks for brevity and structure, as every word serves the minimal purpose stated.

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

Completeness1/5

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

Given the complexity of a mutative tool with no annotations and no output schema, the description is completely inadequate. It fails to explain what 'liking' entails, the expected outcome, or how it integrates with sibling tools, leaving significant gaps in understanding the tool's role and 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?

The input schema has 100% description coverage, documenting all three parameters clearly, so the description doesn't need to add parameter details. However, it also doesn't provide any additional context or meaning beyond the schema, such as explaining the relationship between parameters, resulting in a baseline score.

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

Purpose2/5

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

The description 'Like an article' is a tautology that merely restates the tool name and title without adding specificity. It doesn't distinguish this tool from sibling tools like 'add_comment' or 'update_article' in terms of action or resource, leaving the purpose vague beyond the basic verb-noun pairing.

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

Usage Guidelines1/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, context, or exclusions, such as whether it's for authenticated users only or how it differs from related actions like commenting or updating articles, making it misleadingly simplistic.

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

search_articlesSearch ArticlesC

Search articles by keyword, tag, or category

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of articles per page
keywordNoSearch keyword for article titles
orderNoSort order: views (by view count) or comnum (by comment count)
pageNoPage number (default: 1)
sort_idNoFilter by category ID
tagNoFilter by tag

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 full burden for behavioral disclosure. It mentions the search functionality but doesn't describe pagination behavior (implied by 'page' parameter), rate limits, authentication requirements, or what the response format looks like (no output schema exists). This leaves significant gaps for a search 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 extremely concise - a single sentence that efficiently communicates the core functionality. There's no wasted language, and it's appropriately front-loaded with the essential information about what the tool does.

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 search tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the search behavior (AND/OR logic), result format, pagination details, or error conditions. The agent would need to infer too much from just the parameter descriptions.

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 6 parameters thoroughly. The description mentions keyword, tag, and category filtering but doesn't add meaningful semantic context beyond what the schema provides about these parameters. 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?

The description clearly states the tool's purpose as searching articles using specific criteria (keyword, tag, or category). It uses a specific verb ('Search') and identifies the resource ('articles'), but doesn't explicitly differentiate from sibling tools like 'get_article' which retrieves a single article rather than searching multiple.

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 sibling tools like 'get_article' for retrieving specific articles or 'get_draft_list' for draft articles, nor does it specify prerequisites or contextual constraints for searching.

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

update_articleUpdate ArticleB

Update an existing blog article. If the article is currently a draft and no draft parameter is specified, it will remain as a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoThe new content of the article
coverNoThe new cover image URL
draftNoWhether to save as draft (y) or publish (n). If not specified and the article is currently a draft, it will remain as a draft.
excerptNoThe new excerpt/summary
idYesThe ID of the article to update
sort_idNoThe new category ID
tagsNoNew comma-separated tags
titleYesThe new title of the article

TDQS

B3.2/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. It mentions the draft behavior, which is valuable context about how the tool handles state transitions. However, it doesn't disclose other important behavioral traits like whether this requires authentication, what permissions are needed, whether updates are reversible, rate limits, or what happens to unspecified fields (partial vs. full updates). For a mutation tool with zero annotation coverage, this leaves 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.

Conciseness4/5

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

The description is appropriately sized with two clear sentences. The first sentence states the core purpose, and the second adds important behavioral context about draft handling. There's no wasted language, and the information is front-loaded with the essential action 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 mutation tool with no annotations and no output schema, the description provides basic purpose and some behavioral context (draft handling), but it's incomplete. It doesn't cover authentication needs, error conditions, response format, or how partial updates work. Given the complexity of updating an article with 8 parameters, more contextual information would be helpful for the agent to use this tool effectively.

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 8 parameters thoroughly with descriptions, types, and constraints. The description doesn't add any parameter-specific information beyond what's in the schema. According to the rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

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 clearly states the action ('Update') and resource ('existing blog article'), making the purpose immediately understandable. It distinguishes from siblings like 'create_article' by specifying it updates existing articles rather than creating new ones. However, it doesn't explicitly differentiate from other update-related tools that might exist in the broader context.

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 description provides implied guidance about draft behavior ('If the article is currently a draft and no draft parameter is specified, it will remain as a draft'), which helps understand when to use this tool versus alternatives for publishing. However, it doesn't explicitly state when to use this tool versus other siblings like 'create_article' or provide clear exclusions or prerequisites for usage.

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

upload_fileUpload FileC

Upload a file (image, document, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesLocal path to the file to upload
sidNoResource category ID

TDQS

C2.7/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 states the action ('upload') but doesn't describe traits like required permissions, file size limits, supported formats beyond vague examples, error handling, or what happens after upload (e.g., returns a URL or ID). This leaves significant gaps 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, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to scan. Every word contributes to conveying the basic purpose without unnecessary elaboration.

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 file upload tool (a mutation with no annotations and no output schema), the description is incomplete. It lacks details on behavioral traits, usage context, and output expectations, leaving the agent with insufficient information to invoke it correctly beyond the basic schema.

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?

The schema description coverage is 100%, with clear descriptions for both parameters ('file_path' and 'sid'). The description adds no meaning beyond this, as it doesn't explain parameter interactions, the purpose of 'sid', or file path constraints. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose3/5

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

The description states the verb ('upload') and resource ('a file'), but it's vague about what types of files are supported ('image, document, etc.') and doesn't distinguish this tool from potential siblings like 'create_article' or 'create_note', which might also involve file uploads. It provides a basic purpose but lacks specificity.

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 is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this is for standalone file uploads versus attachments in other tools like 'create_article', or mention prerequisites like authentication. The description offers no context for usage decisions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv1.0.0
    • First observedadd_comment
    • First observedcreate_article
    • First observedcreate_note
    • First observedget_article
    • First observedget_comments
    • First observedget_draft_detail
    • First observedget_draft_list
    • First observedget_user_info
    • First observedlike_article
    • First observedsearch_articles
    • First observedupdate_article
    • First observedupload_file

TDQS

B3.1/5.0
Disambiguation4/5

Most tools have clearly distinct purposes targeting specific resources like articles, comments, drafts, and files, with minimal overlap. However, 'create_article' and 'create_note' might cause slight confusion if notes are a type of article, but their descriptions help differentiate them as separate entities.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (e.g., add_comment, create_article, get_draft_list), using snake_case throughout. This predictability makes it easy for agents to understand and select tools based on their actions and targets.

Tool Count5/5

With 12 tools, this server is well-scoped for a blog management system, covering core operations like article CRUD, commenting, drafts, and file uploads. Each tool serves a distinct function without unnecessary bloat, fitting typical workflows for content creation and management.

Completeness4/5

The toolset provides strong coverage for blog management, including CRUD for articles, comments, drafts, and user info, with search and like functionality. Minor gaps include no update/delete for comments or notes, and no direct management of tags/categories, but agents can work around these with available tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Halo blog systems through natural language, supporting article creation/editing/publishing, categories, tags, attachments, and includes 10 AI writing prompts for content optimization and SEO.
    18
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to automate Google Blogger content management by providing tools for single and batch post creation via the Blogger API. It supports secure OAuth2 authentication and allows for seamless blog integration through the Model Context Protocol.
    -
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI clients to manage Hexo blogs by providing tools for article CRUD operations, local previewing, and GitHub Pages deployment. It also supports site configuration access and automated Git backups to streamline the entire blogging workflow.
    12
    1
    -

Latest Blog Posts

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/eraincc/emlog-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server