MCP.so
Sign In
Servers

Intacct MCP Server (stdio Transport)

@russellkt

Overview

What is Intacct MCP Server (stdio Transport)?

It is a Model Context Protocol (MCP) server for authenticating with Sage Intacct and making XML API requests, using stdio transport.

How to use Intacct MCP Server (stdio Transport)?

Set up a Python 3.11 virtual environment with uv, copy .env.example to .env and fill in Intacct credentials (sender ID, sender password, company ID, user ID, user password). Run uv run intacct_mcp_stdio.py to start the server; it communicates over stdin/stdout and is typically launched as a subprocess by an MCP client like Claude Desktop.

Key features of Intacct MCP Server (stdio Transport)

  • Implements the JSON‑RPC‑based MCP protocol
  • Direct communication via stdin/stdout (stdio transport)
  • Handles Intacct login and session‑based authentication
  • Wraps XML content with proper authentication for API requests
  • Supports batch operations and transactional rollback

Use cases of Intacct MCP Server (stdio Transport)

  • Querying Intacct objects (e.g., customers, vendors) programmatically
  • Creating or updating related records atomically using transactions
  • Integrating Intacct data with AI assistants through Claude Desktop

FAQ from Intacct MCP Server (stdio Transport)

What credentials are required for Intacct?

The .env file must contain a sender ID, sender password, company ID, user ID, and user password.

How are credentials secured?

The .env file is excluded from version control via .gitignore; never commit it to source control.

Can I send multiple operations in a single request?

Yes, using the batch_xml_to_intacct tool with an array of function elements. Setting transaction to true ensures all operations succeed or fail together.

What are the limitations of batch operations?

Intacct does not pass data between functions in the same batch; results from one function cannot be used in another. Dependent operations require separate requests.

How do I handle query pagination?

Set the pagesize element in your query (default 100 records) and use offset or the readMore function with the resultId from the previous response to retrieve additional pages.

More from Other