Skip to main content
Glama

Model Context Protocol Server

by arkeodev
README.md4.76 kB
# Search Engine with RAG and MCP A powerful search engine that combines LangChain, Model Context Protocol (MCP), Retrieval-Augmented Generation (RAG), and Ollama to create an agentic AI system capable of searching the web, retrieving information, and providing relevant answers. ## Features - Web search capabilities using the Exa API - Web content retrieval using FireCrawl - RAG (Retrieval-Augmented Generation) for more relevant information extraction - MCP (Model Context Protocol) server for standardized tool invocation - Support for both local LLMs via Ollama and cloud-based LLMs via OpenAI - Flexible architecture supporting direct search, agent-based search, or server mode - Comprehensive error handling and graceful fallbacks - Python 3.13+ with type hints - Asynchronous processing for efficient web operations ## Architecture This project integrates several key components: 1. **Search Module**: Uses Exa API to search the web and FireCrawl to retrieve content 2. **RAG Module**: Embeds documents, chunks them, and stores them in a FAISS vector store 3. **MCP Server**: Provides a standardized protocol for tool invocation 4. **Agent**: LangChain-based agent that uses the search and RAG capabilities ## Project Structure ``` search-engine-with-rag-and-mcp/ ├── LICENSE # MIT License ├── README.md # Project documentation ├── data/ # Data directories ├── docs/ # Documentation │ └── env_template.md # Environment variables documentation ├── logs/ # Log files directory (auto-created) ├── src/ # Main package (source code) │ ├── __init__.py │ ├── core/ # Core functionality │ │ ├── __init__.py │ │ ├── main.py # Main entry point │ │ ├── search.py # Web search module │ │ ├── rag.py # RAG implementation │ │ ├── agent.py # LangChain agent │ │ └── mcp_server.py # MCP server implementation │ └── utils/ # Utility modules │ ├── __init__.py │ ├── env.py # Environment variable loading │ └── logger.py # Logging configuration ├── pyproject.toml # Poetry configuration ├── requirements.txt # Project dependencies └── tests/ # Test directory ``` ## Getting Started ### Prerequisites - Python 3.13+ - [Poetry](https://python-poetry.org/docs/#installation) (optional, for development) - API keys for Exa and FireCrawl - (Optional) Ollama installed locally - (Optional) OpenAI API key ### Installation 1. Clone the repository ```bash git clone https://github.com/yourusername/search-engine-with-rag-and-mcp.git cd search-engine-with-rag-and-mcp ``` 2. Install dependencies ```bash # Using pip pip install -r requirements.txt # Or using poetry poetry install ``` 3. Create a `.env` file (use docs/env_template.md as a reference) ### Usage The application has three main modes of operation: #### 1. Direct Search Mode (Default) ```bash # Using pip python -m src.core.main "your search query" # Or using poetry poetry run python -m src.core.main "your search query" ``` #### 2. Agent Mode ```bash python -m src.core.main --agent "your search query" ``` #### 3. MCP Server Mode ```bash python -m src.core.main --server ``` You can also specify custom host and port: ```bash python -m src.core.main --server --host 0.0.0.0 --port 8080 ``` ### Using Ollama (Optional) To use Ollama for local embeddings and LLM capabilities: 1. Install Ollama: https://ollama.ai/ 2. Pull a model: ```bash ollama pull mistral:latest ``` 3. Set the appropriate environment variables in your `.env` file: ``` OLLAMA_BASE_URL=http://localhost:11434 OLLAMA_MODEL=mistral:latest ``` ## Development This project follows these best practices: - **Code formatting**: Black and isort for consistent code style - **Type checking**: mypy for static type checking - **Linting**: flake8 for code quality - **Testing**: pytest for unit and integration tests - **Environment Management**: python-dotenv for managing environment variables - **Logging**: Structured logging to both console and file ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## Acknowledgements - [LangChain](https://github.com/langchain-ai/langchain) for the agent framework - [Model Context Protocol](https://modelcontextprotocol.io/) for the standardized tool invocation - [Ollama](https://ollama.ai/) for local LLM capabilities - [Exa](https://exa.ai/) for web search capabilities - [FireCrawl](https://firecrawl.dev/) for web content retrieval

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/arkeodev/search-engine-with-rag-and-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server