Manus MCP
The Universal MCP Server for Manus AI enables you to create AI tasks, manage webhooks, and integrate Manus workflows into any MCP-compatible client. Designed for prompt-first usage with full support for attachments, connectors, and real-time notifications.
Installation
Prerequisites
- Node.js 18+
- Set
MANUS_MCP_API_KEYin your environment
Get an API key
- Request your API key from the Manus Dashboard
- API documentation: https://open.manus.ai/docs
- Getting started guide: https://open.manus.ai/docs/quickstart
Build locally
cd /path/to/manus-mcp
npm i
npm run build
Setup: Claude Code (CLI)
Use this one-liner (replace with your real API key):
claude mcp add manus-mcp -s user -e MANUS_MCP_API_KEY="your-api-key-here" -- npx manus-mcp
Note: Use manus-mcp (not "Manus MCP") as the name. Claude CLI requires names without spaces.
To remove:
claude mcp remove manus-mcp
Setup: Cursor
Create .cursor/mcp.json in your client (do not commit it here):
{
"mcpServers": {
"manus-mcp": {
"command": "npx",
"args": ["manus-mcp"],
"env": { "MANUS_MCP_API_KEY": "your-api-key-here" },
"autoStart": true
}
}
}
Note: This repository does not include .cursor/mcp.json. Configure Cursor via the UI or manually create the file in your client workspace.
Other Clients and Agents
VS Code
Install via URI or CLI:
code --add-mcp '{"name":"manus-mcp","command":"npx","args":["manus-mcp"],"env":{"MANUS_MCP_API_KEY":"your-api-key-here"}}'
Or add to your VS Code settings JSON:
{
"mcp.servers": {
"manus-mcp": {
"command": "npx",
"args": ["manus-mcp"],
"env": { "MANUS_MCP_API_KEY": "your-api-key-here" }
}
}
}
VS Code Insiders
Same as VS Code, but use code-insiders command:
code-insiders --add-mcp '{"name":"manus-mcp","command":"npx","args":["manus-mcp"],"env":{"MANUS_MCP_API_KEY":"your-api-key-here"}}'
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": {
"manus-mcp": {
"command": "npx",
"args": ["manus-mcp"],
"env": { "MANUS_MCP_API_KEY": "your-api-key-here" }
}
}
}
LM Studio
In LM Studio's MCP settings:
- Command:
npx - Args:
["manus-mcp"] - Env:
MANUS_MCP_API_KEY=your-api-key-here
Goose
Add to your Goose configuration:
- Type: STDIO
- Command:
npx - Args:
manus-mcp - Enabled: true
- Env:
MANUS_MCP_API_KEY=your-api-key-here
opencode
Example ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"manus-mcp": {
"type": "local",
"command": ["npx", "manus-mcp"],
"enabled": true,
"env": { "MANUS_MCP_API_KEY": "your-api-key-here" }
}
}
}
Qodo Gen
Add a new MCP in Qodo Gen and paste the standard JSON config:
{
"command": "npx",
"args": ["manus-mcp"],
"env": { "MANUS_MCP_API_KEY": "your-api-key-here" }
}
Windsurf
Follow the Windsurf MCP integration guide and reuse the standard config:
{
"manus-mcp": {
"command": "npx",
"args": ["manus-mcp"],
"env": { "MANUS_MCP_API_KEY": "your-api-key-here" }
}
}
Setup: Codex (TOML)
Add the following to your Codex TOML configuration:
[mcp_servers.manus-mcp]
command = "npx"
args = ["manus-mcp"]
[mcp_servers.manus-mcp.env]
MANUS_MCP_API_KEY = "your-api-key-here"
# MCP_NAME = "manus-mcp" # Optional: override server name
Configuration (Env)
- MANUS_MCP_API_KEY: Your Manus API key (required)
- MANUS_MCP_API_BASE_URL: Override the API base URL (default:
https://api.manus.ai/v1) - MCP_NAME: Server name override (default:
manus-mcp)
Available Tools
create_task
Create a new AI task in Manus with custom parameters and optional attachments.
Inputs:
{
"prompt": "string (required) - The task prompt or instruction for the AI",
"mode": "string (required) - 'speed' or 'quality'",
"attachments": "array (optional) - List of attachment objects { filename, url, mime_type, size_bytes }",
"connectors": "array (optional) - List of connector IDs (e.g., ['gmail', 'notion'])",
"hide_in_task_list": "boolean (optional) - Hide from webapp task list (default: false)",
"create_shareable_link": "boolean (optional) - Generate a public shareable link (default: false)"
}
Outputs:
{
"task_id": "string - Unique task identifier",
"task_title": "string - Generated task title",
"task_url": "string - Direct link to the task",
"shareURL": "string (optional) - Public shareable link if requested"
}
create_webhook
Register a new webhook to receive real-time notifications from Manus.
Inputs:
{
"url": "string (required) - Webhook endpoint URL",
"events": "array (optional) - List of event types to subscribe to"
}
Outputs: Webhook registration details including webhook ID and configuration.
delete_webhook
Remove a previously registered webhook by its ID.
Inputs:
{
"webhook_id": "string (required) - The ID of the webhook to delete"
}
Outputs: Success confirmation or error details.
Example invocation (MCP tool call)
Create a task in speed mode:
{
"tool": "create_task",
"arguments": {
"prompt": "Analyze the quarterly sales data and generate a summary report with key insights",
"mode": "speed",
"create_shareable_link": true
}
}
Create a task with attachments:
{
"tool": "create_task",
"arguments": {
"prompt": "Extract key action items from this meeting transcript",
"mode": "quality",
"attachments": [
{
"filename": "meeting-notes.pdf",
"url": "https://example.com/files/meeting-notes.pdf",
"mime_type": "application/pdf",
"size_bytes": 245632
}
],
"connectors": ["gmail", "notion"]
}
}
Troubleshooting
401 Authentication Error
- Verify that
MANUS_MCP_API_KEYis correctly set in your environment - Check that your API key is valid and has not expired
- Test your API key with a direct curl request:
curl -H "API_KEY: your-key" https://api.manus.ai/v1/tasks
Node.js Version Error
- Ensure you're using Node.js 18 or later:
node -v - Update Node.js if necessary: https://nodejs.org/
Build Issues
- Clear the build directory:
rm -rf build - Reinstall dependencies:
rm -rf node_modules && npm i - Rebuild:
npm run build
Testing Local Builds
- After building, test the server:
npx .ornode build/index.js - Check that the executable is properly created:
ls -la build/index.js
Inspecting Publish Artifacts
- See what would be published:
npm pack --dry-run - Check the package contents:
npm pack && tar -xzf manus-mcp-*.tgz && cat package/package.json
References
- Manus API Documentation: https://open.manus.ai/docs
- MCP SDK: https://modelcontextprotocol.io/docs/sdks
- MCP Architecture: https://modelcontextprotocol.io/docs/learn/architecture
- MCP Server Concepts: https://modelcontextprotocol.io/docs/learn/server-concepts
- MCP Server Specification: https://modelcontextprotocol.io/specification/2025-06-18/server/index
- Manus Quickstart: https://open.manus.ai/docs/quickstart
- Manus Webhooks: https://open.manus.ai/docs/webhooks/overview
- Manus Connectors: https://open.manus.ai/docs/connectors/overview
Name Consistency & Troubleshooting
Always use CANONICAL_ID (manus-mcp) for identifiers and keys. Use CANONICAL_DISPLAY (Manus MCP) only for UI labels. Do not mix legacy keys after registration.
Consistency Matrix
| Context | Value |
|---|---|
| npm package name | manus-mcp |
| Binary name | manus-mcp |
| MCP server name (SDK metadata) | manus-mcp |
| Env default MCP_NAME | manus-mcp |
| Client registry key | manus-mcp |
| UI label | Manus MCP |
Conflict Cleanup
- Remove any stale keys (e.g., old display names like "Manus") and re-add with
manus-mcponly - Ensure global
.mcp.jsonor client registries only usemanus-mcpfor keys - Cursor: Configure in the UI; this project intentionally omits
.cursor/mcp.json
Example
✅ Correct:
{
"mcpServers": {
"manus-mcp": {
"command": "npx",
"args": ["manus-mcp"]
}
}
}
❌ Incorrect:
{
"mcpServers": {
"Manus": { // Wrong: will conflict with "manus-mcp"
"command": "npx",
"args": ["manus-mcp"]
}
}
}
License
MIT
