Metadata-Version: 2.4
Name: mcp-blender
Version: 0.1.0
Summary: Easily manage, compose, and route MCP servers in Python projects
Project-URL: Homepage, https://github.com/brnv/mcp-blender
Author-email: Artem <brnv@canva.com>
License-Expression: MIT
License-File: LICENSE
Keywords: ai,llm,manager,mcp,model-context-protocol,server
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Requires-Dist: pyyaml>=6.0
Description-Content-Type: text/markdown

# mcp-blender

Easily manage, compose, and route MCP (Model Context Protocol) servers in Python projects.

## Installation

```bash
pip install mcp-blender
```

## Usage

### Registry — manage servers

```python
from mcp_blender import MCPServer, ServerTransport, Registry

reg = Registry()

reg.add(MCPServer(
    name="filesystem",
    command="npx",
    args=["-y", "@modelcontextprotocol/server-filesystem", "/home/user"],
    tools=["read_file", "write_file", "list_directory"],
    tags=["io"],
))

reg.add(MCPServer(
    name="github",
    command="npx",
    args=["-y", "@modelcontextprotocol/server-github"],
    env={"GITHUB_TOKEN": "ghp_xxx"},
    tools=["search_repositories", "create_issue"],
    tags=["code"],
))

# Load from claude_desktop_config.json
reg.load_claude_config("~/.claude/claude_desktop_config.json")

# Or from YAML
reg.load_yaml("mcp-servers.yaml")
```

### Blender — profiles for different contexts

```python
from mcp_blender import Blender

blend = Blender()
blend.register(filesystem_server)
blend.register(github_server)
blend.register(slack_server)

blend.create_profile("coding", ["filesystem", "github"])
blend.create_profile("comms", ["slack"])

blend.activate("coding")   # starts filesystem + github
blend.activate("comms")    # stops coding servers, starts slack
```

### Router — route tool calls

```python
from mcp_blender import Router

router = Router(reg)
server = router.resolve("read_file")  # → filesystem server
print(router.all_tools())
```

### CLI

```bash
mcp-blender list servers.yaml
mcp-blender export servers.yaml -o claude_desktop_config.json
mcp-blender import claude_desktop_config.json -o servers.yaml
```

## License

MIT
