1. Conduid
  2. Developer Tools
  3. Perl SDK
MCP server · Developer Tools

Perl SDK

Perl SDK for Model Context Protocol servers and clients

Unclaimed MIT devtools
64Good

Scored 11 days ago · breakdown

About Perl SDK

Perl SDK is an MCP server published by mojolicious in the Developer Tools category: perl SDK for Model Context Protocol servers and clients.

The repository has 21 stars and 6 forks, with the last commit 2 months ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/mojolicious/mojo-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Perl SDK

Powered by Claude · Grounded in docs

I know everything about Perl SDK. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 4 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
  • !Dependencies pinnedNo lockfile. Installs can pull different code over time.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

1 check has not been run yet.

Releases

v0.15v0.15
v0.13v0.13
v0.12v0.12
v0.11v0.11
v0.10v0.10

README

MCP Perl SDK

Model Context Protocol support for Perl and the Mojolicious real-time web framework.

Features

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. The protocol revision currently implemented is 2026-07-28.

  • Tool calling, prompts and resources
  • Streamable HTTP and Stdio transports
  • Stateless protocol, with no handshake and no session to keep alive
  • Routing header validation, so gateways and servers can never disagree about what was called
  • JSON Schema 2020-12 validation of tool arguments
  • Progress and log notifications on the response stream of the request they belong to
  • Cancellation as a first-class signal, so long-running tools can stop early
  • Multi-round tool requests with integrity-protected request state
  • Cache hints for discovery, list and read results
  • Notifications for list changes (tools, prompts, resources)
  • OAuth scopes for tools, prompts and resources
  • Scalable with pre-forking web server and async tools using promises
  • HTTP client for testing
  • Can be embedded in Mojolicious web apps

Not supported yet: pagination, resource templates, completion, tasks, MCP Apps, and resource subscriptions. The roots, sampling and logging client features are deprecated in this revision and are not implemented. New OAuth clients should use client ID metadata documents, since dynamic client registration is deprecated as well.

Installation

All you need is Perl 5.20 or newer. Just install from CPAN.

$ cpanm -n MCP

We recommend the use of a Perlbrew environment.

Then follow the tutorial, which builds a real server one feature at a time.

Streamable HTTP Transport

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.

Notifications

Notifications that belong to a request, such as progress reports, are delivered on the response stream of that very request, which is upgraded from a plain JSON response to SSE whenever there is something to deliver. No extra configuration is required, and it works under a pre-forking web server.

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_progress(1, 2, "Echoing: $args->{msg}");
    return "Echo: $args->{msg}";
  }
);

any '/mcp' => $server->to_action;

app->start;

Notifications that do not belong to a request, such as list_changed, need a long-lived stream, which clients open with a subscriptions/listen request. That does require per-process state and is not compatible with pre-forking web servers, so it is opt-in with streaming.

any '/mcp' => $server->to_action({streaming => 1});

Stdio Transport

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. Every request has to declare the protocol version it is made with and the capabilities of the client making it.

$ perl examples/echo_stdio.pl
{"jsonrpc":"2.0","id":"1","method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}
{"jsonrpc":"2.0","id":"2","method":"tools/call","params":{"name":"echo","arguments":{"msg":"hello perl"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}

README fetched from the repository 4 days ago. The original is authoritative.

Questions

About Perl SDK

How do I install Perl SDK?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Perl SDK safe to use with an AI agent?

Its trust score is 64 out of 100 (good). It passes 2 of the 5 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Perl SDK still maintained?

Yes — the last commit was 2 months ago. The repository has 21 stars and 6 forks and 3 open issues.