Provides integration with Mural's visual collaboration platform, enabling workspace management including listing workspaces, retrieving workspace details, and testing API connections through OAuth 2.0 authentication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mural MCP Serverlist my Mural workspaces"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mural MCP Server
A Model Context Protocol (MCP) server that provides integration with the Mural visual collaboration platform. This server enables AI assistants to interact with Mural workspaces through OAuth 2.0 authentication.
Note: This is v0.0.1 - an early MVP release focused on workspace listing functionality. More features are planned for future releases.
Features
OAuth 2.0 Authentication: Secure authentication with PKCE support
Workspace Management: List and retrieve workspace information
MCP Compliance: Full Model Context Protocol compatibility
Token Management: Automatic token refresh and secure storage
Tools Available
list-workspaces: List all workspaces the authenticated user has access toget-workspace: Get detailed information about a specific workspacetest-connection: Test the connection to Mural API and verify authenticationclear-auth: Clear stored authentication tokens
Prerequisites
Node.js: Version 18 or higher
Mural Account: Access to Mural with workspace permissions
Mural OAuth App: Register an app at Mural Developer Portal
Installation
Option 1: Install from npm (Recommended)
npm install -g mural-mcp
# or
pnpm add -g mural-mcpOption 2: Install from source
Clone and install dependencies:
git clone https://github.com/your-username/mural-mcp.git
cd mural-mcp
pnpm installBuild the project:
pnpm run buildSetup
Set up environment variables:
cp .env.example .env
# Edit .env with your Mural OAuth credentialsConfiguration
Environment Variables
Create a .env file with the following variables:
# Required: Your Mural app's client ID
MURAL_CLIENT_ID=your_client_id_here
# Optional: Your Mural app's client secret (recommended)
MURAL_CLIENT_SECRET=your_client_secret_here
# Optional: OAuth redirect URI (defaults to http://localhost:3000/callback)
MURAL_REDIRECT_URI=http://localhost:3000/callbackMural OAuth App Setup
Visit Mural Developer Portal
Create a new application
Set the redirect URI to
http://localhost:3000/callback(or your custom URI)Note your Client ID and Client Secret
Configure the required scopes:
workspaces:read
Usage
With Claude Desktop
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"mural": {
"command": "node",
"args": ["/absolute/path/to/mural-mcp/build/index.js"],
"env": {
"MURAL_CLIENT_ID": "your_client_id_here",
"MURAL_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}Standalone Usage
Run the server directly:
# Set environment variables
export MURAL_CLIENT_ID=your_client_id_here
export MURAL_CLIENT_SECRET=your_client_secret_here
# Start the server
pnpm startDevelopment
For development with hot reloading:
pnpm run devAuthentication Flow
First Run: The server will open a browser window for OAuth authentication
Login: Complete the OAuth flow in your browser
Token Storage: Tokens are securely stored locally in
~/.mural-mcp-tokens.jsonAuto-Refresh: Access tokens are automatically refreshed when needed
API Endpoints Used
Authorization:
https://app.mural.co/api/public/v1/authorization/oauth2/Token Exchange:
https://app.mural.co/api/public/v1/authorization/oauth2/tokenWorkspaces:
https://app.mural.co/api/public/v1/workspaces
Example Usage
Once configured, you can use the tools through your MCP client:
Human: List my Mural workspaces
Assistant: I'll list your Mural workspaces using the list-workspaces tool.
[Tool executes and returns workspace data]Security Considerations
PKCE: Uses Proof Key for Code Exchange for enhanced OAuth security
Token Storage: Tokens are stored locally in the user's home directory
HTTPS: All API communications use HTTPS
Scope Limitation: Requests only necessary OAuth scopes
Troubleshooting
Authentication Issues
Token Expired: Use the
clear-authtool to clear tokens and re-authenticateInvalid Client ID: Verify your
MURAL_CLIENT_IDin the environment variablesRedirect URI Mismatch: Ensure the redirect URI matches your Mural app configuration
Connection Issues
Network: Ensure you can reach
https://app.mural.coFirewall: Port 3000 must be available for OAuth callback
Test Connection: Use the
test-connectiontool to verify API access
Common Error Messages
Missing required environment variable: MURAL_CLIENT_ID: Set the required environment variableOAuth token exchange failed: Check your client credentials and redirect URIMural API request failed: HTTP 401: Token expired or invalid, clear auth and re-authenticateMural API request failed: HTTP 403: Insufficient permissions or invalid scope
Development
Project Structure
mural-mcp/
├── src/
│ ├── index.ts # Main MCP server
│ ├── oauth.ts # OAuth 2.0 implementation
│ ├── mural-client.ts # Mural API client
│ └── types.ts # TypeScript interfaces
├── build/ # Compiled output
├── spec/ # Documentation
└── package.jsonBuilding
# Clean build
rm -rf build && pnpm run build
# Development build with watch
pnpm run devTesting
Test the server manually:
# Build and run
pnpm run build
node build/index.js
# In another terminal, test with MCP inspector
npx @modelcontextprotocol/inspector node build/index.jsContributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - see LICENSE file for details
Support
For issues and questions:
Check the troubleshooting section above
Review Mural API documentation
Create an issue in the repository