mojo-mcp
mojo-mcpは、Perl用のModel Context Protocol(MCP)SDKであり、Mojoliciousフレームワークと統合してリアルタイムWebアプリケーションを構築するための機能を提供します。開発中のモジュールであり、HTTPトランスポートやツール呼び出し機能を備えています。
GitHubスター
10
ユーザー評価
未評価
お気に入り
0
閲覧数
1
フォーク
0
イシュー
0
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.
- Tool calling and prompts
- Streamable HTTP and Stdio transports
- Scalable with pre-forking web server and async tools using promises
- HTTP client for testing
- Can be embedded in Mojolicious web apps
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.
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.
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.
$ 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"}}}