mcp-malt

mcp-malt

Enables access to the documented Malt API for back-office tasks, including retrieving invoices, payments, and commission invoices, as well as SCIM user provisioning for organization accounts.

Category
访问服务器

README

mcp-malt

An MCP server for the Malt API. It covers all 13 operations Malt publishes: the invoices you issue, the commission Malt bills you, the payments you receive, and SCIM user provisioning for organization accounts.

What this does and does not cover

Malt's API is smaller than most people expect. It covers back office billing and enterprise user provisioning, and nothing else:

Toolset Tools What it reaches
invoices 3 Invoices you issued to clients, including the PDF
payments 1 Payments received, with the invoices each one settles
fee-invoices 3 Malt's commission invoices to you, including the PDF
scim 2 read, 4 write SCIM 2.0 user provisioning for an organization account

There is no talent search, no profiles, no missions, no offers, and no messaging. Those are what Malt is known for, and none of them are in the public API. If that is what you came for, this server cannot give it to you, and neither can anything else built on the documented API.

Two community MCP servers for Malt do reach that data, by driving the web app with browser automation and scraping the DOM. Their own documentation warns that automating profile edits may breach Malt's terms of service. This server only calls the documented API.

Getting a token

  1. Create an identity on the signup page if you do not have one.
  2. Open My Account, then API Keys.
  3. Create an access token with the permission scopes you need. Match them to the toolsets you plan to enable.
  4. Copy the token straight away. It is shown once, at creation, and never again.

Freelancer account tokens are self served. Client team and organization tokens, which the scim toolset needs, come through your Malt representative.

There is no OAuth 2.0 here. Malt publishes no authorization server and no token endpoint, so the API token above is the only way in. docs/authentication.md explains this in more detail, including the header detail that trips most people up.

Install

Published three ways from one release: the npm package on npmjs and on GitHub Packages, and the container image on GHCR. npx is the usual choice for an MCP client; Docker suits a locked-down or shared setup.

Pin a version in the examples below. An MCP server runs with your API token, so an unpinned @latest means a new release starts running on your machine without you choosing it.

npm install @ialejandro/mcp-malt@1.0.0

To move to a newer version, bump the number in your client config and restart the client. The releases page lists what changed in each one.

To install from GitHub Packages instead of npmjs, point the scope at it: @ialejandro:registry=https://npm.pkg.github.com in your .npmrc.

npx

// Claude Desktop: claude_desktop_config.json
// Cursor: .cursor/mcp.json
{
  "mcpServers": {
    "malt": {
      "command": "npx",
      "args": ["-y", "@ialejandro/mcp-malt@1.0.0"],
      "env": {
        "MALT_API_TOKEN": "your-token-here",
        "MALT_TOOLSETS": "invoices,payments,fee-invoices"
      }
    }
  }
}

Claude Code

claude mcp add malt \
  --env MALT_API_TOKEN=your-token-here \
  --env MALT_TOOLSETS=invoices,payments,fee-invoices \
  -- npx -y @ialejandro/mcp-malt@1.0.0

Docker

The server speaks JSON-RPC over stdin and stdout, so -i is required and -t must be left off.

docker run -i --rm \
  -e MALT_API_TOKEN=your-token-here \
  -e MALT_TOOLSETS=invoices \
  ghcr.io/ialejandro/mcp-malt:1.0.0
// Claude Desktop: claude_desktop_config.json
// Cursor: .cursor/mcp.json
{
  "mcpServers": {
    "malt": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MALT_API_TOKEN",
        "-e", "MALT_TOOLSETS",
        "ghcr.io/ialejandro/mcp-malt:1.0.0"
      ],
      "env": {
        "MALT_API_TOKEN": "your-token-here",
        "MALT_TOOLSETS": "invoices,payments,fee-invoices"
      }
    }
  }
}

From source

git clone https://github.com/ialejandro/mcp-malt
cd mcp-malt
npm ci && npm run build
{
  "mcpServers": {
    "malt": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-malt/dist/index.js"],
      "env": {
        "MALT_API_TOKEN": "your-token-here",
        "MALT_TOOLSETS": "invoices,payments,fee-invoices"
      }
    }
  }
}
{
  "mcpServers": {
    "malt": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MALT_API_TOKEN",
        "-e", "MALT_TOOLSETS",
        "ghcr.io/ialejandro/mcp-malt:1.0.0"
      ],
      "env": {
        "MALT_API_TOKEN": "your-token-here",
        "MALT_TOOLSETS": "invoices,payments,fee-invoices"
      }
    }
  }
}

Configuration

Variable Default What it does
MALT_API_TOKEN required Your token from My Account, API Keys
MALT_TOOLSETS empty Comma list of invoices, payments, fee-invoices, scim, or all
MALT_ALLOW_WRITES false Exposes the four SCIM write tools. scim alone gives you reads only
MALT_MAX_LIST_ITEMS 200 Caps list results, since Malt does not paginate the billing endpoints
MALT_RATE_LIMIT_RPS 5 Outbound pacing. Our number, not Malt's, which publishes none
MALT_TIMEOUT_MS 30000 Per request timeout
MALT_API_BASE_URL https://api.malt.com Override, mostly for testing
MALT_AUTH_SCHEME raw raw or bearer. Leave it alone unless Malt changes
MALT_LOG_LEVEL info debug, info, warn, error. All logging goes to stderr

With no MALT_TOOLSETS the server starts and offers nothing. That is deliberate, not a failure: you decide what a model gets to see. Add toolsets one at a time.

An unknown toolset name stops the server with an error rather than being ignored, because a typo that silently costs you three tools is miserable to debug.

Common tasks

Reconcile a quarter. Enable invoices,payments,fee-invoices and run the malt_reconcile_revenue prompt. It pulls all three lists, matches payments to the invoices they settle, and reports gross billed, tax, Malt's commission, and cash received.

Reconcile my Malt revenue for Q1 2026.

Get an invoice PDF. Malt returns PDFs base64-encoded inside a JSON body. The tools decode them and hand back a real PDF attachment.

Download the PDF for invoice INV-123456.

Offboard someone. Enable scim with MALT_ALLOW_WRITES=true and use malt_user_lifecycle. It deactivates rather than deletes, which is the path Malt actually supports.

Offboard jane.doe@acme.com from our Malt organization.

Documentation

Development

npm ci
npm run typecheck
npm test
npm run build
npm run check-spec   # diff the live Malt spec against spec/malt-openapi.json

Tests mock fetch and never call the live API.

spec/malt-openapi.json is a committed snapshot of Malt's published document. A daily workflow diffs the live spec against it and opens a PR when anything moves. Malt has kept info.version at 0.0.1 throughout, so the check compares operations rather than trusting the version number.

Contributing

See CONTRIBUTING.md. Adding an endpoint or a toolset is described in docs/extending.md.

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选