fused mcp
A Python-based MCP server that allows Claude and other LLMs to execute arbitrary Python code directly through your desktop Claude app, enabling data scientists to connect LLMs to APIs and executable code.
A Python-based MCP server that allows Claude and other LLMs to execute arbitrary Python code directly through your desktop Claude app, enabling data scientists to connect LLMs to APIs and executable code.
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).
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.
git clone https://github.com/fusedio/fused-mcp.git
cd fused-mcp/
uv
if you Do not 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"
uv run main.py -h
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 & functionsThis repo is build on top of MCP Server & Fused UDFs which are Python functions that can be run from anywhere.
Feel free to join our Discord server if you want some help getting unblocked!
Here are a few common steps to debug the setup:
uv run main.py -h
should return something like this: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": ["..."]
}
}
}
Feel free to open PRs to add your own UDFs to udfs/
so others can play around with them locally too!
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 will not use the Desktop App
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"
uv run main.py --agent get_current_time
uv run client.py http://localhost:8080/sse