Skip to main content

SAGE MCP Aggregator — unified MCP server for all SAGE Zoo packages

Project description

isage-mcp — SAGE Unified MCP Server

PyPI Python

One MCP server for all SAGE Zoo packages. Install once, configure once — get web search, RAG, agentic tools, and more in any MCP-compatible AI client.

Quick Start

# Install with all available zoo packages
pip install 'isage-mcp[all]'

# Start the server (stdio — for Claude Desktop)
sage-mcp

# Or HTTP/SSE — for VS Code Copilot, Cursor, etc.
sage-mcp --transport sse --port 9000

See which zoo packages are loaded:

sage-mcp --list-plugins
# Installed SAGE MCP plugins (1):
#   • sage_tools

Client Configuration

Claude Desktop

{
  "mcpServers": {
    "sage": {
      "command": "sage-mcp"
    }
  }
}

VS Code Copilot (settings.json)

"mcp": {
  "servers": {
    "sage": {
      "type": "sse",
      "url": "http://localhost:9000/sse"
    }
  }
}

Cursor / OpenHands / other MCP clients

Same pattern — use sage-mcp as the command (stdio) or point at the SSE URL.

Available Zoo Packages

Package Install Tools exposed
isage-tools pip install 'isage-tools[mcp]' duckduckgo_search, arxiv_search, arxiv_paper_search, url_text_extract, nature_news_fetch
isage-rag pip install 'isage-rag[mcp]' rag_search, index_document (coming soon)
isage-agentic pip install 'isage-agentic[mcp]' run_agent, run_react_loop (coming soon)

How the Plugin System Works

sage-mcp supports two registration modes. New packages should use Mode 1.

Mode 1 — Auto (recommended, zero MCP code needed)

Add ONE line to pyproject.toml pointing at your tools module:

[project.entry-points."sage.mcp.modules"]
my_package = "my_package.tools"   # ← that's it

sage-mcp scans the module for all BaseTool subclasses and auto-wraps each one using the existing tool_name, tool_description, and execute() signature. No MCP-specific code is needed in the package at all.

Mode 2 — Explicit (for hand-crafted descriptions / advanced control)

Write a register_tools(mcp) function and declare it:

[project.entry-points."sage.mcp.tools"]
my_package = "my_package.mcp_server:register_tools"
def register_tools(mcp):
    @mcp.tool()
    async def my_tool(query: str, max_results: int = 5) -> list:
        """Custom hand-written description shown to the AI."""
        ...

If a package appears in both groups, explicit takes precedence (no double-registration).

What auto-wrapping does

For each BaseTool subclass found:

  • tool_name → MCP tool name (normalised to snake_case)
  • tool_description → MCP tool description shown to the AI
  • execute(query: str, max_results: int = 5) → MCP parameter schema (type hints + defaults preserved)
  • Async execute → async MCP tool; sync → sync tool

Architecture

sage-mcp (aggregator)
  │
  ├── sage.mcp.tools  (explicit — package writes register_tools)
  │      └── sage_tools → sage.tools.mcp_server:register_tools
  │
  └── sage.mcp.modules  (auto — no MCP code in package)
         └── sage_rag    → scan "sage.rag" for BaseTool subclasses
             sage_agentic → scan "sage.agentic" for BaseTool subclasses
             ...

If a package appears in both groups, the explicit path wins (no double-registration).

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

isage_mcp-0.1.0.0.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isage_mcp-0.1.0.0-py2.py3-none-any.whl (17.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file isage_mcp-0.1.0.0.tar.gz.

File metadata

  • Download URL: isage_mcp-0.1.0.0.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for isage_mcp-0.1.0.0.tar.gz
Algorithm Hash digest
SHA256 4490d62386512fed3504f65a7413b23851cb59e3e8fb61b964a74103919c0e16
MD5 3165174dd5ab4767b7cbbc2b95d2ba2d
BLAKE2b-256 678ae08c293180be3b98d7aef7328b4b7ef64b55f291b7065cc2cac786ce5f91

See more details on using hashes here.

File details

Details for the file isage_mcp-0.1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: isage_mcp-0.1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for isage_mcp-0.1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ac5e76948b0f4e24b10f164781fc070afae0265acf2b799a9610c14ae3b68f6e
MD5 5661a824690e1facf1ba4f23e4eca826
BLAKE2b-256 fcacde0337b9d9c9ecea4752b3f32705d197bca958f59f79af499927f661a1f1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page