Skip to main content

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.

Metadata

Release files for isage-mcp 0.1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for isage-mcp 0.1.0.0
File Size Uploaded Provenance
isage_mcp-0.1.0.0.tar.gz 15.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for isage-mcp 0.1.0.0
File Interpreter ABI Platform
isage_mcp-0.1.0.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 32.9 kB

Release files / isage_mcp-0.1.0.0.tar.gz

Download URL isage_mcp-0.1.0.0.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4490d62386512fed3504f65a7413b23851cb59e3e8fb61b964a74103919c0e16
BLAKE2b-256 checksum
How to use checksums
678ae08c293180be3b98d7aef7328b4b7ef64b55f291b7065cc2cac786ce5f91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / isage_mcp-0.1.0.0-py2.py3-none-any.whl

Download URL isage_mcp-0.1.0.0-py2.py3-none-any.whl
Size 17.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
ac5e76948b0f4e24b10f164781fc070afae0265acf2b799a9610c14ae3b68f6e
BLAKE2b-256 checksum
How to use checksums
fcacde0337b9d9c9ecea4752b3f32705d197bca958f59f79af499927f661a1f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for isage-mcp 0.1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page