MCP-USV
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., "@MCP-USVshow me all students in the Computer Science department"
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-USV: Faculty Administration System
A comprehensive Model Context Protocol (MCP) server for university faculty administration, built with Next.js, Prisma, PostgreSQL, and Gemini AI.
Features:
π οΈ 50+ MCP Tools for managing students, faculty, courses, grades, documents, and more
π€ AI-Powered Chat interface with Gemini for natural language queries
π Multiple Access Patterns: HTTP API, MCP protocol, and direct database queries
π Certificate Generation with PDF export and email delivery
π« Academic Management covering students, specializations, courses, and appointments
π Type-Safe with TypeScript, Zod validation, and Prisma ORM
π Documentation
Start here based on your role:
Document | Purpose | For |
System design & how everything works together | Architects, Senior Developers | |
Visual flows and interactions | All technical readers | |
How to add tools and extend the project | Developers, Contributors | |
How to maintain and improve documentation | Documentation maintainers | |
This README | Getting started & quick reference | Everyone (START HERE) |
Quick Navigation by Role
π€ New Team Member:
Read: README.md (this file)
Follow: Setup instructions below
Reference: DEVELOPER_GUIDE.md
π¨βπ» Want to Add a New Tool: β See DEVELOPER_GUIDE.md#adding-a-new-tool
ποΈ Want to Understand the Architecture: β See MCP_ARCHITECTURE.md and MCP_ARCHITECTURE_DIAGRAMS.md
π§ͺ Want to Test an API: β See DEVELOPER_GUIDE.md#api-endpoint-examples
β Something Not Working? β See DEVELOPER_GUIDE.md#common-debugging
Related MCP server: epiis-mcp-server
Environment Variables
Copy
.env.exampleto.env.Update
DATABASE_URLto point at your Postgres instance (the same value is used by Prisma, the MCP server, and the Next.js API routes).Set
GEMINI_API_KEY(and optionallyGEMINI_MODEL, defaultgemini-1.5-pro) so the chat agent can call Gemini.Adjust
MCP_SERVER_COMMAND/MCP_SERVER_PATHif the compiled MCP binary lives elsewhere.Configure SMTP for certificate delivery:
SMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASS, optionalSMTP_FROM.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
MCP Server
Build the TypeScript MCP server and start it against the same datastore:
npm run build:mcp
node dist/mcp-server.jsStudents API
The React app now exposes the MCP student tools over HTTP:
GET /api/studentsaccepts the same optional filters as thelist_studentstool.POST /api/studentsvalidates payloads with Zod and creates a student via the shared Prisma service.
The API handlers import the exact same business logic that powers the MCP tools, so data written by the React UI is immediately visible to MCP clients.
Faculties API
GET /api/facultiesreturns all faculties with onlyidandname.GET /api/faculties/[facultyId]/specializationsreturns all specializations for that faculty with onlyidandname.
Certificate Requests API
POST /api/certificate-requestsvalidates student certificate request payloads.GET /api/certificate-requestsreturns certificate requests (newest first); optionalstatusquery filter, e.g./api/certificate-requests?status=pending.Expected body:
lastName,firstName,fatherInitial,faculty,specialization,studyYear,purpose,otherPurpose.facultyandspecializationare received as IDs in the request, validated against student/faculty/specialization data, then stored as names inCertificateRequest.firstName,lastName, andfatherInitialare validated at POST time and resolved from the relatedStudentrecord on GET responses.On invalid data the endpoint returns
valid: falsewithreasons; on success it stores the request withstatus: "pending".POST /api/certificate-requests/[requestId]/approveapproves one request, generates:JSON snapshot in
generated-certificates/PDF file in
generated-certificates/pdf/Documentrow withfilePathset to the generated PDF pathEmail with PDF attachment to the linked student's email
If SMTP fails, approval still completes and API response includes
email.sent: falsewith an error message.
For PDF generation with Playwright, install Chromium once:
npx playwright install chromiumSecretariat Appointments API
GET /api/secretariat-appointmentsreturns appointments ordered bydate+time.GET /api/secretariat-appointments?studentEmail=...&dateFrom=YYYY-MM-DD&dateTo=YYYY-MM-DDfilters appointments.POST /api/secretariat-appointmentscreates a new appointment.GET /api/secretariat-appointments/[appointmentId]fetches one appointment.PATCH /api/secretariat-appointments/[appointmentId]updates one or more fields.DELETE /api/secretariat-appointments/[appointmentId]removes one appointment.Expected body fields:
studentName,studentEmail,date(YYYY-MM-DD),time(HH:mm), optionaldurationMinutes,meetingMode,location,notes.
MCP Tool Proxy
External apps can now discover and invoke any MCP tool via HTTP:
GET /api/toolsβ returns every tool name plus its description so you can build pickers in another UI.POST /api/tools/[toolName]β validates the request body with the toolβs Zod schema, spins up the MCP server (node dist/mcp-server.jsby default), and returns theCallToolResultJSON.
Environment tweaks:
Run
npm run build:mcpwhenever tool code changes sodist/mcp-server.jsstays in sync.Override
MCP_SERVER_COMMAND/MCP_SERVER_PATHif the binary lives elsewhere (see.env.example).
Each HTTP invocation launches the MCP server via stdio, executes a single tool, and shuts it downβideal for React clients that can only speak HTTP.
Chat Agent API
POST /api/chat accepts { "message": "..." }, sends the prompt to Gemini with the MCP tool catalog, executes the tool Gemini selects, and replies with:
reply: Gemini's final answer after the tool call (if any).toolCalls: arguments plus raw MCP output so clients can audit what happened.
You can exercise the endpoint via the simple chat UI on the home page.
Internal Auth API
POST /internal/auth/secretary-checkchecks whether an email is allowed to use secretary-only flows.Expected JSON body:
{ "email": "user@gmail.com" }.Success response shape:
{ "allowed": true }(orfalse).Configure allowed emails with
SECRETARY_EMAILSas a comma-separated list.
Students UI
Visit the home page to:
Send prompts that flow through
/api/chat.Watch Gemini's replies plus any MCP tool traces for debugging.
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.
Latest Blog Posts
- 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/MirabelaVieriu/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server