noerd / mcp
MCP servers for noerd applications: laravel/mcp with Passport OAuth for noerd users, a server registry, admin approval per tenant, an access log and the connectors of every user
Requires
- php: ^8.3
- laravel/framework: ^12.0 || ^13.0
- laravel/mcp: ^1.1
- laravel/passport: ^13.10
- noerd/noerd: ^0.17
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
MCP servers for noerd applications. Modules register their laravel/mcp server; this package
serves each one at /mcp/{key} behind OAuth (Laravel Passport) for noerd users, in the company the
person selected and with their permissions.
- Admins allow the servers per company under Setup → Administration → MCP Server Admin (a server is off until allowed) and see every access in the MCP Access Log (person, client, tool, arguments, result, duration).
- Every person finds the server URLs for their assistant (e.g. Claude → Settings → Connectors)
and their connected clients under My MCP Connectors (
/noerd/user/mcp-connectors, a page of the profile area), where they can disconnect a client.
Installation
php artisan noerd:install-mcp
Publishes the screen YAML, runs the migrations (Passport's OAuth tables are created when missing),
creates Passport's key pair when there is none, adds the setup navigation entries and "My MCP
Connectors" to the profile navigation. A deployment
keeps storage/oauth-private.key / oauth-public.key in its shared storage (or sets
PASSPORT_PRIVATE_KEY / PASSPORT_PUBLIC_KEY). Schedule noerd-mcp:prune-requests for the log
retention (NOERD_MCP_LOG_RETENTION_DAYS, default 90).
Registering a server
use NoerdMcp\Support\McpServerRegistry; public function boot(): void { app(McpServerRegistry::class)->register( key: 'accounting', serverClass: AccountingServer::class, apps: 'ACCOUNTING', label: 'Accounting', description: 'Quotes, order confirmations, invoices and dunnings for existing customers.', ); }
Tools use NoerdMcp\Tools\Concerns\ActsForNoerdUser for the tenant, the permission checks and the
answer shapes.