trackmcp
Back to directory
dadapera

mcp-sop-server

View on GitHub

A Model Context Protocol (MCP) server for accessing and searching Standard Operating Procedures (SOPs) with Italian language support.

0 stars PythonOthers Updated Jun 21, 2025

Documentation

MCP SOP Server

A Model Context Protocol (MCP) server for accessing and searching Standard Operating Procedures (SOPs) with Italian language support.

Overview

This MCP server provides AI agents with the ability to:

  • Search through your company's SOP documentation using semantic search
  • Retrieve relevant procedures based on specific situations
  • Browse SOPs by category
  • Get guidance on what to do in specific scenarios

The server uses:

  • ChromaDB for vector storage and semantic search
  • Sentence Transformers with multilingual models for Italian language support
  • FastMCP for the MCP server implementation
  • RAG (Retrieval Augmented Generation) for intelligent document retrieval

Features

  • ๐Ÿ‡ฎ๐Ÿ‡น Italian Language Support: Uses multilingual embeddings optimized for Italian text
  • ๐Ÿ“„ Multi-format Support: Processes PDF and DOCX documents
  • ๐Ÿ” Semantic Search: Find relevant SOPs based on meaning, not just keywords
  • ๐Ÿ“ Category Filtering: Search within specific SOP categories
  • ๐Ÿค– AI-Ready: Provides structured responses perfect for LLM consumption
  • โšก Fast Retrieval: Efficient vector-based search with ChromaDB
  • ๐Ÿš€ Lazy Initialization: Server starts quickly, documents are indexed on first request

Installation

1. Clone the repository:

bash
git clone https://github.com/dadapera/mcp-sop-server.git
   cd mcp-sop-server

2. Create and activate virtual environment:

bash
python -m venv venv

   # On Windows
   venv\Scripts\activate

   # On macOS/Linux
   source venv/bin/activate

3. Install Dependencies:

bash
pip install -r requirements.txt

4. Add your SOP documents:

Create a `sop_documents/` directory and organize your SOP files by category folders.

Configuration

MCP Client Setup

To use this server with Claude Desktop or other MCP clients, add it to your MCP client configuration:

For Claude Desktop (`mcp-client-config.json`):

json
{
  "mcpServers": {
    "sop-server": {
      "command": "/path/to/your/venv/Scripts/python.exe",
      "args": ["/path/to/your/mcp-sop-server/main.py"],
      "cwd": "/path/to/your/mcp-sop-server"
    }
  }
}

> Note: Make sure to use the full path to your virtual environment's Python executable and adjust paths according to your system.

Directory Structure

The server expects SOP documents to be organized as follows:

code
sop_documents/
โ”œโ”€โ”€ SOP01 Quality System Documentation Management/
โ”‚   โ”œโ”€โ”€ document1.pdf
โ”‚   โ””โ”€โ”€ document2.docx
โ”œโ”€โ”€ SOP02 HR management/
โ”‚   โ””โ”€โ”€ hr_procedures.pdf
โ”œโ”€โ”€ SOP03 Design/
โ”‚   โ””โ”€โ”€ design_process.docx
โ””โ”€โ”€ ...

Usage

Starting the Server

The server is typically started automatically by your MCP client (like Claude Desktop). If running manually:

bash
python main.py

The server will:

1. Start quickly and wait for connections

2. On first tool call: scan all SOP documents in the `sop_documents/` directory

3. Process and extract text from PDF and DOCX files

4. Generate embeddings using the multilingual model

5. Store everything in ChromaDB for fast retrieval

Available Tools

The server provides the following MCP tools:

1. `search_sop_documents`

Search for relevant SOP content using natural language queries.

Parameters:

  • `query` (string): Search query in Italian or English
  • `max_results` (int, optional): Maximum results to return (default: 5)
  • `category` (string, optional): Filter by SOP category

Example:

json
{
  "query": "Come gestire una non conformitร  nel processo di produzione",
  "max_results": 3,
  "category": "SOP05 Non Conformity"
}

2. `get_sop_guidance`

Get specific guidance for a situation based on SOP documents.

Parameters:

  • `situation` (string): Description of the situation
  • `category` (string, optional): Focus search on specific category

Example:

json
{
  "situation": "Un cliente ha segnalato un difetto nel prodotto consegnato",
  "category": "SOP05 Non Conformity"
}

3. `list_sop_categories`

Get all available SOP categories and collection statistics.

4. `get_sop_by_category`

Retrieve all SOPs within a specific category.

Parameters:

  • `category` (string): SOP category name

5. `refresh_sop_database`

Refresh the document database (use when SOPs are updated).

6. `get_server_status`

Get current server status and statistics.

Technical Configuration

Embedding Model

The server uses `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` by default for Italian language support. You can change this in `src/mcp_sop_server/document_searcher.py`:

python
model_name = "sentence-transformers/your-preferred-model"

Chunk Size

Text chunking can be adjusted in `src/mcp_sop_server/document_processor.py`:

python
def chunk_text(self, text: str, chunk_size: int = 1000, overlap: int = 200):

Database Location

ChromaDB storage location is automatically set to `chroma_db/` in the project root.

Example Queries

Here are some example queries you can use:

Italian:

  • "Come gestire una non conformitร ?"
  • "Procedura per la manutenzione dell'infrastruttura"
  • "Cosa fare in caso di audit interno?"
  • "Gestione del magazzino e inventario"

English:

  • "How to handle quality issues?"
  • "Software development lifecycle procedures"
  • "Risk management protocols"
  • "Employee training requirements"

Troubleshooting

Common Issues

1. No documents found: Ensure SOP documents are in the correct directory structure

2. Embedding model download: First run may take time to download the multilingual model

3. Memory usage: Large document collections may require more RAM for embedding generation

4. Path issues: Make sure to use absolute paths in your MCP client configuration

Logs

The server provides detailed logging with emojis for better readability:

  • ๐Ÿš€ Server startup and initialization
  • ๐Ÿ“„ Document processing status
  • ๐Ÿ“Š Processing statistics
  • โœ… Success messages
  • โŒ Error messages

Check the console output or your MCP client logs for detailed information.

Development

Project Structure

code
mcp-sop-server/
โ”œโ”€โ”€ src/mcp_sop_server/          # Main package
โ”‚   โ”œโ”€โ”€ __init__.py              # Package initialization
โ”‚   โ”œโ”€โ”€ mcp_server.py            # FastMCP server and tools
โ”‚   โ”œโ”€โ”€ document_processor.py    # Document text extraction
โ”‚   โ””โ”€โ”€ document_searcher.py     # Vector search with ChromaDB
โ”œโ”€โ”€ main.py                      # Entry point
โ”œโ”€โ”€ requirements.txt             # Dependencies
โ”œโ”€โ”€ test_server.py              # Server testing
โ”œโ”€โ”€ mcp-client-config.json      # Example client configuration
โ””โ”€โ”€ README.md                   # This file

Adding New Document Types

To support additional file formats, extend the `DocumentProcessor` class:

python
def extract_text_from_new_format(self, file_path: Path) -> str:
    # Implementation for new format
    pass

Custom Search Logic

Modify the `DocumentSearcher` class to implement custom search algorithms or filters.

Additional Tools

Add new MCP tools by defining them with the `@mcp.tool()` decorator in `mcp_server.py`.

License

This project is intended for internal company use for accessing SOP documentation.

Support

For issues or questions about the SOP MCP server, create an issue on the GitHub repository.

Frequently asked questions

What is mcp-sop-server?

mcp-sop-server is A Model Context Protocol (MCP) server for accessing and searching Standard Operating Procedures (SOPs) with Italian language support.

How do I install mcp-sop-server?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is mcp-sop-server open source?

Yes โ€” it is hosted on GitHub at https://github.com/dadapera/mcp-sop-server.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP