ApiDocs
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ApiDocsFetch the api-docs.json resource"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Resources Server Demo
A Laravel (laravel/mcp) demo of an MCP
server that exposes exactly one resource — api-docs.json — behind three
independent security controls:
mTLS — a local Caddy reverse proxy requires and verifies a client certificate before any request reaches Laravel.
OAuth 2.1 + PKCE — Laravel Passport (embedded Authorization Server) issues access tokens via the Authorization Code grant with mandatory PKCE (S256), using
laravel/mcp's built-in OAuth discovery and dynamic client registration.Granular scope control — the resource only appears in
resources/list(and only serves content inresources/read) for tokens carrying themcp:read-api-docsscope. A token without it sees an empty resource list — it can't discover the resource exists, let alone read it.
This is a precursor demo for a larger MCP Resources Server project — see docs/MCP_DEMO.md for the full architecture writeup.
Setup
composer install
npm install && npm run build
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan passport:keys
php artisan db:seedphp artisan db:seed creates the demo user used to complete the OAuth
consent step: test@example.com / password.
Replace storage/app/private/api-docs.json with the real file you want the
resource to serve, if you haven't already.
Related MCP server: identity-aware-mcp-server
Testing the demo
You need three terminals.
Terminal 1 — Laravel:
php artisan serve --port=8000Terminal 2 — Caddy (mTLS-terminating proxy, localhost:8443 → 127.0.0.1:8000):
cd deploy/mtls
./bin/caddy.exe run --config Caddyfile --adapter caddyfileTerminal 3 — run the scripted end-to-end client:
php deploy/mtls/demo-client.phpThis plays the role of a real MCP client: registers itself via
POST /oauth/register, generates a PKCE code_verifier/code_challenge,
logs in as the seeded demo user, submits the consent screen, exchanges the
code for a token, then calls the MCP endpoint over the mTLS connection with
resources/list and resources/read. You should see api-docs.json (and
only that) listed, with its contents returned.
Run it again with the flag below to request only the base mcp:use scope
(no mcp:read-api-docs) and watch the resource disappear from the list —
proof the scope gate hides it rather than just rejecting reads:
php deploy/mtls/demo-client.php --no-scopeFor negative tests (no client cert, no bearer token) and a manual browser-based walkthrough of the consent screen, see docs/MCP_DEMO.md.
Key files
File | Purpose |
Registers | |
The MCP server — only registers | |
The scope gate ( | |
App-level mTLS check | |
The actual mTLS enforcement | |
Scripted end-to-end test client |
Status
This is demo-grade, not production-grade: self-signed local certs, Passport running as an embedded Authorization Server (a real deployment would more likely delegate to a standalone IdP), and no automated PHPUnit coverage for the new mTLS/OAuth/scope wiring — it's been verified by actually running the flow, not by a test suite. See the "Notes for the real project" section of docs/MCP_DEMO.md for what carries over.
Built on the Laravel framework, licensed MIT.
MCP-Demo
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
111FusionAuth Documentation MCP server
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA reference implementation of an MCP server built with Express that integrates full OAuth 2.1 authorization and RFC9728 protected resource metadata. It enables secure, authenticated communication between MCP clients and servers using streamable HTTP transport and built-in authorization flows.-
- FlicenseNot gradedqualityDmaintenanceA production-ready MCP server that authenticates agents via OAuth 2.1 Bearer tokens, validates JWTs with JWKS, enforces tool-level scopes and roles, and logs the full delegation chain.-
- FlicenseNot gradedqualityCmaintenanceA proof-of-concept MCP server implementing OAuth 2.1 authorization with CIMD client registration and PKCE, demonstrating protected resource access and step-up authentication.-
- FlicenseNot gradedqualityCmaintenanceAn MCP authorization server implementing OAuth2/OIDC flows, supporting dynamic client registration, PKCE, consent screens, and client ID metadata documents for MCP authorization.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/alfaizmac/MCP-Demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server