MCP SOP Server

MCP SOP Server

Enables AI agents to search and retrieve Standard Operating Procedures using semantic search with Italian language support, powered by ChromaDB and RAG for intelligent document retrieval from categorized SOP collections.

Category
Visit Server

README

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:

    git clone https://github.com/dadapera/mcp-sop-server.git
    cd mcp-sop-server
    
  2. Create and activate virtual environment:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  3. Install Dependencies:

    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):

{
  "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:

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:

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:

{
  "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:

{
  "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:

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

Chunk Size

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

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

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:

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.

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
Qdrant Server

Qdrant Server

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

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
E2B

E2B

Using MCP to run code via e2b.

Official
Featured