Skip to main content
Glama
surya-madhav

MCP Web Tools Server

by surya-madhav
README.md
# MCP Web Tools Server

A Model Context Protocol (MCP) server that provides tools for web-related operations. This server allows LLMs to interact with web content through standardized tools.

## Current Tools

- **web_scrape**: Converts a URL to use r.jina.ai as a prefix and returns the markdown content

## Installation

1. Clone this repository:
   ```bash
   git clone <repository-url>
   cd MCP
   ```

2. Install the required dependencies:
   ```bash
   pip install -r requirements.txt
   ```

   Alternatively, you can use [uv](https://github.com/astral-sh/uv) for faster installation:
   ```bash
   uv pip install -r requirements.txt
   ```

## Running the Server and UI

This repository includes convenient scripts to run either the MCP server or the Streamlit UI.

### Using the Run Scripts

On macOS/Linux:
```bash
# Run the server with stdio transport (default)
./run.sh server

# Run the server with SSE transport
./run.sh server --transport sse --host localhost --port 5000

# Run the Streamlit UI
./run.sh ui
```

On Windows:
```cmd
# Run the server with stdio transport (default)
run.bat server

# Run the server with SSE transport
run.bat server --transport sse --host localhost --port 5000

# Run the Streamlit UI
run.bat ui
```

### Running Manually

Alternatively, you can run the server directly:

#### Using stdio (default)

```bash
python server.py
```

#### Using SSE

```bash
python server.py --transport sse --host localhost --port 5000
```

This will start an HTTP server on `localhost:5000` that accepts MCP connections.

And to run the Streamlit UI manually:

```bash
streamlit run streamlit_app.py
```

## Testing with MCP Inspector

The MCP Inspector is a tool for testing and debugging MCP servers. You can use it to interact with your server:

1. Install the MCP Inspector:
   ```bash
   npm install -g @modelcontextprotocol/inspector
   ```

2. Run the Inspector with your server:
   ```bash
   npx @modelcontextprotocol/inspector python server.py
   ```

3. Use the Inspector interface to test the `web_scrape` tool by providing a URL like `example.com` and viewing the returned markdown content.

## Integrating with Claude for Desktop

To use this server with Claude for Desktop:

1. Make sure you have [Claude for Desktop](https://claude.ai/download) installed.

2. Open the Claude for Desktop configuration file:
   - Mac: `~/Library/Application Support/Claude/claude_desktop_config.json`
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`

3. Add the following configuration (adjust the path as needed):

```json
{
  "mcpServers": {
    "web-tools": {
      "command": "python",
      "args": [
        "/absolute/path/to/MCP/server.py"
      ]
    }
  }
}
```

4. Restart Claude for Desktop.

5. You should now see the web_scrape tool available in Claude's interface. You can ask Claude to fetch content from a website, and it will use the tool.

## Example Usage

Once integrated with Claude, you can ask questions like:

- "What's on the homepage of example.com?"
- "Can you fetch and summarize the content from mozilla.org?"
- "Get the content from wikipedia.org/wiki/Model_Context_Protocol and explain it to me."

Claude will use the web_scrape tool to fetch the content and provide it in its response.

## Adding More Tools

To add more tools to this server:

1. Create a new Python file in the `tools/` directory, e.g., `tools/new_tool.py`.

2. Implement your tool function, following a similar pattern to the existing tools.

3. Import your tool in `server.py` and register it with the MCP server:

```python
# Import your new tool
from tools.new_tool import new_tool_function

# Register the tool with the MCP server
@mcp.tool()
async def new_tool(param1: str, param2: int) -> str:
    """
    Description of what your tool does.
    
    Args:
        param1: Description of param1
        param2: Description of param2
        
    Returns:
        Description of return value
    """
    return await new_tool_function(param1, param2)
```

4. Restart the server to apply the changes.

## Streamlit UI

This repository includes a Streamlit application that allows you to connect to and test all your MCP servers configured in Claude for Desktop.

### Running the Streamlit UI

```bash
streamlit run streamlit_app.py
```

This will start the Streamlit server and open a web browser with the UI.

### Features

- Load and parse your Claude for Desktop configuration file
- View all configured MCP servers
- Connect to any server and view its available tools
- Test tools by providing input parameters and viewing results
- See available resources and prompts

### Usage

1. Start the Streamlit app
2. Enter the path to your Claude for Desktop configuration file (default path is pre-filled)
3. Click "Load Servers" to see all available MCP servers
4. Select a server tab and click "Connect" to load its tools
5. Select a tool and provide the required parameters
6. Click "Execute" to run the tool and see the results

## Troubleshooting

- **Missing dependencies**: Make sure all dependencies in `requirements.txt` are installed.
- **Connection issues**: Check that the server is running and the configuration in Claude for Desktop points to the correct path.
- **Tool execution errors**: Look for error messages in the server output.
- **Streamlit UI issues**: Make sure Streamlit is properly installed and the configuration file path is correct.

## License

This project is available under the MIT License. See the LICENSE file for more details.