mcpField
M
MCP Server

MCP Server

Local
github.com/avinash539Search0Updated 82w ago

About MCP Server

An MCP server implementation for developers providing AI agents and LLMs with search and file operations. It uses SearXNG for web search and offers two architectures for adding custom tools.

Key features

  1. 01Search the web through SearXNG
  2. 02Read, write, and manage files securely
  3. 03Add custom tools
  4. 04Deploy with Docker and manage via CLI
  5. 05Support MCP resources and prompts

Use cases

  1. 01Let an AI agent search the web with filters
  2. 02Read and write project files or list directories
  3. 03Add a specialized tool using FastMCP

MCP support

As an MCP server, it exposes web search and file system tools to clients, along with support for resources and prompts.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"avinash539": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
Run commanddocker run -i --rm build

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
ocibuild

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

MCP Server

A Model Context Protocol (MCP) server implementation that provides various tools for AI agents and LLMs, including search capabilities powered by SearXNG and file system operations.

Features

  • Web Search: Perform web searches with customizable parameters using SearXNG
  • File System Operations: Read, write, and manage files with security controls
  • Extensible Architecture: Add custom tools following the MCP protocol
  • Docker Support: Easy deployment with Docker and docker-compose
  • Command-line Interface: Simple management through CLI
  • Resources and Prompts: Full MCP specification support for resources and prompts

Requirements

  • Python 3.13 (required)
  • MCP SDK ≥ 1.6.0
  • UV package manager for dependency management
  • Docker (optional, for containerized deployment)

Implementation Approaches

This project demonstrates two approaches to implementing MCP servers:

1. FastMCP Decorator Approach (Recommended)

The simplified approach using FastMCP decorators in mcp_server/server.py:

from mcp.server.fastmcp import FastMCP

# Create server
mcp = FastMCP("MCP Server")

# Add a tool using decorator
@mcp.tool()
def search(query: str, num_results: int = 5) -> dict:
    """Search the web"""
    # Implementation...
    return results

# Add a resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a greeting"""
    return f"Hello, {name}!"

# Add a prompt
@mcp.prompt()
def search_prompt(query: str) -> str:
    """Create a search prompt"""
    return f"Please search for: {query}"
2. Original Architecture (Advanced)

The original architecture in mcp_server/core/ provides a more complex implementation with:

  • ToolRegistry for managing tool registration
  • MCPTool abstract base class for tool implementation
  • Singleton MCPServer for server management

This approach offers more flexibility for complex applications but requires more boilerplate code.

Tools

search

Execute web searches through SearXNG with customizable filtering.

Inputs:

  • query (string): Search terms
  • num_results (number, optional): Number of results to return (default: 5, max: 20)
  • language (string, optional): Language code for results (e.g., "en", "fr")
  • time_range (string, optional): Time range for results (day, week, month, year)
  • search_category (string, optional): Category to search in (general, images, news, videos)
filesystem

Read, write, and manage files with secure access controls.

Operations:

  • Read File

    • path (string): Path to the file to read
    • encoding (string, optional): Encoding to use (default: "utf-8")
    • binary (boolean, optional): Whether to read in binary mode (default: false)
  • Write File

    • path (string): Path to write the file
    • content (string): Content to write
    • encoding (string, optional): Encoding to use (default: "utf-8")
    • binary (boolean, optional): Whether to write in binary mode (default: false)
    • append (boolean, optional): Whether to append to file (default: false)
  • List Files

    • path (string, optional): Directory to list (default: current directory)
    • recursive (boolean, optional): Whether to list recursively (default: false)
    • pattern (string, optional): Pattern to match filenames

Configuration

Environment Variables

Configure your MCP server using environment variables:

# Server settings
MCP_SERVER__HOST=0.0.0.0
MCP_SERVER__PORT=8000

# SearXNG settings
MCP_SEARXNG__INSTANCE_URL=http://localhost:8080
MCP_SEARXNG__TIMEOUT=5

# Logging settings
MCP_LOG__LEVEL=INFO

# Data directory
MCP_DATA_DIR=./data
Usage with Claude Desktop
Option 1: Install Simple Example Server
# Install the simple example server directly
mcp install examples/server.py

# Or test with the MCP Inspector
mcp dev examples/server.py
Option 2: Docker Configuration

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "8000:8000",
        "-e",
        "MCP_SEARXNG__INSTANCE_URL=http://host.docker.internal:8080",
        "mcp-server"
      ]
    }
  }
}

You'll need to run a SearXNG instance separately:

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "8080:8080",
        "-e", 
        "BASE_URL=http://localhost:8080/",
        "searxng/searxng"
      ]
    }
  }
}

Installation

Docker (Recommended)
# Build the Docker image
docker build -t mcp-server .

# Run the server and SearXNG
docker-compose up
Direct Installation
# Ensure you have Python 3.13 installed
python --version  # Should show Python 3.13.x

# Install uv if you don't have it
pip install uv

# Create a virtual environment and install dependencies
uv venv --python=python3.13
uv install

# Run the server
python -m mcp_server start

Client Examples

See the examples/ directory for client examples:

  • examples/client.py: Modern client using ClientSession API
  • examples/simple_client.py: Simple client using direct API calls

Extending with Custom Tools

Using the FastMCP Approach
from mcp_server.server import mcp

@mcp.tool()
def my_custom_tool(param1: str, param2: int = 10) -> dict:
    """My custom tool description"""
    # Implement tool functionality
    return {"result": f"Processed {param1} with {param2}"}
Using the Original Architecture

See the Developer Guide for instructions on adding custom tools with the original architecture.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

Command to run the project

python -m mcp_server start --config config.env

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.