An open API service indexing awesome lists of open source software.

https://github.com/fusedio/fused-mcp

Fused MCP Agents: Setting up MCP Servers for Data Scientists
https://github.com/fusedio/fused-mcp

data-science fused mcp python udf

Last synced: 10 days ago
JSON representation

Fused MCP Agents: Setting up MCP Servers for Data Scientists

Awesome Lists containing this project

README

        


Fused MCP Agents: Setting up MCP Servers for Data


  


Documentation   🌪️   
Read the announcement
   🔥   

Join Discord

[MCP servers](https://modelcontextprotocol.io/introduction) allow LLMs like Claude to make HTTP requests, connecting them to APIs & executable code. We built this repo for ourselves & anyone working with data to easily pass _any_ Python code directly to your own desktop Claude app.



UDF AI


This repo offers a simple step-by-step notebook workflow to setup [MCP Servers](https://modelcontextprotocol.io/introduction) with Claude's Desktop App, all in Python built on top of Fused [User Defined Functions](https://docs.fused.io/core-concepts/write/) (UDFs).

![Demo once setup](https://fused-magic.s3.us-west-2.amazonaws.com/udf-mcp-repo/readme_asset/mcp_demo_fused_notebook_2.5x.gif)

## Requirements
- Python 3.11
- Latest [Claude Desktop app](https://claude.ai/download) installed (macOS & Windows)

If you're on Linux, the desktop app isn't available so [we've made a simple client](#using-a-local-claude-client-without-claude-desktop-app) you can use to have it running locally too!

You do _not_ need a Fused account to do any of this! All of this will be running on your local machine.

## Installation

- Clone this repo in any local directory, and navigate to the repo:

```bash
git clone https://github.com/fusedio/fused-mcp.git
cd fused-mcp/
```

- Install [`uv`](https://docs.astral.sh/uv/getting-started/installation/)
if you don't have it:

macOS / Linux:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

Windows:
```
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

- Test out the client by asking for its info:

```bash
uv run main.py -h
```

- Start by following our getting-started notebook [`fused_mcp_agents.ipynb`](1.fused_mcp_agents.ipynb) in your favorite local IDE to get set up and then make your way to the more advanced notebook to [make your own Agents & functions](2.create_your_own_agents.ipynb)

![Notebook](/img/Starting_notebook.gif)

## Repository structure

This repo is build on top of [MCP Server](https://modelcontextprotocol.io/introduction) & [Fused UDFs](https://docs.fused.io/core-concepts/write/) which are Python functions that can be run from anywhere.

## Support & Community

Feel free to join our [Discord server](https://discord.com/invite/BxS5wMzdRk) if you want some help getting unblocked!

Here are a few common steps to debug the setup:

- Running `uv run main.py -h` should return something like this:

![uv helper output function](/img/uv_run_helper_output.png)

- You might need to pass global paths to some functions to the `Claude_Desktop_Config.json`. For example, by default we only pass `uv`:

```json
{
"mcpServers": {
"qgis": {
"command": "uv",
"args": ["..."]
}

}
}
```

But you might need to pass the full path to `uv`, which you can simply pass to `common.generate_local_mcp_config` in the notebook:

```python
# in fused_mcp_agents.ipynb
import shutil

common.generate_local_mcp_config(
config_path=PATH_TO_CLAUDE_CONFIG,
agents_list = ["get_current_time"],
repo_path= WORKING_DIR,
uv_path=shutil.which('uv'),
)
```

Which would create a config like this:

```json
{
"mcpServers": {
"qgis": {
"command": "/Users//.local/bin/uv",
"args": ["..."]
}

}
}
```

- If Claude runs without showing any connected tools, take a look at the [MCP Docs for troubleshooting the Claude Desktop setup](https://modelcontextprotocol.io/quickstart/server#claude-for-desktop-integration-issues)

## Contribute

Feel free to open PRs to add your own UDFs to `udfs/` so others can play around with them locally too!

## Using a local Claude client (without Claude Desktop app)

If you are unable to install the Claude Desktop app (e.g., on Linux), we provide
a small example local client interface to use Claude with the MCP server configured
in this repo:

NOTE: You'll need an API key for Claude here as you won't use the Desktop App

- Create an [Anthropic Console Account](https://console.anthropic.com/)
- Create an [Anthropic API Key](https://console.anthropic.com/settings/keys)

- Create a `.env`:
```bash
touch .env
```

- Add your key as `ANTHROPIC_API_KEY` inside the `.env`:

```
# .env
ANTHROPIC_API_KEY = "your-key-here"
```

- Start the MCP server:

```bash
uv run main.py --agent get_current_time
```

- In another terminal session, start the local client, pointing to the address of the server:

```bash
uv run client.py http://localhost:8080/sse
```