Skip to content

feat: add MCP server module to expose catalog/scorecard/actions to AI agents #76

@cschanhniem

Description

@cschanhniem

The project README describes idp-core as "instantly accessible to AI Agents via MCP" — but I couldn't find any MCP server implementation in the codebase. The src/ tree under com/decathlon/idp_core/ has no mcp package.

Why this matters: The Model Context Protocol (MCP) lets AI coding assistants (Claude Code, Copilot, Cursor, etc.) query and interact with tools directly. For an IDP backend, this means an AI assistant could:

  • Query the software catalog for service ownership and dependencies
  • Look up scorecards to check engineering excellence standards
  • Trigger self-service actions (e.g., provision a new service) from a chat prompt
  • Search entities with the existing filter/search DSL

What already exists that an MCP module could expose:

Feature Existing code MCP tool idea
Entity catalog EntityService, EntityController catalog_search, catalog_get_entity
Scorecards docs/src/features/scorecards.md scorecard_get, scorecard_list
Self-service actions docs/src/features/self-service-actions.md actions_trigger, actions_list
Entity templates EntityTemplateService, EntityTemplateController template_list, template_get

Suggested approach:

  • Create a new infrastructure/adapters/mcp/ package (following the existing hexagonal architecture pattern in infrastructure/adapters/api/)
  • Implement a Spring Boot MCP server using the spring-ai-mcp-server SDK or the official MCP Java SDK
  • Expose read-only tools first (catalog search, scorecard lookup) — safe to deploy alongside existing REST API
  • Add integration tests following the pattern in src/test/java/com/decathlon/idp_core/AbstractIntegrationTest.java

Evidence: The hexagonal architecture is already in place — REST controllers live under infrastructure/adapters/api/controller/, so an MCP adapter under infrastructure/adapters/mcp/ follows the same pattern exactly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions