NAME

MCP::Server::KnowledgeStore::Tools - Discovers and assembles the installed MCP::Server::KnowledgeStore::Tools::* plugins

VERSION

version 0.001

SYNOPSIS

use MCP::Server::KnowledgeStore::Store;
use MCP::Server::KnowledgeStore::Tools;

my $store  = MCP::Server::KnowledgeStore::Store->new(pg => $dsn);
my $server = MCP::Server::KnowledgeStore::Tools->build($store);
$server->to_stdio;

DESCRIPTION

Assembles an MCP::Server (specifically MCP::Server::KnowledgeStore::ResourceTemplates, which extends MCP::Server with resource template support) from whichever MCP::Server::KnowledgeStore::Tools::* plugin distributions happen to be installed - ::Memory, ::Skill, ::Spec, ::Agent and so on each live in their own repository and release independently of this one and of each other. This module itself only registers the one cross-cutting tool, list_projects, that no single plugin owns.

Resource templates provide addressable reads via URIs as an alternative to get_* tools. For example, memory://memories/my-memory or memory://memories/my-memory/revisions/1.

A plugin is any package under the MCP::Server::KnowledgeStore::Tools:: namespace implementing:

sub register ($class, $server, $store) { ... }

which adds its own tools to $server via $server->tool(...) and resource templates via $server->add_template(...), using $store (a MCP::Server::KnowledgeStore::Store) for persistence. MCP::Server::KnowledgeStore::Tools::Support provides the schema fragments and helpers most plugins need, and MCP::Server::KnowledgeStore::Tools::Revisioned provides the whole tool set for a revisioned/taggable resource in one call - both are excluded from discovery, since neither is a plugin itself.

METHODS

build

my $server = MCP::Server::KnowledgeStore::Tools->build($store);

Returns an MCP::Server with list_projects plus everything every installed plugin registers.

plugins

my @plugin_classes = MCP::Server::KnowledgeStore::Tools->plugins;

The installed, loaded plugin classes, discovered via Module::Pluggable::Object.

AUTHOR

Wesley Schwengle <waterkip@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2026 by Wesley Schwengle.

This is free software, licensed under:

The (three-clause) BSD License