MCP server for Platform-2Step API with human-in-the-loop confirmation
Project description
Platform-2Step MCP
MCP server that enables AI agents (Claude, GPT, etc.) to interact with AgendaPro's Platform API safely through a human-in-the-loop confirmation system.
All mutations require human confirmation — the AI agent can only create pending operations, never execute them directly.
Prerequisites
- Python 3.11+ — check with
python3 --version - uv (recommended) — Python package manager
Install uv
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or with Homebrew
brew install uv
After installing, restart your terminal or run source ~/.bashrc (or ~/.zshrc).
Installation
Option A: Claude Code (recommended)
Add to your project's .claude/mcp.json (or ~/.claude/mcp.json for global):
{
"mcpServers": {
"platform-2step": {
"command": "uvx",
"args": ["platform-2step-mcp"],
"env": {
"PLATFORM_2STEPS_BFF_URL": "https://ap-api.agendapro.com/platform-2steps-bff",
"API_HOST_PUBLIC": "mcp.agendapro.com"
}
}
}
}
Option B: Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"platform-2step": {
"command": "uvx",
"args": ["platform-2step-mcp"],
"env": {
"PLATFORM_2STEPS_BFF_URL": "https://ap-api.agendapro.com/platform-2steps-bff",
"API_HOST_PUBLIC": "mcp.agendapro.com"
}
}
}
}
Option C: Cursor
In Cursor, go to Settings > MCP and add a new server with this configuration:
{
"mcpServers": {
"platform-2step": {
"command": "uvx",
"args": ["platform-2step-mcp"],
"env": {
"PLATFORM_2STEPS_BFF_URL": "https://ap-api.agendapro.com/platform-2steps-bff",
"API_HOST_PUBLIC": "mcp.agendapro.com"
}
}
}
}
Alternatively, create a .cursor/mcp.json file in your project root with the same content.
Note:
uvxdownloads and runs the package from PyPI automatically — no manual install needed.
Authentication
Before using the MCP, you must authenticate once. The MCP uses OAuth 2.0 Device Flow — you'll be shown a URL and a code to enter in your browser.
# Set the BFF URL
export PLATFORM_2STEPS_BFF_URL=https://ap-api.agendapro.com/platform-2steps-bff
# Authenticate (opens browser)
uvx platform-mcp-auth login
You'll see something like:
Connecting to https://ap-api.agendapro.com/platform-2steps-bff...
Visit: https://agendapro-staging.auth.us-west-2.amazoncognito.com/...
Enter code: ABCD-1234
Waiting for authorization...
============================================================
Authentication successful!
============================================================
Token expires in: 1h 0m
Tokens are cached at ~/.platform-mcp/tokens.json and reused automatically.
Auth CLI commands
| Command | Description |
|---|---|
uvx platform-mcp-auth login |
Authenticate (interactive) |
uvx platform-mcp-auth login --force |
Re-authenticate even if tokens are valid |
uvx platform-mcp-auth status |
Check if tokens are valid |
uvx platform-mcp-auth logout |
Clear cached tokens |
Important: Always set
PLATFORM_2STEPS_BFF_URLbefore running auth commands.
Using Multiple Environments
To use both staging and production simultaneously, configure separate token paths:
{
"mcpServers": {
"platform-2step-staging": {
"command": "uvx",
"args": ["platform-2step-mcp"],
"env": {
"PLATFORM_2STEPS_BFF_URL": "https://ap-api.agendaprodev.com/platform-2steps-bff",
"API_HOST_PUBLIC": "mcp.agendaprodev.com",
"PLATFORM_MCP_TOKEN_PATH": "~/.platform-mcp/tokens-staging.json"
}
},
"platform-2step-prod": {
"command": "uvx",
"args": ["platform-2step-mcp"],
"env": {
"PLATFORM_2STEPS_BFF_URL": "https://ap-api.agendapro.com/platform-2steps-bff",
"API_HOST_PUBLIC": "mcp.agendapro.com",
"PLATFORM_MCP_TOKEN_PATH": "~/.platform-mcp/tokens-prod.json"
}
}
}
}
Authenticate each environment separately:
# Staging
PLATFORM_2STEPS_BFF_URL=https://ap-api.agendaprodev.com/platform-2steps-bff \
PLATFORM_MCP_TOKEN_PATH=~/.platform-mcp/tokens-staging.json \
uvx platform-mcp-auth login
# Production
PLATFORM_2STEPS_BFF_URL=https://ap-api.agendapro.com/platform-2steps-bff \
PLATFORM_MCP_TOKEN_PATH=~/.platform-mcp/tokens-prod.json \
uvx platform-mcp-auth login
Available Tools
Once connected, the MCP provides these tools to the AI agent:
Read (no confirmation needed)
- Categories:
list_categories,get_category - Services:
list_services,list_services_by_category,get_service - Bookings:
list_bookings,get_booking - Locations:
list_locations,get_location - Providers:
list_providers,get_provider - Memberships:
list_memberships,get_membership - Users:
get_user
Mutations (require human confirmation)
- Batch operations:
create_batch— creates up to 50 operations (create, update, delete) that must be confirmed by the user in the AgendaPro frontend
Analytics (read-only SQL)
query_analytics_db— execute SQL against synced analytics dataget_analytics_status— check data sync statusrefresh_analytics_data— trigger data refresh
Troubleshooting
"Not authenticated" error
Error: Not authenticated. Run 'platform-mcp-auth login' first.
Your tokens expired or were never created. Run uvx platform-mcp-auth login.
"Configuration error: PLATFORM_2STEPS_BFF_URL is required"
The environment variable is not set. Make sure it's in your mcp.json config under env.
MCP tools not showing in Claude
- Check the MCP server is running: look for errors in Claude Code's MCP logs
- Verify auth:
uvx platform-mcp-auth status - Restart Claude Code / Claude Desktop after config changes
"uvx: command not found"
Install uv first (see Prerequisites).
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
PLATFORM_2STEPS_BFF_URL |
Yes | — | BFF URL for API integration (staging or production) |
API_HOST_PUBLIC |
No | Falls back to PLATFORM_2STEPS_BFF_URL |
Public hostname for browser-facing URLs (e.g., mcp.agendapro.com) |
PLATFORM_MCP_TOKEN_PATH |
No | ~/.platform-mcp/tokens.json |
Token storage location |
LOG_LEVEL |
No | INFO |
Logging level (DEBUG, INFO, WARNING, ERROR) |
DEBUG_HTTP |
No | false |
Enable cURL-style HTTP request/response logging |
Documentation
For comprehensive documentation including architecture, security, and development guides, see CLAUDE.md.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file platform_2step_mcp-0.8.0.tar.gz.
File metadata
- Download URL: platform_2step_mcp-0.8.0.tar.gz
- Upload date:
- Size: 95.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
706a0dd9c9f503ffe82f55c745442aca5622795085626700ea2516a4176fcab8
|
|
| MD5 |
b2a1dd0adef787eff96497487eaac269
|
|
| BLAKE2b-256 |
7d7e2ec8ed14069c80b3151b7eb90ce1dced0a16556df34a894b103e2660988b
|
Provenance
The following attestation bundles were made for platform_2step_mcp-0.8.0.tar.gz:
Publisher:
build.yaml on agendapro/platform-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
platform_2step_mcp-0.8.0.tar.gz -
Subject digest:
706a0dd9c9f503ffe82f55c745442aca5622795085626700ea2516a4176fcab8 - Sigstore transparency entry: 1030986829
- Sigstore integration time:
-
Permalink:
agendapro/platform-mcp@b3e53f41dfe3e23f3d8f0d708cd20ce5d7035548 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/agendapro
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yaml@b3e53f41dfe3e23f3d8f0d708cd20ce5d7035548 -
Trigger Event:
push
-
Statement type:
File details
Details for the file platform_2step_mcp-0.8.0-py3-none-any.whl.
File metadata
- Download URL: platform_2step_mcp-0.8.0-py3-none-any.whl
- Upload date:
- Size: 43.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cfb5835a3a5783985f99513bf3a00de10cba1b22c5ee31023545db2cc8ec8ca
|
|
| MD5 |
e9b98f643ba557c6541388f9e550536e
|
|
| BLAKE2b-256 |
0be0a564cf594e25984bed68649d7b02034e5af97309eafa091bfcdbfa05221c
|
Provenance
The following attestation bundles were made for platform_2step_mcp-0.8.0-py3-none-any.whl:
Publisher:
build.yaml on agendapro/platform-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
platform_2step_mcp-0.8.0-py3-none-any.whl -
Subject digest:
2cfb5835a3a5783985f99513bf3a00de10cba1b22c5ee31023545db2cc8ec8ca - Sigstore transparency entry: 1030986880
- Sigstore integration time:
-
Permalink:
agendapro/platform-mcp@b3e53f41dfe3e23f3d8f0d708cd20ce5d7035548 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/agendapro
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yaml@b3e53f41dfe3e23f3d8f0d708cd20ce5d7035548 -
Trigger Event:
push
-
Statement type: