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.
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).
Requirements
- Python 3.11
- Latest Claude Desktop app installed (macOS & Windows)
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
uvif 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.ipynbin your favorite local IDE to get set up and then make your way to the more advanced notebook to make your own Agents & functions
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 -hshould return something like this:
- You might need to pass global paths to some functions to the
Claude_Desktop_Config.json. For example, by default we only passuv:
{
"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": ["..."]
}
}
}
- If Claude runs without showing any connected tools, take a look at the MCP Docs for troubleshooting the Claude Desktop setup
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_KEYinside 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
Metadata
Release files for iflow-mcp_fusedio_fused-mcp 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iflow_mcp_fusedio_fused_mcp-0.1.2.tar.gz | 9.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iflow_mcp_fusedio_fused_mcp-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.5 kB
Release files / iflow_mcp_fusedio_fused_mcp-0.1.2.tar.gz
| Download URL | iflow_mcp_fusedio_fused_mcp-0.1.2.tar.gz |
|---|---|
| Size | 9.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b9587b5126431fc6ee44f0dc638a6c26664efda7cbb2be1179c2c8ea4edabaf
|
|
BLAKE2b-256 checksum How to use checksums |
a50c4dbf0affbbf765dabde85722a5e98e8b7b03e5ab88aea072400996b57e76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / iflow_mcp_fusedio_fused_mcp-0.1.2-py3-none-any.whl
| Download URL | iflow_mcp_fusedio_fused_mcp-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac1b34f753da2956d999cabe01f79175ea7900a3f3d1ac0d3fee693f22f389ad
|
|
BLAKE2b-256 checksum How to use checksums |
e5ec57160d77738ef3b6f6ebbeb68775324839964ee7e62cfd249e6e6fa76ef5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|