loading…
Search for a command to run...
loading…
An SDK for building MCP servers and clients with the Perl programming language.
An SDK for building MCP servers and clients with the Perl programming language.
Model Context Protocol support for Perl and the Mojolicious real-time web framework.
Please be aware that this module is still in development and will be changing rapidly. Additionally the MCP specification is getting regular updates which we will implement. Breaking changes are very likely.
All you need is Perl 5.20 or newer. Just install from CPAN.
$ cpanm -n MCP
We recommend the use of a Perlbrew environment.
Use the to_action method to add an MCP endpoint to any Mojolicious application.
use Mojolicious::Lite -signatures;
use MCP::Server;
my $server = MCP::Server->new;
$server->tool(
name => 'echo',
description => 'Echo the input text',
input_schema => {type => 'object', properties => {msg => {type => 'string'}}, required => ['msg']},
code => sub ($tool, $args) {
return "Echo: $args->{msg}";
}
);
any '/mcp' => $server->to_action;
app->start;
Authentication can be added by the web application, just like for any other route. OAuth scopes can be enforced per tool, prompt and resource.
The HTTP transport can optionally accept GET requests to open a long-lived SSE stream the server can push
notifications to, and DELETE requests to terminate a session. This requires per-process state and is not
compatible with pre-forking web servers, so it is opt-in.
use Mojolicious::Lite -signatures;
use MCP::Server;
my $server = MCP::Server->new;
$server->tool(
name => 'echo',
description => 'Echo the input text',
input_schema => {type => 'object', properties => {msg => {type => 'string'}}, required => ['msg']},
code => sub ($tool, $args) {
$tool->context->notify('notifications/message', {level => 'info', data => "Echoing: $args->{msg}"});
return "Echo: $args->{msg}";
}
);
any '/mcp' => $server->to_action({streaming => 1});
app->start;
Build local command line applications and use the stdio transport for testing with the to_stdio method.
use Mojo::Base -strict, -signatures;
use MCP::Server;
my $server = MCP::Server->new;
$server->tool(
name => 'echo',
description => 'Echo the input text',
input_schema => {type => 'object', properties => {msg => {type => 'string'}}, required => ['msg']},
code => sub ($tool, $args) {
return "Echo: $args->{msg}";
}
);
$server->to_stdio;
Just run the script and type requests on the command line.
$ perl examples/echo_stdio.pl
{"jsonrpc":"2.0","id":"1","method":"tools/list"}
{"jsonrpc":"2.0","id":"2","method":"tools/call","params":{"name":"echo","arguments":{"msg":"hello perl"}}}
Run in your terminal:
claude mcp add perl-sdk -- npx Yes, Perl SDK MCP is free — one-click install via Unyly at no cost.
No, Perl SDK runs without API keys or environment variables.
Self-hosted: the server runs locally on your machine via the install command above.
Open Perl SDK on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
pro tip
Just installed Perl SDK? Say to Claude: "remember why I installed Perl SDKand what I want to try" — it'll save into your Vault.
CSA PROJECT - FZCO © 2026 IFZA Business Park, DDP, Premises Number 31174 - 001
Security
Low riskAutomated heuristic from public metadata — not a security guarantee.