io.github.LeoMbm/malt-mcp
MCP server for Malt.fr. Read your freelance profile, stats, and missions from Claude.
Ask AI about io.github.LeoMbm/malt-mcp
Powered by Claude Β· Grounded in docs
I know everything about io.github.LeoMbm/malt-mcp. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Malt MCP Server
MCP server for Malt.fr. Lets Claude (or any MCP client) read your freelance profile, stats, and missions.
Tools
| Tool | Description | Status |
|---|---|---|
authenticate | Log in to Malt interactively from Claude Desktop | working |
get_profile | Get freelance profile info (bio, daily rate, skills, rating). Omit username to fetch your own profile. | working |
get_statistics | View profile stats (views, response rate, missions) | working |
get_missions | List mission conversations from messaging | working |
get_mission_details | Get full details of a specific mission (budget, skills, messages) | working |
close_session | Close the browser and free resources | working |
π¦ Claude Desktop MCP Bundle
Prerequisites: Claude Desktop.
One-click installation:
- Download the latest
.mcpbfrom releases - Double-click the
.mcpbfile to install it into Claude Desktop - Ask Claude "connecte-moi a Malt" - a browser opens, you log in, done
- Call any Malt tool
No terminal needed. Session is saved in ~/.malt-mcp/ and reused across restarts.
[!NOTE] Google OAuth doesn't work (blocked by Google when automated). Use email/password.
π uvx Setup (Universal)
Prerequisites: uv installed.
Add to your MCP client config (Claude Desktop, Claude Code, or any MCP-compatible client):
{
"mcpServers": {
"malt": {
"command": "uvx",
"args": ["malt-mcp@latest"],
"env": { "UV_HTTP_TIMEOUT": "300" }
}
}
}
@latest pulls the newest version from PyPI on each launch. First auth-requiring call opens a browser for login.
To log in ahead of time:
uvx malt-mcp@latest --login
Docker (coming soon)
βοΈ CLI Options
| Option | Description |
|---|---|
--login | Open browser to log in and save session |
--logout | Clear stored browser profile |
--no-headless | Show browser window (debug) |
--log-level | Set log level (DEBUG, INFO, WARNING, ERROR) |
--timeout | Browser timeout in ms (default: 5000) |
β Troubleshooting
Login issues:
- Google OAuth won't work. Use email/password.
- Session expired? Re-run
uvx malt-mcp@latest --login. - Cloudflare challenge on first load is normal - the browser handles it, give it a few seconds.
Timeout issues:
- Pages not loading? Try
--timeout 10000. Slow connections might need15000.
Browser issues:
- Headless mode doesn't work - Cloudflare blocks it. The browser window is expected.
- First run downloads Chromium (~200 MB via Patchright). One-time thing.
- Upgrading from v0.3.x? Run
uvx malt-mcp@latest --logoutthen--login. The browser engine changed from system Chrome to managed Chromium.
π How it works
Under the hood, this is browser automation via Patchright (Playwright fork). No API, no reverse-engineering - it drives a real browser like you would.
- Credentials stay local. Cookies live in
~/.malt-mcp/profile/, nowhere else. - Read-only. Nothing is modified on your Malt account (for now).
- Runs locally. The server talks to Malt.fr and nothing else.
[!IMPORTANT] Malt's TOS may prohibit automated tools. Don't bulk-scrape. Use responsibly.
π Development
Contributions welcome! See CONTRIBUTING.md for architecture guidelines.
git clone https://github.com/LeoMbm/malt-mcp.git
cd malt-mcp
uv sync --group dev
pre-commit install
Run the MCP Inspector (local testing):
uv run mcp dev malt_mcp_server/server.py
Run tests:
uv run pytest --cov -v
Type check:
uv run ty check
