Notes & FAQ Search MCP Server
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., "@Notes & FAQ Search MCP Serversearch my notes for project design"
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.
NextFlows
Hi, this is my Academy MCP project
Project Overview
Notes & FAQ Search is an MCP server that allows users to search their own notes and frequently asked questions fully offline.
The project provides a simple and private way to find information without requiring paid API keys, cloud storage, or an internet connection while the server is running.
Related MCP server: recall-mcp
Project Goal
The goal of this project is to help students and other users quickly search their personal notes and FAQ collections through focused MCP tools.
Week 3 — Real local fixture data is wired into all five project tools.
search_notessearchesdata/notes.json.search_faqssearchesdata/faqs.json.get_noteretrieves a complete note fromdata/notes.json.list_notesreturns basic note metadata with optional tag filtering.add_notevalidates and safely writes new notes todata/notes.json.
Tool Inventory
P0 Tools
The following tools are required for the Demo Day workflow:
search_notes— searches locally stored notes using a text query.search_faqs— searches locally stored FAQ questions and answers.get_note— retrieves one complete note using its unique ID.
The P0 tools use validated local JSON fixture data and return real results.
P1 Tools
The P1 tools now use real local data:
list_notes— lists validated local notes with optional tag filtering.add_note— validates and safely adds a note to the local collection.
MCP Resources
The server also exposes two read-only MCP resources:
notes://index— returns basic metadata for the locally stored notes without returning complete note content.notes://faq— returns the locally stored FAQ questions and answers.
Resources can be listed and read by an MCP client without calling a tool. They reuse the same safe local JSON loading and validation used by the real tool handlers.
Completed Work
Selected Notes & FAQ Search as the project idea.
Completed the project design document.
Received mentor approval for the project design.
Defined three P0 tools and two P1 tools.
Added Zod input schemas for all planned tools.
Added descriptions and validation rules for tool inputs.
Added a local script for testing the P0 schemas.
Added one valid example input for every planned tool.
Added the MCP server dependency.
Added a
createServer()factory.Added one register function per tool.
Registered all five planned tools.
Connected the MCP server using
serveStdio.Added a development command for running the server.
Confirmed that TypeScript and schema checks pass.
Confirmed that the MCP server starts successfully over stdio.
Verified the Week 2 placeholder server using MCP Inspector.
Selected local JSON files as the data source for all P0 tools.
Added local fixture notes in
data/notes.json.Added local FAQ entries in
data/faqs.json.Added the Week 3 data plan in
docs/data-plan.md.Added a shared HTTP JSON helper with timeout handling for future HTTP sources.
Added safe local file path resolution.
Restricted file reads to the repository
datadirectory.Added Zod schemas for note and FAQ file payloads.
Added duplicate note and FAQ ID validation.
Implemented the real
search_noteshandler.Implemented the real
search_faqshandler.Implemented the real
get_notehandler.Added normalized keyword matching and simple relevance scoring.
Added empty search result handling.
Added missing-note error handling.
Added stderr failure logging and short user-facing errors.
Added reusable note loading and search functions.
Added reusable FAQ loading and search functions.
Connected
search_notestodata/notes.json.Connected
search_faqstodata/faqs.json.Connected
get_notetodata/notes.json.Added FAQ fixture payload validation.
Implemented the real
list_noteshandler.Added reusable note listing and tag filtering logic.
Added valid and invalid
list_notesschema checks.Connected
list_notestodata/notes.json.Implemented the real
add_notehandler.Added safe local JSON writing.
Added unique sequential note ID generation.
Added temporary-file replacement for safer fixture updates.
Added valid and invalid
add_noteschema checks.Added safe write-path validation.
Completed the real implementations of both P1 tools.
Planned Features
Test all real P0 handlers using MCP Inspector.
Capture final Week 3 submission evidence.
Improve search ranking if required.
Implement the real
add_notehandler with safe local persistence.Test all five real handlers using MCP Inspector after
add_noteis completed.Add build and production start commands when required.
Week 3 Data Sources
All three P0 tools use local JSON fixture files:
search_notesreads fromdata/notes.json.get_notereads fromdata/notes.json.search_faqsreads fromdata/faqs.json.
The project does not use an external API, paid API key, cloud database, or hosted search service.
Because the primary data source is stored inside the repository, the Demo Day workflow can continue working when Wi-Fi is unavailable.
Safe Fetching and Parsing
Task 3.3 adds shared safety rules for external and file data:
Resolve local fixture paths inside the repository
datadirectory.Reject absolute paths and paths containing
...Read the file as text.
Parse the JSON payload as an unknown value.
Validate the parsed payload with Zod.
Use the data only after successful validation.
Return successful empty search results when no matches are found.
Log internal failures to stderr using the tool name and reason.
Return short user-facing errors instead of raw internal details.
The shared HTTP helper uses AbortSignal.timeout(timeoutMs) and throws a clear error for non-successful HTTP responses. It is available for future HTTP data sources but is not called by the current offline tools.
Current Project Structure
mcp-Notes-FAQ-Search-MCP-server/
├── data/
│ ├── faqs.json
│ └── notes.json
├── docs/
│ ├── data-plan.md
│ ├── design.md
│ └── project-choice.md
├── examples/
│ ├── add_note.json
│ ├── get_note.json
│ ├── list_notes.json
│ ├── search_faqs.json
│ └── search_notes.json
├── scripts/
│ └── check-schemas.ts
├── src/
│ ├── lib/
│ │ ├── faqs.ts
│ │ ├── http.ts
│ │ ├── notes.ts
│ │ ├── read-data-file.ts
│ │ ├── search.ts
│ │ └── write-data-file.ts
│ ├── schemas/
│ │ ├── add-note.ts
│ │ ├── faq-data.ts
│ │ ├── get-note.ts
│ │ ├── list-notes.ts
│ │ ├── note-data.ts
│ │ ├── search-faqs.ts
│ │ └── search-notes.ts
│ ├── tools/
│ │ ├── add-note.ts
│ │ ├── get-note.ts
│ │ ├── list-notes.ts
│ │ ├── search-faqs.ts
│ │ └── search-notes.ts
│ └── index.ts
├── .gitignore
├── README.md
├── package.json
├── package-lock.json
└── tsconfig.jsonPrerequisites
Before running the project, make sure the following are installed:
Node.js 20 or later
npm
Check the installed versions using:
node --version
npm --versionInstallation
Clone the repository and enter the project directory:
git clone https://github.com/SajaAsfour/mcp-Notes-FAQ-Search-MCP-server.git
cd mcp-Notes-FAQ-Search-MCP-serverInstall the project dependencies:
npm installTypeScript Validation
Run the TypeScript checker:
npm run typecheckThis command validates the TypeScript files without generating build output.
Zod and Fixture Validation
Run the local schema and fixture checks:
npm run check:schemasThe script checks:
Valid and invalid inputs for
search_notes.Valid and invalid inputs for
search_faqs.Valid and invalid inputs for
get_note.The shape of
data/notes.json.The shape of
data/faqs.json.Duplicate note and FAQ IDs.
Rejection of unsafe file paths.
A successful run should end with:
All tool input, fixture, and safe path checks passed.Local Fixture Data
Local notes are stored in:
data/notes.jsonLocal FAQ entries are stored in:
data/faqs.jsonThe files are committed to the repository, parsed as JSON, and validated with Zod before the P0 tools use them.
Zod Schemas
Tool input schemas and local file payload schemas are located in:
src/schemas/The current schemas are:
search-notes.tssearch-faqs.tsget-note.tslist-notes.tsadd-note.tsnote-data.tsfaq-data.ts
There is no src/schemas/index.ts file.
Search Behavior
The search tools:
Normalize the query and searchable text.
Split the query into distinct search terms.
Match terms against note or FAQ fields.
Calculate a simple relevance score.
Order results by score.
Apply the requested result limit.
Return an empty
resultsarray with a short message when no matches are found.
This is simple keyword matching and not semantic or AI-based search.
MCP Server Setup
Each planned tool has its own register function inside:
src/tools/The server factory is located in:
src/index.tsThe createServer() function creates a fresh McpServer instance and registers all five planned tools.
The server uses stdio transport through:
void serveStdio(createServer);Server logs are written using console.error because stdout is reserved for the MCP protocol.
Running the MCP Server in Development
Start the server using:
npm run devA successful start should show:
notes-faq-search-mcp MCP server running on stdioThe process then remains active while waiting for stdio input.
Stop the server using:
Ctrl+CMCP Inspector
Run MCP Inspector from the project root:
npx -y @modelcontextprotocol/inspector npx tsx src/index.tsThe Inspector should list:
search_notessearch_faqsget_notelist_notesadd_note
Valid sample arguments are available inside:
examples/The Week 2 Inspector proof verified tool discovery, input validation, and placeholder responses.
Real local-data verification for the Week 3 P0 handlers must still be completed before this README claims that the final workflow passed Inspector testing.
Commands Not Added Yet
The following commands are not available:
npm run build
npm start
npm run inspectThey will be added only when the corresponding build, production start, and Inspector scripts are implemented.
Offline Operation
The notes and FAQ fixture data is stored locally inside the repository.
The project does not require paid APIs, API keys, cloud storage, hosted AI models, or an internet connection to access and search the fixture files.
Project Status
Project selected
Project design completed
Three P0 tools defined
Two P1 tools defined
P0 Zod input schemas added
P1 Zod input schemas added
Local P0 schema checks added
MCP server factory added
Stdio server setup added
All planned tools registered
Placeholder handlers added for the Week 2 skeleton
Development server command added
One valid JSON example added for every planned tool
Week 2 Inspector proof completed
Local notes data added
Local FAQ data added
Week 3 data plan added
Safe local file loading added
Note and FAQ fixture schemas added
Duplicate ID validation added
Real P0 handlers implemented
Empty search result handling implemented
Missing-note error handling implemented
Short user-facing error handling implemented
Real
list_noteshandler implementedReal
add_notehandler implementedSafe local note writing implemented
Real local-data handlers tested in MCP Inspector
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.
Related MCP Servers
- Alicense-qualityFmaintenanceEnables semantic search and retrieval from your local markdown brain (Remember.md) via MCP tools, running entirely offline with local embeddings.211MIT
- AlicenseAqualityDmaintenanceTurns a local folder of notes and documents into a searchable knowledge base for AI assistants via MCP, enabling semantic search, reading, and adding notes entirely on-device.49MIT
- Alicense-qualityDmaintenanceEnables AI assistants to search and read offline documentation from synced libraries via MCP tools, providing hybrid keyword and semantic search without network calls.71MIT
- Flicense-qualityBmaintenanceEnables semantic search over personal markdown notes by indexing them into a vector database and exposing search, reindex, and status tools via MCP.
Related MCP Connectors
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/SajaAsfour/mcp-Notes-FAQ-Search-MCP-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server