Skip to main content

Fused MCP: Setting up MCP Servers for Data Scientists

Project description

Fused MCP Agents: Setting up MCP Servers for Data

  

Documentation   🌪️    Read the announcement    🔥    Join Discord

MCP servers 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 with Claude's Desktop App, all in Python built on top of Fused User Defined Functions (UDFs).

Demo once setup

Requirements

If you're on Linux, the desktop app isn't available so we've made a simple client 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:

    git clone https://github.com/fusedio/fused-mcp.git
    cd fused-mcp/
    
  • Install uv if you don't have it:

    macOS / Linux:

    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:

    uv run main.py -h
    
  • Start by following our getting-started notebook 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

Notebook

Repository structure

This repo is build on top of MCP Server & Fused UDFs which are Python functions that can be run from anywhere.

Support & Community

Feel free to join our Discord server 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

  • You might need to pass global paths to some functions to the Claude_Desktop_Config.json. For example, by default we only pass uv:
{
    "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:

# 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:

{
    "mcpServers": {
        "qgis": {
            "command": "/Users/<YOUR_USERNAME>/.local/bin/uv",
            "args": ["..."]
        }

    }
}

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

  • Create an Anthropic API Key

  • Create a .env:

    touch .env
    
  • Add your key as ANTHROPIC_API_KEY inside the .env:

    # .env
    ANTHROPIC_API_KEY = "your-key-here"
    
  • Start the MCP server:

    uv run main.py --agent get_current_time
    
  • In another terminal session, start the local client, pointing to the address of the server:

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_fusedio_fused_mcp-0.1.2.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iflow_mcp_fusedio_fused_mcp-0.1.2-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file iflow_mcp_fusedio_fused_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: iflow_mcp_fusedio_fused_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_fusedio_fused_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7b9587b5126431fc6ee44f0dc638a6c26664efda7cbb2be1179c2c8ea4edabaf
MD5 0427a40fdbc5deccf3b1a129e1c1061c
BLAKE2b-256 a50c4dbf0affbbf765dabde85722a5e98e8b7b03e5ab88aea072400996b57e76

See more details on using hashes here.

File details

Details for the file iflow_mcp_fusedio_fused_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_fusedio_fused_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_fusedio_fused_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ac1b34f753da2956d999cabe01f79175ea7900a3f3d1ac0d3fee693f22f389ad
MD5 79302883672ea33dab887f4b3f9e79e3
BLAKE2b-256 e5ec57160d77738ef3b6f6ebbeb68775324839964ee7e62cfd249e6e6fa76ef5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page