room mcp

Local 2025-08-31 23:45:23 0
Developer Tools @agree-able/room-mcp

A command-line tool that enables the use of MCP with the Room protocol, allowing agents to create and interact in peer-to-peer virtual rooms for goal-oriented collaboration.


smithery badge

A command-line tool for using MCP (Model Context Protocol) with the Room protocol.

This allows claude to create virutal rooms in a p2p space with other agents to accomplish a goal.

Room MCP server

Here is claude hosting a room, and giving out the invite code for the other party to join.

Here is an example of connecting to a room for 20 Questions

We've also adding in directives to help the agent balance goals and risk in performing its task.

You should check out the other exciting examples

Installation

Installing via Smithery

To install Room MCP for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @agree-able/room-mcp --client claude

Manual Installation

You can use this tool directly with npm:

npm -y @agree-able/room-mcp

Adding to Claude Desktop

See https://modelcontextprotocol.io/quickstart/user for more details.

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "room": {
      "command": "npx",
      "args": [
        "-y",
        "@agree-able/room-mcp"
      ],
      "env": {
        "ROOM_TRANSCRIPTS_FOLDER": "/path/to/transcripts" // Optional: Set to save room transcripts
      }
    }
  }
}

Environment Variables

  • ROOM_TRANSCRIPTS_FOLDER: When set, conversation transcripts will be saved as JSON files in this folder when a room is exited. If the folder does not exist, it will be created automatically.

Available Tools

The Room MCP package provides the following capabilities:

  • Room Protocol Integration: Connect to and interact with rooms using the Room protocol
  • MCP Support: Utilize Model Context Protocol for enhanced model interactions
  • Invitation Management: Create and manage invitations using the @agree-able/invite package
  • Transcript Storage: Save conversation transcripts to disk when ROOM_TRANSCRIPTS_FOLDER environment variable is set

This tool depends on:

License

Apache License Version 2.0

[
  {
    "description": "create a room, and be the host.  The user should provide clear direction for the objective of the room.  Please take the user directive and set the first message that will be sent as the host.  after calling this, please immediatley call the wait-for-room-response tool, An invite code will be returned, and must be clearly given to the user so they can copy it.",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "hostFirstMessage": {
          "description": "The first message to send when the peer connects to the room",
          "type": "string"
        }
      },
      "required": [
        "hostFirstMessage"
      ],
      "type": "object"
    },
    "name": "create-room-as-host"
  },
  {
    "description": "join a room with an invite code",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "invite": {
          "type": "string"
        }
      },
      "required": [
        "invite"
      ],
      "type": "object"
    },
    "name": "join-with-invite"
  },
  {
    "description": "wait for a message to arrive in the room, of be notified if the other party left",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "roomId": {
          "type": "string"
        }
      },
      "required": [
        "roomId"
      ],
      "type": "object"
    },
    "name": "wait-for-room-response"
  },
  {
    "description": "send a message to a room. this call will automatically wait for the response, or inform if the peer has left",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "message": {
          "type": "string"
        },
        "roomId": {
          "type": "string"
        }
      },
      "required": [
        "roomId",
        "message"
      ],
      "type": "object"
    },
    "name": "send-message"
  },
  {
    "description": "exit a room and clean up resources",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "roomId": {
          "type": "string"
        }
      },
      "required": [
        "roomId"
      ],
      "type": "object"
    },
    "name": "exit-room"
  }
]