-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmcp_server.php
More file actions
51 lines (42 loc) · 1.46 KB
/
Copy pathmcp_server.php
File metadata and controls
51 lines (42 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
require __DIR__ . '/vendor/autoload.php';
use MCP\Server\Server;
use MCP\Server\Transport\StdioTransport;
use MCP\Server\Tool\ToolRegistry;
use MCP\Server\Resource\ResourceRegistry;
use MCP\Server\Capability\ToolsCapability;
use MCP\Server\Capability\ResourcesCapability;
// Load server configuration
$config = require __DIR__ . '/config/server.php';
// Create server instance
$server = new Server($config['name'], $config['version']);
// Set up signal handling
if (function_exists('pcntl_signal')) {
pcntl_signal(SIGINT, function() use ($server) {
$server->shutdown();
exit(0);
});
} else if (function_exists('sapi_windows_set_ctrl_handler')) {
sapi_windows_set_ctrl_handler(function() use ($server) {
$server->shutdown();
});
}
// Discover and register tools
$toolRegistry = new ToolRegistry();
$toolRegistry->discover(__DIR__ . '/tools', $config);
$toolsCapability = new ToolsCapability();
foreach ($toolRegistry->getTools() as $tool) {
$toolsCapability->addTool($tool);
}
$server->addCapability($toolsCapability);
// Discover and register resources
$resourceRegistry = new ResourceRegistry();
$resourceRegistry->discover(__DIR__ . '/resources', $config);
$resourcesCapability = new ResourcesCapability();
foreach ($resourceRegistry->getResources() as $resource) {
$resourcesCapability->addResource($resource);
}
$server->addCapability($resourcesCapability);
// Run server
$server->connect(new StdioTransport());
$server->run();