Husky Home Finder MCP Server

Husky Home Finder MCP Server

A local MCP server for reviewing student housing form submissions, supporting listing, validation, duplicate detection, summarization, and data extraction with optional AI analysis.

Category
Visit Server

README

Submission Reviewer MCP Server

The Husky Home Finder collects student submissions (apartment reviews, roommate interest, housing survey, and newsletter/waitlist sign ups.)

Currently, we would need to read each submission manually to catch duplicates, incomplete responses, and other bad submissions.

This MCP server adds AI review between submission and the database in order to classify the submissions, extract the data, summarize the information, and check for duplicates.

How Codex and GPT 5.6 were used

Codex was used as the main builder, building the MCP server (the tools, the typescript source (src), and the mock JSON data). I told Codex what I wanted each tool to do and then reviewed it, editing it based on the output.

GPT 5.6 is called, and powers two of the four tools: classifying submissions and extracting fields from the text reviews.

The other two tools (dedupe_check and summarize_batch) don't use AI calls, they are rule-based.

What it does

The server exposes exactly four tools:

Tool Plain-language purpose What it returns
classify_submission Helps staff spot incomplete, inconsistent, or potentially duplicate form responses before reviewing them manually. GPT-5.6 data-quality classifications for redacted records in one form.
extract_fields Turns free-text apartment reviews into consistent fields that a future directory or dashboard can use. GPT-5.6 structured quality, amenity, and concern data from apartment-review text.
dedupe_check Finds submissions that may be repeats, so staff do not need to review the same response twice. Likely duplicate submission IDs using a form-specific matching rule.
summarize_batch Gives the team a quick picture of trends, such as budgets, neighborhoods, ratings, or housing concerns. Privacy-preserving aggregate counts, averages, and common choices for one form.

The mock data deliberately includes ordinary valid submissions, likely duplicates, incomplete responses, and invalid values so the tools have useful results immediately.

Project layout

src/
  index.ts            MCP server and tool registration
  call-tool.ts        Small local MCP client for manual testing
  data.ts             Reads mock JSON data (replace this later for a database)
  analysis.ts         Duplicate detection and aggregate summaries
  openai-analysis.ts  Redacted GPT-5.6 classification and field extraction
  types.ts            Form data types
mock-data/            One JSON file for each form type

Setup

You need Node.js 20 or newer.

npm install
npm run build

Test a tool manually

The call command compiles the project, starts the server, calls one tool, prints its JSON result, and stops.

# Summarize a batch of housing surveys
npm run call -- summarize_batch --form housing_survey

# Find repeated roommate-interest submissions
npm run call -- dedupe_check --form roommate_interest

The AI tools require an API key. Copy .env.example to .env, add OPENAI_API_KEY, and use:

# Classify records for human data-quality review
npm run call:ai -- classify_submission --form roommate_interest

# Extract structured fields from apartment reviews
npm run call:ai -- extract_fields --limit 10

# Analyze one newly pasted apartment review instead of mock data
npm run call:ai -- extract_fields --text "The apartment is close to campus, but our unit had recurring plumbing problems."

# Classify one newly pasted housing-survey response
npm run call:ai -- classify_submission --form housing_survey --text "I live on campus, have a $1400 monthly budget, and want housing near the University District."

For pasted text, omit names, email addresses, phone numbers, and other direct identifiers. The server also redacts common email and phone-number patterns before making an AI request.

Form results also include a formOverview object so outside users understand what each form category represents:

Form type What it covers
housing_survey Current housing, budget, preferred neighborhoods, and concerns.
apartment_review Building quality, rent, room type, rating, and written student experience.
roommate_interest Move-in timing, budget, lifestyle preferences, and a short student bio.
newsletter_waitlist Interest in Husky Home Finder updates and housing resources.

Run as an MCP server

After building, start the standard-input/output server with:

npm start

For an MCP client configuration that uses the AI tools, start it with the environment file loaded:

npm run build
npm run start:ai

MCP uses standard output for protocol messages. The server sends status messages to standard error, so do not add ordinary console.log statements to src/index.ts.

An MCP client can register the compiled server with:

{
  "command": "node",
  "args": ["/absolute/path/to/submission-reviewer/dist/index.js"]
}

Privacy and MVP notes

This is a learning MVP, not production storage for real student data. The AI tools redact names, email addresses, and phone numbers before sending records to the provider. Classification and duplicate results are review aids, never automatic housing or roommate decisions.

Before collecting real submissions, add authentication and authorization, encrypted database storage and backups, consent and retention rules, rate limiting, audit logs, and a human review process.

Where to make changes later

  • Add or change a form field: update src/types.ts, its JSON fixture, and summary or extraction logic.
  • Use a database: replace loadSubmissions in src/data.ts; the tools can stay the same.
  • Adjust duplicate matching: edit dedupeCheck in src/analysis.ts.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured