{"id":26641131,"url":"https://github.com/fusedio/fused-mcp","last_synced_at":"2025-08-10T03:32:40.874Z","repository":{"id":283033585,"uuid":"950151416","full_name":"fusedio/fused-mcp","owner":"fusedio","description":"Fused MCP Agents: Setting up MCP Servers for Data Scientists","archived":false,"fork":false,"pushed_at":"2025-04-18T08:47:05.000Z","size":1562,"stargazers_count":25,"open_issues_count":3,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-10T23:04:47.247Z","etag":null,"topics":["data-science","fused","mcp","python","udf"],"latest_commit_sha":null,"homepage":"https://www.fused.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fusedio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-17T17:56:06.000Z","updated_at":"2025-04-27T15:22:00.000Z","dependencies_parsed_at":"2025-04-02T08:20:25.978Z","dependency_job_id":"4cb75a60-b9ad-44fb-84c3-891300ad6ca1","html_url":"https://github.com/fusedio/fused-mcp","commit_stats":null,"previous_names":["fusedio/udf-test","fusedio/fused-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fusedio/fused-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusedio%2Ffused-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusedio%2Ffused-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusedio%2Ffused-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusedio%2Ffused-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fusedio","download_url":"https://codeload.github.com/fusedio/fused-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusedio%2Ffused-mcp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269672003,"owners_count":24457110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-science","fused","mcp","python","udf"],"created_at":"2025-03-24T18:19:51.164Z","updated_at":"2025-08-10T03:32:40.838Z","avatar_url":"https://github.com/fusedio.png","language":"Jupyter Notebook","funding_links":[],"categories":["Code Execution \u0026 Automation MCP Servers","APIs and HTTP Requests"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n   Fused MCP Agents: Setting up MCP Servers for Data\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"/LICENSE\" target=\"_blank\"\u003e\u003cimg src='https://img.shields.io/badge/license-MIT-green?style=for-the-badge' /\u003e\u003c/a\u003e\u0026nbsp;\u003cimg src='https://img.shields.io/badge/Agents-3-green?style=for-the-badge' /\u003e\u0026nbsp;\u003ca href='https://discord.com/invite/Eryz9P2DeY'\u003e\u003cimg src='https://img.shields.io/badge/Fused-udf-d1e550?style=for-the-badge' /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca\n    href=\"https://docs.fused.io/\"\n    target=\"_blank\"\n  \u003e\u003cb\u003eDocumentation\u003c/b\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;🌪️\u0026nbsp;\u0026nbsp;\u0026nbsp;\n   \u003ca\n    href=\"https://docs.fused.io/blog/announcing-fused-ai-builder/\"\n    target=\"_blank\"\n  \u003e\u003cb\u003eRead the announcement\u003c/b\u003e\n \u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;🔥\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca\n    href=\"https://discord.com/invite/Eryz9P2DeY\"\n    target=\"_blank\"\n  \u003e\n    \u003cb\u003eJoin Discord\u003c/b\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n[MCP servers](https://modelcontextprotocol.io/introduction) allow LLMs like Claude to make HTTP requests, connecting them to APIs \u0026 executable code. We built this repo for ourselves \u0026 anyone working with data to easily pass _any_ Python code directly to your own desktop Claude app. \n\n\n\u003ch1 align=\"center\"\u003e\n  \u003ca\n    target=\"_blank\"\n    href=\"https://fused.io\"\n  \u003e\n    \u003cimg\n      align=\"center\"\n      alt=\"UDF AI\"\nsrc=\"https://raw.githubusercontent.com/fusedio/fused-docs/refs/heads/main/blog/2025-04-01-announcing-ai-builder/Fused_AI_Builder_graph.png\"\n      style=\"width:100%;\"\n    /\u003e\n    \n  \u003c/a\u003e\n\u003c/h1\u003e\n\n\n\nThis 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).\n\n![Demo once setup](https://fused-magic.s3.us-west-2.amazonaws.com/udf-mcp-repo/readme_asset/mcp_demo_fused_notebook_2.5x.gif)\n\n## Requirements\n- Python 3.11\n- Latest [Claude Desktop app](https://claude.ai/download) installed (macOS \u0026 Windows)\n\nIf 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!\n\nYou do _not_ need a Fused account to do any of this! All of this will be running on your local machine.\n\n## Installation\n\n- Clone this repo in any local directory, and navigate to the repo: \n\n  ```bash\n  git clone https://github.com/fusedio/fused-mcp.git\n  cd fused-mcp/\n  ```\n\n- Install [`uv`](https://docs.astral.sh/uv/getting-started/installation/)\n  if you don't have it:\n\n  macOS / Linux:\n  ```bash\n  curl -LsSf https://astral.sh/uv/install.sh | sh\n  ```\n\n  Windows:\n  ```\n  powershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n  ```\n\n- Test out the client by asking for its info:\n\n  ```bash\n  uv run main.py -h\n  ```\n\n- 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 \u0026 functions](2.create_your_own_agents.ipynb)\n\n![Notebook](/img/Starting_notebook.gif)\n\n## Repository structure\n\nThis repo is build on top of [MCP Server](https://modelcontextprotocol.io/introduction) \u0026 [Fused UDFs](https://docs.fused.io/core-concepts/write/) which are Python functions that can be run from anywhere.\n\n## Support \u0026 Community\n\nFeel free to join our [Discord server](https://discord.com/invite/BxS5wMzdRk) if you want some help getting unblocked!\n\nHere are a few common steps to debug the setup:\n\n-  Running `uv run main.py -h` should return something like this:\n\n![uv helper output function](/img/uv_run_helper_output.png)\n\n- You might need to pass global paths to some functions to the `Claude_Desktop_Config.json`. For example, by default we only pass `uv`:\n\n```json\n{\n    \"mcpServers\": {\n        \"qgis\": {\n            \"command\": \"uv\",\n            \"args\": [\"...\"]\n        }\n\n    }\n}\n```\n\nBut you might need to pass the full path to `uv`, which you can simply pass to `common.generate_local_mcp_config` in the notebook:\n\n```python\n# in fused_mcp_agents.ipynb\nimport shutil \n\ncommon.generate_local_mcp_config(\n    config_path=PATH_TO_CLAUDE_CONFIG,\n    agents_list = [\"get_current_time\"],\n    repo_path= WORKING_DIR,\n    uv_path=shutil.which('uv'),\n)\n```\n\nWhich would create a config like this:\n\n```json\n{\n    \"mcpServers\": {\n        \"qgis\": {\n            \"command\": \"/Users/\u003cYOUR_USERNAME\u003e/.local/bin/uv\",\n            \"args\": [\"...\"]\n        }\n\n    }\n}\n```\n\n-  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)\n\n## Contribute\n\nFeel free to open PRs to add your own UDFs to `udfs/` so others can play around with them locally too!\n\n## Using a local Claude client (without Claude Desktop app)\n\nIf you are unable to install the Claude Desktop app (e.g., on Linux), we provide\na small example local client interface to use Claude with the MCP server configured\nin this repo:\n\nNOTE: You'll need an API key for Claude here as you won't use the Desktop App\n\n- Create an [Anthropic Console Account](https://console.anthropic.com/)\n- Create an [Anthropic API Key](https://console.anthropic.com/settings/keys)\n\n- Create a `.env`:\n  ```bash\n  touch .env\n  ```\n\n- Add your  key as `ANTHROPIC_API_KEY` inside the `.env`:\n\n  ```\n  # .env\n  ANTHROPIC_API_KEY = \"your-key-here\"\n  ```\n\n- Start the MCP server:\n\n  ```bash\n  uv run main.py --agent get_current_time\n  ```\n\n- In another terminal session, start the local client, pointing to the address of the server:\n\n  ```bash\n  uv run client.py http://localhost:8080/sse\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffusedio%2Ffused-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffusedio%2Ffused-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffusedio%2Ffused-mcp/lists"}