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
- Host: GitHub
- URL: https://github.com/fusedio/fused-mcp
- Owner: fusedio
- License: mit
- Created: 2025-03-17T17:56:06.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-04-18T08:47:05.000Z (2 months ago)
- Last Synced: 2025-04-18T21:39:32.938Z (2 months ago)
- Topics: data-science, fused, mcp, python, udf
- Language: Jupyter Notebook
- Homepage: https://www.fused.io
- Size: 1.49 MB
- Stars: 23
- Watchers: 2
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- mcp-index - Fused MCP Agents - Connects large language models (LLMs) to APIs and executable Python code, facilitating local data science workflows. Provides a user-friendly notebook guide to create agents and functions efficiently. (APIs and HTTP Requests)
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.
![]()
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).

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

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

- 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 shutilcommon.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
```