This application is a demonstration for the API Platform Framework. Try it online at https://demo.api-platform.com.
Read the official "Getting Started" guide.
$ git clone https://github.com/api-platform/demo.git
$ cd demo
$ docker compose up --wait
You can now go to https://localhost
Authentication and usage:
- Admin: the credentials are shown on https://localhost/admin You can create a Book with
https://openlibrary.org/books/OL2055137M.jsonas value for Book Reference - API:
- endpoints without the
/adminprefix are public and can be called without further step - endpoints with the
/adminprefix require an authentication: open https://localhost/docs then check the “openid” option under “Scopes” and click on “Authorize”. If you are not yet logged in on the API then log in with the credentials, and finally click on “Close”. You can now perform authenticated requests through the API, like listing books onGET /admin/books
- endpoints without the
The API exposes a Model Context Protocol server on https://localhost/mcp:
search_books and get_book are public, add_review publishes a review on behalf of the authenticated user.
With Claude Code:
$ claude mcp add --transport http --client-id api-platform-mcp demo https://localhost/mcp
Then ask Claude to list the books written by Dan Simmons, and to post a 5/5 review on Hyperion. As this tool requires an
authentication, Claude Code asks you to sign in: run /mcp, select the demo server, then "Authenticate". Log in with
john.doe@example.com (password Pa55w0rd) and grant the access: the review is published, and shows up live on the
book page of the PWA.
With MCP Inspector: run npx @modelcontextprotocol/inspector,
connect to https://localhost/mcp with the "Streamable HTTP" transport and api-platform-mcp as OAuth client ID.
Note
The Keycloak realm is only imported on its first start. If you started the project before the MCP client was added,
recreate the Keycloak database: docker compose rm -sf keycloak keycloak-database && docker volume rm demo_keycloak_db_data && docker compose up --wait.
This demo application contains several things you may be interested:
Note: this demo application implements OpenID Connect Specification Support (using Keycloak). See usage in API and usage in PWA.
Created by Kévin Dunglas. Commercial support available at Les-Tilleuls.coop.