Skip to main content
Glama
mlstudios-ai

MCP Mix Server

by mlstudios-ai
README.md
# MCP Server/Client Example
The server is a modified implementation following tutorial from <a href="https://medium.com/data-engineering-with-dremio/building-a-basic-mcp-server-with-python-4c34c41031ed">Medium by Alex Merced</a>. 

The custom client is an implementation from Anthropic quickstart tutorial <a src="https://modelcontextprotocol.io/quickstart/client">Build an MCP Client</a>.


# MCP Server
Navigate to your project directory, run these commands in the terminal. 
```
source .venv/bin/activate

uv --directory . run mcp_server/main.py
```
NOTE: There are no outputs from the terminal - it's normal.

# MCP Client
## Claude Desktop
On MacOS or Linx, add the following entry to <code>~/Library/Application Support/Claude/claude_desktop_config.json</code>

For Windows, add the following entry to <code>%APPDATA%\Claude\claude_desktop_config.json</code>

```
{
  "mcpServers": {
    "mcp-mix-server": {
      "command": "uv",
      "args": [
        "--directory",
        "{ABSOLUTE_PATH}/mcp-mix-server",
        "run",
        "mcp_server/main.py"
      ]
    }
  }
}
```

### Verify server registery
1. Click on "Searches and tools" option.
<image src="./images/claude-desktop-mcp-server-registry.png"></image>
2. Click on "mcp-mix-server", you should see the listed tools
<image src="./images/claude-desktop-mcp-tools.png"></image>
3. Test with the following queries:
    - “Summarize the CSV file named sample.csv.”
    - “How many rows are in sample.parquet?”

## Custom MCP client
Alternatively, use a custom client in <code>mcp_client/</code> implemented following the Anthropic quickstart tutorial <a src="https://modelcontextprotocol.io/quickstart/client">Build an MCP Client</a>.

Create a <code>.env</code> file in the root folder and put your Athropic API access key in there. To obtain the API access key, login your Anthropic account and following instructions.

```
ANTHROPIC_API_KEY=<your_api_access_key>
```

You can always use your own reasoning model. But this repo is very basic to demonstrate how MCP Server/Client works so we stick with Claude.

When starting the client, it will automatically start the server in <code>stdio</code> transport mode. This means the client access the server locally, not remotely, which uses SSE transport mode. There is no need run the server script separately.

To run the custom client:

```
uv run mcp_client/client.py mcp_server/main.py
```
Test with the following queries:
- “Summarize the CSV file named sample.csv.”
- “How many rows are in sample.parquet?”
- or type "quit" to exit

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one handles CSV files and the other handles Parquet files. There is no overlap or ambiguity in their functionality, as each is specialized for a different file format.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern with 'summarize' as the verb and the file type as the noun (csv_file, parquet_file). The naming is perfectly uniform and predictable across the set.

Tool Count2/5

With only 2 tools, the server feels thin for a 'Mix Server' that implies broader data processing capabilities. The scope is limited to summarizing two specific file formats, which may not justify the server's name or provide comprehensive coverage for data analysis tasks.

Completeness2/5

The tool surface is severely incomplete for data processing. It only offers summarization for CSV and Parquet files, lacking essential operations like reading, writing, filtering, transforming, or handling other common formats (e.g., JSON, Excel). This will likely cause agent failures in broader workflows.