Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

An MCP client tool for Prism

NotificationsYou must be signed in to change notification settings

prism-php/relay

Repository files navigation

Total DownloadsLatest Stable VersionLicense

Relay

A seamless integration betweenPrism and Model Context Protocol (MCP) servers that empowers your AI applications with powerful, external tool capabilities.

Installation

You can install the package via Composer:

composer require prism-php/relay

After installation, publish the configuration file:

php artisan vendor:publish --tag="relay-config"

Configuration

The published config file (config/relay.php) is where you'll define your MCP server connections.

Configuring Servers

You must define each MCP server explicitly in the config file. Each server needs a unique name and the appropriate configuration parameters:

return ['servers' => ['puppeteer' => ['command' => ['npx','-y','@modelcontextprotocol/server-puppeteer'],'timeout' =>30,'env' => [],'transport' => \Prism\Relay\Enums\Transport::Stdio,        ],'github' => ['url' =>env('RELAY_GITHUB_SERVER_URL','http://localhost:8001/api'),'timeout' =>30,'transport' => \Prism\Relay\Enums\Transport::Http,        ],    ],'cache_duration' =>env('RELAY_TOOLS_CACHE_DURATION',60),// in minutes (0 to disable)];

Basic Usage

Here's how you can integrate MCP tools into your Prism agent:

usePrism\Prism\Prism;usePrism\Relay\Facades\Relay;usePrism\Prism\Enums\Provider;$response = Prism::text()    ->using(Provider::Anthropic,'claude-3-7-sonnet-latest')    ->withPrompt('Find information about Laravel on the web')    ->withTools(Relay::tools('puppeteer'))    ->asText();return$response->text;

The agent can now use any tools provided by the Puppeteer MCP server, such as navigating to webpages, taking screenshots, clicking buttons, and more.

Real-World Example

Here's a practical example of creating a Laravel command that uses MCP tools with Prism:

namespaceApp\Console\Commands;useIlluminate\Console\Command;usePrism\Relay\Facades\Relay;usePrism\Prism\Enums\Provider;usePrism\Prism\Prism;usePrism\Prism\Text\PendingRequest;usefunctionLaravel\Prompts\note;usefunctionLaravel\Prompts\textarea;classMCPextends Command{protected$signature ='prism:mcp';publicfunctionhandle()    {$response =$this->agent(textarea('Prompt'))->asText();note($response->text);    }protectedfunctionagent(string$prompt):PendingRequest    {return Prism::text()            ->using(Provider::Anthropic,'claude-3-7-sonnet-latest')            ->withSystemPrompt(view('prompts.nova-v2'))            ->withPrompt($prompt)            ->withTools([                ...Relay::tools('puppeteer'),            ])            ->usingTopP(1)            ->withMaxSteps(99)            ->withMaxTokens(8192);    }}

This command creates an interactive CLI that lets you input prompts that will be sent to Claude. The agent can use Puppeteer tools to browse the web, complete tasks, and return the results.

Transport Types

Arc supports multiple transport mechanisms:

HTTP Transport

For MCP servers that communicate over HTTP:

'github' => ['url' =>env('RELAY_GITHUB_SERVER_URL','http://localhost:8000/api'),'api_key' =>env('RELAY_GITHUB_SERVER_API_KEY'),'timeout' =>30,'transport' => Transport::Http,],

STDIO Transport

For locally running MCP servers that communicate via standard I/O:

'puppeteer' => ['command' => ['npx','-y','@modelcontextprotocol/server-puppeteer','--options',// Array values are passed as JSON encoded strings      ['debug' =>env('MCP_PUPPETEER_DEBUG',false)      ]    ],'timeout' =>30,'transport' => Transport::Stdio,'env' => ['NODE_ENV' =>'production',// Set Node environment'MCP_SERVER_PORT' =>'3001',// Set a custom port for the server    ],],

Note

The STDIO transport launches a subprocess and communicates with it through standard input/output. This is perfect for running tools directly on your application server.

Tip

Theenv option allows you to pass environment variables to the MCP server process. This is useful for configuring server behavior, enabling debugging, or setting authentication details.

Advanced Usage

Using Multiple MCP Servers

You can combine tools from multiple MCP servers in a single Prism agent:

usePrism\Prism\Prism;usePrism\Relay\Facades\Relay;usePrism\Prism\Enums\Provider;$response = Prism::text()    ->using(Provider::Anthropic,'claude-3-7-sonnet-latest')    ->withTools([        ...Relay::tools('github'),        ...Relay::tools('puppeteer')    ])    ->withPrompt('Find and take screenshots of Laravel repositories')    ->asText();

Error Handling

The package uses specific exception types for better error handling:

usePrism\Relay\Exceptions\RelayException;usePrism\Relay\Exceptions\ServerConfigurationException;usePrism\Relay\Exceptions\ToolCallException;usePrism\Relay\Exceptions\ToolDefinitionException;usePrism\Relay\Exceptions\TransportException;try {$tools = Relay::tools('puppeteer');// Use the tools...}catch (ServerConfigurationException$e) {// Handle configuration errors (missing server, invalid settings)    Log::error('MCP Server configuration error:' .$e->getMessage());}catch (ToolDefinitionException$e) {// Handle issues with tool definitions from the MCP server    Log::error('MCP Tool definition error:' .$e->getMessage());}catch (TransportException$e) {// Handle communication errors with the MCP server    Log::error('MCP Transport error:' .$e->getMessage());}catch (ToolCallException$e) {// Handle errors when calling a specific tool    Log::error('MCP Tool call error:' .$e->getMessage());}catch (RelayException$e) {// Handle any other MCP-related errors    Log::error('Relay general error:' .$e->getMessage());}

License

The MIT License (MIT). Please see theLicense File for more information.

About

An MCP client tool for Prism

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors5


[8]ページ先頭

©2009-2025 Movatter.jp