Skip to main content
Glama
Inklusport MCP Server (Python)

Inklusport MCP Server (Python)

Inklusport MCP Server (Python)

MCP (Model Context Protocol) server with the same foundation as the class example (mcp>=2.0.0, MCPServer, @server.tool, HTTP transport).

Domain tools do not touch databases: they make HTTP GET requests to ink-ms-users (port 3002) and ink-ms-sports (port 3003). A per-role agent (user, coach, organizer, admin) only sees the tools corresponding to their role.


Tools (read & management → microservices)

Tool

Microservice

Endpoint

Test cases

listar_discapacidades

sports

GET /api/disabilities

CP1-HU16.2

consultar_discapacidad

sports

GET /api/disabilities/{id}

CP2-HU16.2

registrar_discapacidad

sports

POST /api/disabilities

CP1-HU16.1, CP2-HU16.1

editar_discapacidad

sports

PUT /api/disabilities/{id}

CP1-HU16.3, CP2-HU16.3

desactivar_discapacidad

sports

PATCH /api/disabilities/{id}/deactivate

CP1-HU16.4, CP2-HU16.4

reactivar_discapacidad

sports

PATCH /api/disabilities/{id}/activate

CP1-HU16.4

listar_adaptaciones_deporte

sports

GET /api/sport-disabilities/sport/{sportId}

CP1-HU17, CP2-HU17

listar_eventos

sports

GET /api/events

CP1-HU18

crear_evento

sports

POST /api/events

CP2-HU18, CP1-HU18.1, CP2-HU18.1

listar_eventos_disponibles

sports

GET /api/events/available

CP1-HU18.2

consultar_evento

sports

GET /api/events/{id}

CP2-HU18.2

editar_evento

sports

PUT /api/events/{id}

CP1-HU18.3, CP2-HU18.3

cancelar_evento

sports

POST /api/events/{id}/cancel

CP1-HU18.4, CP2-HU18.4

inscribirse_evento

sports

POST /api/registrations

CP1-HU18.5, CP2-HU18.5

consultar_calendario_eventos

sports

GET /api/events/calendar

CP1-HU19, CP2-HU19

consultar_usuario

users

GET /api/internal/users/{id} (or email → id-by-email)

—

consultar_inscripciones

sports

GET /api/registrations/user/{userId}

—

consultar_roles_por_email

users

GET /api/internal/users/roles-by-email

—

listar_rutinas_publicadas

sports

GET /api/routines

—

listar_rutinas_entrenador

sports

GET /api/routines/trainer/{trainerId}

—

listar_deportes

sports

GET /api/sports/active

—


Related MCP server: Enterprise MCP Gateway and Tool Registry

Agents by role

AGENT_ROLE in .env (or at startup) filters the tools:

Role

Tools

usuario

events, available events, calendar, register, sports, profile, registrations, adaptations

entrenador

events, calendar, profile, routines, adaptations, disabilities (CRUD/activate)

organizador

events (CRUD/cancel), calendar, disabilities, registrations, adaptations

admin

all event management, disabilities, users, routines and adaptations

all

all of the above

Instructions for Antigravity: agents/usuario.md, entrenador.md, organizador.md, admin.md.


Structure

ink-mcp-inklusport/
├── requirements.txt
├── .env / .env.example
├── README.md
├── agents/                 # prompts y config MCP para Antigravity
└── src/
    ├── server.py           # servidor MCP y registro de tools
    ├── ms_client.py        # GET HTTP a Users/Sports
    └── client_test.py      # cliente de prueba (como en clase)

Configuration (.env)

TRANSPORT=streamable-http
HOST=127.0.0.1
PORT=8000
AGENT_ROLE=all
USERS_SERVICE_URL=http://localhost:3002
SPORTS_SERVICE_URL=http://localhost:3003

TRANSPORT: sse, streamable-http or stdio.


Quick start (Windows)

1. Environment and installation

cd ink-mcp-inklusport
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt

2. MCP server

Users and Sports are not required to start. Without them, tools return success=false (microservice unreachable).

python src/server.py

You should see http://127.0.0.1:8000. Health: http://127.0.0.1:8000/.

3. Test client (another terminal)

.\.venv\Scripts\Activate.ps1
python src/client_test.py

4. One process per role (optional)

# terminal 1
$env:AGENT_ROLE="usuario"; $env:PORT="8000"; python src/server.py
# terminal 2
$env:AGENT_ROLE="entrenador"; $env:PORT="8001"; python src/server.py
# terminal 3
$env:AGENT_ROLE="organizador"; $env:PORT="8002"; python src/server.py
# terminal 4
$env:AGENT_ROLE="admin"; $env:PORT="8003"; python src/server.py

Configure Antigravity with all four: agents/antigravity.roles.mcp.json. With a single server (AGENT_ROLE=all): agents/antigravity.mcp.json.


Antigravity

  1. Install Antigravity IDE (not the "pure" agent 2.0).

  2. Start the server with TRANSPORT=streamable-http.

  3. Add the MCP: http://127.0.0.1:8000/mcp.

  4. Paste the prompt from agents/<role>.md as the agent instructions.

  5. Test: "What events are there in Inklusport?". If the response includes the "via": "mcp" field, the agent is using the server and not making up data.


Microservices

From the monorepo root:

docker compose up -d users-service sports-service

Ports: Users 3002, Sports 3003. Read queries are permitAll. Write tools (create/edit/cancel/register) call the same Sports API endpoints and may require a JWT depending on the security profile.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables management of Expokossodo 2025 events through 7 MCP tools for checking events, attendee registration, capacity monitoring, attendance confirmation, and real-time statistics. Features JWT authentication with role-based permissions for event coordinators and staff.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for eventos event management platform, enabling AI assistants to manage events and tickets via API integration. Supports authentication, ticket CRUD operations, and listing with pagination.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that wraps wger fitness/nutrition management platform, providing 15 tools for exercise search, ingredient nutrition lookup, weight tracking, and more, accessible to any MCP-compatible AI agent.
    -