Skip to content

Add per-server and per-tool allowlists to the generic MCP bridge #2134

@vaddisrinivas

Description

@vaddisrinivas

Problem

The generic MCP bridge exposes mcp_list_servers, mcp_list_tools, and mcp_call_tool. That is useful, but too broad for locked-down profile/runtime deployments because a model can potentially call any tool exposed by a configured server.

Generic use case

Profiles and managed deployments can expose a remote MCP server while allowing only specific tools, argument shapes, or risk classes. This supports safer MCP adoption without requiring one bespoke Rust wrapper per MCP tool.

Managed-runtime use case

A compiled runtime contract can declare exactly which MCP server/tool pairs are allowed. The runtime rejects undeclared MCP calls before network dispatch and can prove no raw write-capable MCP surface is visible.

Proposed shape

  • Extend MCP server config with include/exclude lists or a policy callback.
  • Enforce allowlists in mcp_list_tools and mcp_call_tool.
  • Add denial messages that tell the model which server/tool pair was blocked.
  • Include allowlist state in diagnostics.

Acceptance criteria

Alignment

This helps OpenHuman MCP generally. It also keeps Composio and MCP complementary: Composio handles managed OAuth/provider breadth; MCP allowlists handle precise external tool exposure.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions