Overview
What is MCP Server?
MCP Server is an implementation of the Model Context Protocol (MCP) that provides tools for AI agents and LLMs — including web search via SearXNG and secure file system operations. It is intended for developers building AI applications that need sandboxed tool access.
How to use MCP Server?
You can deploy MCP Server with Docker (recommended) or install directly using Python 3.13 and the uv package manager. The server is started via the command python -m mcp_server start and can be configured through environment variables or integrated with the Claude Desktop client using a claude_desktop_config.json entry.
Key features of MCP Server
- Web search with customizable parameters via SearXNG
- File system read, write, and list operations
- Extensible architecture for adding custom tools
- Docker and docker-compose deployment support
- Command-line interface for server management
- Full MCP specification support for resources and prompts
Use cases of MCP Server
- AI agents performing web searches with language, time, and category filters
- LLMs reading, writing, or appending to local files under access controls
- Developers prototyping and testing custom MCP tools using FastMCP decorators
- Containerized deployment of an MCP server alongside a SearXNG instance
FAQ from MCP Server
What are the runtime requirements?
Python 3.13 is required, along with MCP SDK ≥ 1.6.0 and the uv package manager. Docker is optional but recommended.
How do I run the server?
You can either build and run the Docker image (docker build -t mcp-server && docker-compose up) or install directly with uv and run python -m mcp_server start.
Does MCP Server include its own search engine?
No. Web search requires a running SearXNG instance. You must provide its URL via the MCP_SEARXNG__INSTANCE_URL environment variable.
What configuration options are available?
The server is configured through environment variables covering host/port (e.g., MCP_SERVER__HOST, MCP_SERVER__PORT), SearXNG settings, log level, and a data directory.
How can I add custom tools?
You can extend the server using the FastMCP decorator approach (@mcp.tool()) or by following the original architecture documented in the developer guide.