Skip to main content
Glama

MCP OpenClaw

A Model Context Protocol (MCP) server that integrates with the OpenClaw API, enabling AI assistants to send messages, execute commands, manage calendar events, send emails, and track task status.

Features

  • Send Messages: Send messages to Telegram, WhatsApp, and Discord

  • Execute Commands: Run commands in the OpenClaw environment (sync or async)

  • Calendar Management: Create calendar events with attendees and reminders

  • Email: Send emails with support for CC/BCC

  • Task Status: Track the status of asynchronous commands

Related MCP server: Jilebi

Installation

Global Installation

npm install -g mcp-openclaw

Local Installation

npm install mcp-openclaw

Configuration

Set the following environment variables:

export OPENCLAW_API_URL="https://api.openclaw.example.com"
export OPENCLAW_API_KEY="your-api-key-here"

Optional configuration:

export OPENCLAW_TIMEOUT="30000"        # Request timeout in milliseconds (default: 30000)
export OPENCLAW_MAX_RETRIES="3"        # Maximum retry attempts (default: 3)
export SERVER_NAME="mcp-openclaw"      # Server name (default: mcp-openclaw)
export SERVER_VERSION="1.0.0"          # Server version (default: 1.0.0)
export LOG_LEVEL="info"                # Log level: debug, info, warn, error (default: info)

Usage

With Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "openclaw": {
      "command": "node",
      "args": ["/path/to/mcp-openclaw/dist/index.js"],
      "env": {
        "OPENCLAW_API_URL": "https://api.openclaw.example.com",
        "OPENCLAW_API_KEY": "your-api-key-here"
      }
    }
  }
}

Available Tools

1. send_message

Send a message to a supported platform.

{
  "platform": "telegram",
  "recipient": "@username",
  "message": "Hello from OpenClaw!"
}

Supported platforms: telegram, whatsapp, discord

2. execute_command

Execute a command in the OpenClaw environment.

{
  "command": "ls -la",
  "timeout": 30,
  "async": false
}

3. create_calendar_event

Create a new calendar event.

{
  "title": "Team Meeting",
  "description": "Weekly team sync",
  "startTime": "2024-01-15T10:00:00Z",
  "endTime": "2024-01-15T11:00:00Z",
  "location": "Conference Room A",
  "attendees": ["user1@example.com", "user2@example.com"],
  "reminder": 15
}

4. send_email

Send an email.

{
  "to": "recipient@example.com",
  "subject": "Hello from OpenClaw",
  "body": "This is the email content",
  "cc": "cc@example.com",
  "bcc": "bcc@example.com",
  "html": false
}

5. get_task_status

Check the status of an asynchronous command.

{
  "taskId": "task-abc123"
}

Development

Setup

git clone https://github.com/yourusername/mcp-openclaw.git
cd mcp-openclaw
npm install

Build

npm run build

Test

npm test

Lint

npm run lint
npm run lint:fix

Format

npm run format

Project Structure

mcp-openclaw/
├── src/
│   ├── index.ts              # MCP Server entry point
│   ├── types.ts              # TypeScript type definitions
│   ├── openclaw-client.ts    # OpenClaw API client
│   └── tools/
│       ├── index.ts          # Tools registry
│       ├── send-message.ts
│       ├── execute-command.ts
│       ├── create-calendar-event.ts
│       ├── send-email.ts
│       └── get-task-status.ts
├── tests/                    # Test files
├── examples/                 # Usage examples
├── docs/                     # Documentation
└── scripts/                  # Build and utility scripts

Architecture

For detailed architecture information, see docs/ARCHITECTURE.md.

API Reference

For the complete API reference, see docs/API.md.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE for details.

Changelog

See CHANGELOG.md for version history.

Support

Available Tools

5 tools
create_calendar_eventC

Create a calendar event with title, description, time, location, and attendees

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesEvent title
descriptionNoEvent description (optional)
startTimeYesEvent start time in ISO 8601 format (e.g., 2024-01-15T10:00:00Z)
endTimeNoEvent end time in ISO 8601 format (optional)
locationNoEvent location (optional)
attendeesNoList of attendee email addresses (optional)
reminderNoReminder time in minutes before the event (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates an event but doesn't mention permissions required, whether it sends invitations automatically, error handling, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. It lists key parameters without unnecessary elaboration, though it could be slightly more structured (e.g., grouping required vs. optional).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., event ID, success confirmation), error conditions, or side effects like sending emails to attendees. Given the complexity of creating calendar events, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 7 parameters with their types, optionality, and formats. The description lists the parameters but adds no additional meaning beyond what's in the schema (e.g., no examples of valid locations or attendee formats). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('calendar event') along with key attributes (title, description, time, location, attendees). It's specific about what the tool does, though it doesn't explicitly differentiate from sibling tools like send_email or send_message, which might also involve scheduling or notifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for calendar events, or how it differs from sibling tools like send_email (which might involve scheduling) or execute_command (which could trigger related actions).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_commandC

Execute a command in the OpenClaw environment. Commands can run synchronously or asynchronously.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesCommand to execute (e.g., "ls -la", "npm install")
timeoutNoTimeout in seconds (default: 30)
asyncNoExecute asynchronously (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions synchronous vs. asynchronous execution, which adds some context, but fails to cover critical aspects such as security implications, error handling, environment specifics, or output format. This leaves significant gaps for a tool that executes arbitrary commands.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the core purpose, consisting of two clear sentences. It avoids unnecessary details, though it could be slightly more structured by explicitly listing key behaviors or constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of executing commands in an environment, the lack of annotations, and no output schema, the description is incomplete. It doesn't address safety, permissions, result handling, or error cases, which are crucial for such a tool, leaving the agent with insufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (command, timeout, async) with descriptions and defaults. The description doesn't add any meaningful semantics beyond what the schema provides, such as command examples or usage nuances, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('execute') and resource ('command in the OpenClaw environment'), making the purpose understandable. However, it doesn't distinguish this tool from potential siblings like 'get_task_status' that might also involve command execution, missing full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions that commands can run synchronously or asynchronously, which implies some usage context, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_task_status' or other sibling tools. No when-not-to-use or prerequisite information is included.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_task_statusC

Get the current status of a previously executed async command/task

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to check status for

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions checking status for an 'async command/task', implying it's a read operation, but doesn't specify details like polling behavior, error handling, or response format. This leaves gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool that interacts with async tasks. It doesn't explain what the status response includes (e.g., pending, completed, failed) or how to handle errors, leaving significant gaps in understanding the tool's full context and usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, fully documenting the single parameter 'taskId'. The description adds no additional meaning beyond what the schema provides, such as format examples or context for the task ID. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('status of a previously executed async command/task'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'execute_command', which might also involve task execution, leaving room for minor ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as whether it should be used after 'execute_command' or in conjunction with other siblings. It lacks explicit context, prerequisites, or exclusions, offering minimal usage direction beyond the basic purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailC

Send an email to one or more recipients with optional CC and BCC

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address or list of addresses
subjectYesEmail subject line
bodyYesEmail body content
ccNoCC recipients (optional)
bccNoBCC recipients (optional)
htmlNoWhether the body is HTML format (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose critical behavioral traits like authentication requirements, rate limits, delivery confirmation, error handling, or whether emails are sent immediately versus queued.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a straightforward tool and front-loads the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't address what happens after sending (success/failure indicators), doesn't mention important constraints or side effects, and provides minimal guidance despite the tool's potential impact.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing complete parameter documentation. The description adds minimal value by mentioning 'optional CC and BCC' which is already clear from the schema. No additional semantic context is provided beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send') and resource ('email') with specific details about recipients and optional fields. It distinguishes itself from sibling tools like 'send_message' by specifying email functionality, though it doesn't explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'send_message' or other communication methods. The description mentions optional CC/BCC but offers no context about appropriate use cases or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_messageC

Send a message to a specified platform (Telegram, WhatsApp, or Discord) via OpenClaw

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesTarget messaging platform
recipientYesRecipient ID or username (e.g., @username for Telegram, phone number for WhatsApp)
messageYesMessage content to send

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Send a message') but lacks critical details: it doesn't specify whether this requires authentication, rate limits, error handling (e.g., invalid recipient), side effects (e.g., message delivery confirmation), or response format. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Send a message to a specified platform') and adds necessary specifics (platforms and mechanism). There is zero waste—every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation operation sending messages across platforms) and the lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, error conditions, or what the tool returns (e.g., success/failure, message ID). For a tool with this functionality, more context is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters (platform, recipient, message) with descriptions and an enum for platform. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain format details for recipient beyond the schema's examples). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send a message') and the resource ('to a specified platform'), specifying the platforms (Telegram, WhatsApp, Discord) and the mechanism ('via OpenClaw'). It distinguishes from siblings like send_email by specifying messaging platforms rather than email. However, it doesn't explicitly differentiate from hypothetical sibling messaging tools (none exist in the provided list), so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication, platform setup), exclusions (e.g., when not to send messages), or compare to siblings like send_email for communication purposes. Usage is implied by the name and parameters but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes: calendar event creation, command execution, task status checking, email sending, and message sending. However, 'send_email' and 'send_message' could potentially be confused as both involve communication, though their target platforms differ (email vs. messaging apps).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_calendar_event, execute_command, get_task_status, send_email, send_message). The naming is uniform and predictable throughout the set.

Tool Count4/5

With 5 tools, the count is reasonable and well-scoped for a utility server like OpenClaw. It covers key automation tasks without being overwhelming, though it might benefit from a few more tools for broader coverage.

Completeness3/5

The tool set covers basic automation tasks (execution, communication, calendar), but there are notable gaps. For example, there's no tool to list or manage calendar events, update tasks, or handle other common operations like file management, which could limit agent workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    F
    maintenance
    A powerful MCP server that enables AI assistants to interact with Microsoft Graph API for managing Outlook emails, Calendar events, OneDrive files, and Contacts through natural language commands.
    35
    56
  • A
    license
    Not graded
    quality
    B
    maintenance
    A plugin-based MCP server that enables AI assistants to interact with external systems through custom tools, resources, and prompts.
    4
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server with real AI capabilities (OpenAI/Anthropic) for natural language understanding, multi-step planning, and autonomous task execution, enabling intelligent file analysis, weather-based planning, and more.
    225
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that integrates OpenClaw AI assistant with Claude Code, enabling chat, task management, messaging, memory, alerts, agent spawning, and web search through configurable tools.
    12
    208
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/starlink-awaken/mcp-openclaw'

If you have feedback or need assistance with the MCP directory API, please join our Discord server