Skip to main content
Glama

AEM MCP Server

A Model Context Protocol (MCP) server for Adobe Experience Manager (AEM) local instance management. This server provides tools to interact with AEM instances, manage packages, check status, and perform common development tasks.

Features

The AEM MCP server provides the following tools:

1. aem_status

Check the status of an AEM instance including version, bundle count, and overall health.

Parameters:

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

2. aem_install_package

Install a package (.zip file) in AEM.

Parameters:

  • packagePath (required): Path to the package file (.zip)

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

  • force (optional): Force installation (default: false)

3. aem_list_packages

List all installed packages in AEM.

Parameters:

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

4. aem_create_page

Create a new page in AEM.

Parameters:

  • parentPath (required): Parent path where to create the page

  • pageName (required): Name of the new page

  • pageTitle (required): Title of the new page

  • template (required): Template path for the page

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

5. aem_replicate_content

Replicate content to publish instance (activate/deactivate).

Parameters:

  • path (required): Content path to replicate

  • action (optional): Replication action - 'activate' or 'deactivate' (default: activate)

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

6. aem_query_content

Query content using JCR-SQL2 or XPath.

Parameters:

  • query (required): Query string (JCR-SQL2 or XPath)

  • type (optional): Query type - 'JCR-SQL2' or 'xpath' (default: JCR-SQL2)

  • limit (optional): Maximum number of results (default: 20)

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

7. aem_bundle_status

Check OSGi bundle status.

Parameters:

  • bundleId (optional): Specific bundle ID or symbolic name

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

8. aem_clear_cache

Clear various AEM caches.

Parameters:

  • cacheType (optional): Type of cache to clear - 'dispatcher', 'clientlibs', or 'all' (default: all)

  • host (optional): AEM host (default: localhost)

  • port (optional): AEM port (default: 4502)

  • username (optional): AEM username (default: admin)

  • password (optional): AEM password (default: admin)

Related MCP server: Expo MCP Server

Installation

  1. Clone or download this repository

  2. Install dependencies:

    npm install
  3. Build the project:

    npm run build

Usage

Running the Server

npm start

Development Mode

npm run dev

Configuration

The server uses default AEM credentials (admin/admin) and connects to localhost:4502 by default. You can override these settings by providing different parameters when calling the tools.

Example Usage

Once the MCP server is configured and running, you can use the tools through your MCP client:

  • Check AEM status: aem_status

  • Install a package: aem_install_package with packagePath: "/path/to/package.zip"

  • Create a page: aem_create_page with required parameters

  • Query content: aem_query_content with query: "SELECT * FROM [cq:Page]"

Requirements

  • Node.js 18+

  • TypeScript

  • Running AEM instance (local or remote)

  • Appropriate AEM credentials

License

MIT License

Available Tools

8 tools
aem_bundle_statusC

Check OSGi bundle status

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdNoSpecific bundle ID or symbolic name (optional)
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin

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 full burden. It states 'Check' which implies a read-only operation, but doesn't disclose behavioral traits like authentication needs (implied by parameters but not described), rate limits, error handling, or what specific status information is returned. This is inadequate for a tool with connection parameters.

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 appropriately sized and front-loaded, directly stating the tool's 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 tool's complexity (involving AEM connectivity and OSGi bundle checks), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'status' entails, return formats, or error scenarios, leaving significant gaps for an AI agent to use it 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 fully documents all 5 parameters. The description adds no additional meaning beyond the schema, such as explaining the bundleId's optional nature or the implications of default credentials. Baseline 3 is appropriate when 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 verb ('Check') and resource ('OSGi bundle status'), providing a specific purpose. However, it doesn't differentiate from sibling tools like 'aem_status' which might also provide status information, so it doesn't reach the highest 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 like 'aem_status' or other AEM monitoring tools. There's no mention of prerequisites, timing, or comparative context with siblings, leaving usage decisions ambiguous.

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

aem_clear_cacheC

Clear various AEM caches

ParametersJSON Schema
NameRequiredDescriptionDefault
cacheTypeNoType of cache to clearall
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin

TDQS

C2.6/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 disclosing behavioral traits. It doesn't mention authentication needs (implied by username/password params), potential destructive effects, rate limits, or response format, leaving critical operational context unspecified.

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, efficient sentence with no wasted words, making it front-loaded and easy to parse. However, it could be more structured by explicitly listing cache types or adding brief context.

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 tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover authentication, side effects, or return values, failing to compensate for the lack of structured data, which is inadequate given the tool's complexity.

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 all 5 parameters. The description adds no meaning beyond the schema, as it doesn't explain parameter interactions or provide additional context, meeting the baseline for high schema coverage.

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 'Clear various AEM caches' states the action (clear) and resource (AEM caches), but it's vague about scope and doesn't differentiate from siblings like aem_replicate_content or aem_status. It lacks specificity about what 'various' entails compared to the cacheType parameter options.

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. It doesn't mention prerequisites, timing, or sibling tools, leaving the agent to infer usage from context alone without explicit direction.

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

aem_create_pageC

Create a new page in AEM

ParametersJSON Schema
NameRequiredDescriptionDefault
parentPathYesParent path where to create the page
pageNameYesName of the new page
pageTitleYesTitle of the new page
templateYesTemplate path for the page
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin

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 full burden for behavioral disclosure. While 'Create' implies a write/mutation operation, it doesn't specify permissions required, whether the operation is idempotent, what happens on conflicts (e.g., duplicate page names), or error conditions. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and efficient. Every word earns its place without redundancy or 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?

For a mutation tool with 8 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address what the tool returns (success/failure indicators, created page details), error handling, authentication implications (despite auth parameters in schema), or how it fits within the broader AEM content lifecycle alongside siblings like replication or package installation.

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 all 8 parameters well-documented in the schema itself. The description adds no additional parameter semantics beyond what's already in the schema (e.g., no examples, format clarifications, or relationship explanations). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance but also doesn't detract from parameter understanding.

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 page in AEM'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential sibling tools like 'aem_replicate_content' or 'aem_install_package' that might also involve content creation or management, leaving some ambiguity about its specific role within the toolset.

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. With siblings like 'aem_query_content' for reading and 'aem_replicate_content' for publishing, there's no indication that this is specifically for initial page creation versus other content operations. No prerequisites, exclusions, or contextual usage hints are mentioned.

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

aem_install_packageC

Install a package in AEM

ParametersJSON Schema
NameRequiredDescriptionDefault
packagePathYesPath to the package file (.zip)
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin
forceNoForce installation (default: false)

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 'Install' which implies a write/mutation operation, but doesn't cover critical aspects like required permissions (beyond default credentials in schema), potential system impacts (e.g., downtime, cache invalidation), error handling, or what 'force' installation entails. This leaves significant gaps for a tool that modifies AEM state.

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 at just 4 words ('Install a package in AEM'), making it front-loaded and efficient. Every word contributes directly to the core purpose without any wasted language, though this brevity comes at the cost of completeness in other dimensions.

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 tool with 6 parameters, no annotations, and no output schema that performs a potentially destructive installation operation in AEM, the description is inadequate. It lacks information about what installation entails, success/failure indicators, system requirements, or relationships to sibling tools. The high parameter count and mutation nature demand more comprehensive documentation 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?

Schema description coverage is 100%, providing clear documentation for all 6 parameters including defaults. The description adds no additional parameter semantics beyond what's in the schema, such as explaining package file format constraints or the implications of the 'force' option. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding.

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 ('Install') and target resource ('a package in AEM'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'aem_list_packages' or 'aem_create_page', which would require more specific language about what installation entails versus listing or creating.

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., needing an existing package file), exclusions (e.g., not for updating packages), or refer to sibling tools like 'aem_list_packages' for checking installed packages first, leaving usage context unclear.

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

aem_list_packagesB

List installed packages in AEM

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin

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 it's a list operation, implying read-only behavior, but doesn't mention any side effects, authentication requirements beyond what's in the schema, rate limits, or output format. For a tool with 4 parameters and no annotations, this leaves significant gaps in understanding its 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?

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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?

Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is minimal but covers the basic purpose. However, it lacks details on behavioral traits, usage context, and output expectations, making it incomplete for fully informed tool selection. It meets the minimum viable standard but has 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?

The input schema has 100% description coverage, clearly documenting all 4 parameters with defaults and purposes. The description doesn't add any additional meaning beyond what the schema provides, such as explaining how parameters interact or providing usage examples. 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.

Purpose4/5

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

The description clearly states the action ('List') and resource ('installed packages in AEM'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'aem_query_content' or 'aem_status' that might also involve listing or checking AEM components, so it doesn't reach the highest 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. There are sibling tools like 'aem_install_package' or 'aem_query_content' that might be relevant for related tasks, but the description doesn't mention any context, prerequisites, or exclusions for usage.

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

aem_query_contentC

Query content using JCR-SQL2 or XPath

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesQuery string (JCR-SQL2 or XPath)
typeNoQuery typeJCR-SQL2
limitNoMaximum number of results (default: 20)
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin

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 querying content but doesn't specify whether this is a read-only operation, potential side effects, authentication requirements beyond parameters, rate limits, or error handling. For a tool with 7 parameters including credentials, this lack of context 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, efficient sentence with zero waste. It's front-loaded with the core purpose and specifies the query languages without unnecessary details, 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 (7 parameters including authentication, no output schema, and no annotations), the description is incomplete. It doesn't explain return values, error conditions, or behavioral traits like safety and side effects, leaving the agent with insufficient context for effective use.

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 all parameters. The description adds no additional parameter semantics beyond implying query execution, which is already covered by the schema's descriptions for 'query' and 'type'. Baseline 3 is appropriate as 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 ('Query content') and specifies the query languages supported ('using JCR-SQL2 or XPath'), which distinguishes it from siblings like aem_create_page or aem_install_package. However, it doesn't explicitly differentiate from aem_list_packages or aem_replicate_content in terms of content querying vs. other operations.

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. It doesn't mention prerequisites (e.g., needing AEM access), specific use cases, or comparisons to siblings like aem_list_packages for package queries. The description only states what it does, not when to choose it.

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

aem_replicate_contentC

Replicate content to publish instance

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesContent path to replicate
actionNoReplication action (activate/deactivate)activate
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin

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 but only states the basic action without behavioral details. It doesn't disclose if this is a destructive operation, what permissions are needed, rate limits, or what happens on the publish instance, which is critical for a replication 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 parse quickly, which is ideal 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 the complexity of a replication tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits, error handling, or return values, which are essential for safe and effective use in an AEM 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?

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no additional meaning beyond the schema, such as explaining the 'activate/deactivate' actions in context or the significance of the path parameter, meeting the baseline for high coverage.

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 ('replicate') and resource ('content to publish instance'), making the purpose understandable. However, it doesn't differentiate from sibling tools like aem_install_package or aem_create_page, which also involve content operations, so it's not fully distinctive.

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, timing, or compare to siblings like aem_clear_cache or aem_query_content, leaving the agent to guess based on context alone.

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

aem_statusC

Check the status of AEM instance

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoAEM host (default: localhost)localhost
portNoAEM port (default: 4502)
usernameNoAEM username (default: admin)admin
passwordNoAEM password (default: admin)admin

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 it 'checks' status, implying a read-only operation, but doesn't specify what 'status' includes (e.g., health, uptime, metrics), whether it requires authentication (though parameters suggest it might), or any side effects like network calls. This leaves significant gaps for a tool with authentication parameters.

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, clear sentence with no wasted words. It's front-loaded with the core purpose and appropriately sized for a simple status-checking tool, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given no annotations, no output schema, and authentication parameters, the description is incomplete. It doesn't explain what 'status' entails (e.g., returns health indicators, error details), how authentication affects the check, or potential failure modes. For a tool that likely interacts with a remote system, more context is needed.

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 all parameters well-documented in the schema itself (host, port, username, password with defaults). The description adds no additional parameter semantics beyond implying these might be needed for checking status, so it meets the baseline for high schema coverage without adding 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 action ('Check') and resource ('status of AEM instance'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'aem_bundle_status' which might check a more specific aspect of AEM status, so it doesn't reach the highest 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 like 'aem_bundle_status' or other AEM monitoring tools. It lacks any context about prerequisites, timing, or exclusions, leaving the agent to 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.

Tool Schema Changelog

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

  1. 8 tool updates
    • First observedaem_bundle_status
    • First observedaem_clear_cache
    • First observedaem_create_page
    • First observedaem_install_package
    • First observedaem_list_packages
    • First observedaem_query_content
    • First observedaem_replicate_content
    • First observedaem_status

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific AEM operations: bundle status, cache clearing, page creation, package installation, package listing, content querying, content replication, and instance status. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency5/5

All tools follow a consistent 'aem_verb_noun' pattern with snake_case throughout, such as aem_clear_cache and aem_create_page. This predictable naming scheme enhances readability and reduces cognitive load for agents.

Tool Count5/5

With 8 tools, the server is well-scoped for AEM administration tasks, covering key operations like instance management, content handling, and package control. Each tool earns its place without being overwhelming or insufficient for the domain.

Completeness4/5

The toolset provides strong coverage for core AEM workflows, including instance status, content creation/querying/replication, and package management. Minor gaps exist, such as the lack of tools for updating or deleting pages/packages, but agents can likely work around these with existing 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
    B
    quality
    F
    maintenance
    A Model Context Protocol server that provides tools for code modification and generation via Large Language Models, allowing users to create, modify, rewrite, and delete files using structured XML instructions.
    12
    2
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides development and debugging tools for Expo-based React Native applications, enabling developers to manage Expo servers, capture logs, and manipulate project files.
    5
    1
    -
  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol server that provides tooling support for Ember.js development, allowing developers to execute CLI commands, run codemods, access documentation, and discover community resources.
    7
    420
    27
    MIT

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/pradeep-moolemane/aem-mcp'

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