search_sop_documentsLABSCO SUMMARY
Two questions, not one: find the procedure, or ask what to do.
Document search returns passages; get_sop_guidance takes the situation you are actually in — a customer reported a defect — and answers from the procedures instead. That split matters in practice, because the person asking usually can't name the SOP they need. Categories come from your folder structure, so scoping a search is a filesystem decision rather than a configuration one.
What it is
A Python server that indexes your standard operating procedures — PDF and DOCX — and answers questions about them by meaning rather than keyword. It uses ChromaDB for vector storage and a multilingual sentence-transformer model chosen for Italian, so a question asked in Italian finds the right procedure even when the wording differs.
What you get
search_sop_documentssearches with a natural-languagequeryin Italian or English, withmax_results(default 5) and an optionalcategoryfilterget_sop_guidancetakes asituationdescription and returns guidance drawn from the procedures, optionally scoped to one categorylist_sop_categoriesreturns the available categories and collection statistics;get_sop_by_categoryreturns everything in onerefresh_sop_databasereindexes after documents change;get_server_statusreports status and statistics- The server starts fast and indexes on the first tool call rather than at launch
Requirements
Python with a virtual environment and pip install -r requirements.txt. Create a sop_documents/ directory and organise your files into category folders — the folder names become the categories you can filter by. Point your client at your virtualenv's Python running main.py, using absolute paths. The embedding model is sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 by default and downloads on first run; ChromaDB stores its index in chroma_db/ in the project root. Text is chunked at 1000 characters with 200 of overlap.
Setup effort
Build from source — git clone https://github.com/dadapera/mcp-sop-server.git
USE CASES
Finding the right procedure without knowing its name
Describe the situation and let the search match on meaning.
Answering an Italian-language question about process
Ask in Italian and get results from the same multilingual index.
Narrowing a search to one area
List the categories, then search within the one that applies.
Keeping the index current after a document update
Refresh the database rather than restarting the server.
6 tools
Listed in project docs. Your client may show a different list.
get_sop_guidancelist_sop_categoriesget_sop_by_categoryrefresh_sop_databaseget_server_statusBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation.
Requires
- Python 3.11+
- Your own SOP documents (PDF or DOCX)
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/dadapera/mcp-sop-server.git
cd mcp-sop-server
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtOn Windows, activate the environment with venv\Scripts\activate instead, then run the same pip install
Create a sop_documents/ folder in the clone and put your SOP files (PDF or DOCX) in one subfolder per category
MCP Clients
Claude Desktop
{
"mcpServers": {
"sop-server": {
"command": "<YOUR_PATH_TO_VENV>/Scripts/python.exe",
"args": [
"<YOUR_PATH_TO_MCP_SOP_SERVER>/main.py"
],
"cwd": "<YOUR_PATH_TO_MCP_SOP_SERVER>"
}
}
}<YOUR_PATH_TO_MCP_SOP_SERVER> is the full path of your clone, and the command is that clone's virtual-environment Python: venv\Scripts\python.exe on Windows (as written), venv/bin/python on macOS and Linux.