Express.js backend server for MCPIC (a club/organization management system) with MongoDB integration for managing users, events, segments, blogs, and recruitment forms
This server exposes 20 REST endpoints as MCP tools but lacks critical definition quality. Tool names are HTTP routes (GET /users, PUT /user) rather than action verbs (list_users, update_user). Most tools have minimal descriptions (10-30 chars, well below the 50-200 char baseline for LLM optimization). Input schemas are partially present but inconsistent: some tools document parameters (e.g., /user/:email has email type+description), while others (POST /events, POST /blogs) have NO visible input schema despite accepting request bodies. Output schemas are completely undocumented, LLMs cannot infer what fields to expect from responses. Error handling is absent; no guidance on retryability, user-fixable vs fatal errors, or recovery paths. Security concerns: no evidence of permission validation in tool definitions, and destructive operations (DELETE /event/:id, DELETE /segment/:id) lack confirmation patterns. Tool composition is poor: multiple tools operate on the same resources (users, events, segments, blogs) with overlapping responsibilities but no clear chaining guidance.
Delete an event by ID
Delete one segment by ID
Get a single blog by ID
Get all blogs sorted by timestamp in descending order
Get one event by ID
Get one event by name
Get all events sorted by timestamp in descending order
Get one segment by ID
Get segments according to event name
Tool names are HTTP routes (GET /users, PUT /user) instead of action verbs (list_users, update_user). LLMs cannot infer intent from route syntax; verb-noun naming is required for tool selection.
Most tool descriptions are under 20 characters (e.g., 'Get all users from the database' is 30 chars but many are shorter). Descriptions must be 50-200 chars to provide LLM-optimized context for tool selection and usage.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 22 | 2026-07-28+ | v2 |
Get all segments
Get one user by email
Get all users from the database
Make admin - update user by ID with admin role
Set designation for a user by email
Add a new blog
Add event segment
Create a new event
Edit a blog by ID
Update segment details by ID
Update or create a user with name and image, or create new user if not exists
POST /events, POST /event-segment, and POST /blogs have NO visible input schemas despite accepting request bodies. LLMs cannot determine what fields to send without documented schemas.
Output schemas are completely undocumented for all 20 tools. LLMs cannot plan downstream calls or extract required fields (e.g., user_id, event_id) without knowing response structure.
Destructive operations (DELETE /event/:id, DELETE /segment/:id) lack confirmation patterns, dry-run support, or error guidance. Agents cannot safely execute irreversible actions.