Plug your AI assistant into Guliel.
Every Guliel REST endpoint shows up as an MCP tool. Claude Desktop, Claude Code, Cursor, ChatGPT, and any other MCP-aware client can read and write invoices, expenses, customers, suppliers, orders — anything in your workspace — using natural language. OAuth 2.0 with PKCE handles auth; you pick which organizations and scopes the agent gets when you connect.
What does “Guliel as an MCP server” mean?
MCP — the Model Context Protocol — is the open standard MCP-aware AI clients use to talk to external systems. When you connect Guliel as an MCP server, your agent gains a tool for every REST route on this API. Asking “create a draft invoice for Acme” becomes a invoices.create call. “Show last month's travel expenses” becomes expenses.list. And the agent isn't limited to one-off calls — “email me whenever an invoice is paid” becomes an automations.create call that wires a trigger to an action server-side, so it keeps running long after the conversation ends (discover triggers and actions via automations.catalog).
The full tool catalog is public — /api/mcp/tools — and a quick way to see what an agent can do without connecting first.
Connect a client
Claude Desktop
macOS, Windows, Linux — the easiest one
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). Add Guliel under mcpServers:
claude_desktop_config.json{
"mcpServers": {
"guliel": {
"command": "npx",
"args": ["-y", "@guliel/mcp-server"]
}
}
}Restart Claude Desktop. The first time you ask Claude to do something with Guliel — e.g. “list my customers”— a browser window opens. Sign in, pick which organizations + scopes to grant, and that's it.
Claude Code
The Anthropic CLI — use Guliel's hosted HTTP MCP server
Add Guliel once at user scope:
claude mcp add --transport http --scope user guliel https://guliel.com/api/mcp/sseUse the copied app/API URL exactly. In production it resolves to https://app.guliel.com/api/mcp/sse; preview deployments use their own origin, and legacy marketing-domain MCP URLs redirect only as a compatibility fallback.
Then start the OAuth login explicitly:
claude mcp login gulielClaude Code can also surface auth-needed servers from /mcp, but claude mcp login gulielis the clearest path: it opens Guliel's consent screen, stores the OAuth token in Claude Code, and makes the tools available before your first prompt. Confirm the server with claude mcp list.
Prefer the local stdio bridge instead? Use:
claude mcp add --scope user guliel -- npx -y @guliel/mcp-serverCursor
The IDE — drop Guliel into your editor
Edit ~/.cursor/mcp.json:
~/.cursor/mcp.json{
"mcpServers": {
"guliel": {
"command": "npx",
"args": ["-y", "@guliel/mcp-server"]
}
}
}Reload Cursor. The agent picks up the new tools on next chat.
ChatGPT — cloud agents
No local install. Add the remote MCP URL.
In ChatGPT, open Settings → Connectors and add a new MCP connector with this URL:
https://guliel.com/api/mcp/sseChatGPT discovers our OAuth metadata at /.well-known/oauth-authorization-server and runs the consent dance inline. After you authorize, every Guliel tool is callable from a regular ChatGPT conversation.
Continue / other MCP clients
Anything that speaks the stdio transport works
Continue's .continue/config.json takes the standard MCP server descriptor:
.continue/config.json{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@guliel/mcp-server"]
}
}
]
}
}For any other client, point it at npx -y @guliel/mcp-server as an MCP stdio server. The bridge handles the OAuth flow on first run.
Try a prompt
Once Guliel is connected, paste this into your MCP client to see the bridge in action:
Create a draft invoice for Acme Corp:
- 5 hours of consulting at $200/hr
- 1 license at $1,200
- net 30 due date
Then list the last 5 expenses tagged "travel" so I can attach receipts.
Finally, set up an automation that emails me whenever an invoice is paid.Connect to a non-prod deployment
Self-hosting, staging, or any other Guliel instance? Override the host via the GULIEL_HOST environment variable. The bridge keeps a separate credential entry per host so you can have prod and staging connected at the same time.
claude_desktop_config.json — staging entry{
"mcpServers": {
"guliel-staging": {
"command": "npx",
"args": ["-y", "@guliel/mcp-server"],
"env": { "GULIEL_HOST": "https://staging.guliel.com" }
}
}
}Manage your connections
Every consent grant is a row at /dashboard/developer under the MCP clients tab. Revoke the authorization there and every active access + refresh token under it is invalidated immediately — the agent sees a 401 on its next call.
For Claude Code's hosted HTTP connection, claude mcp login guliel re-runs the OAuth flow and claude mcp logout gulielclears Claude's stored token. From the local bridge side, guliel-mcp logout wipes the local credential cache; guliel-mcp login re-runs the bridge OAuth flow.
OAuth discovery
Guliel publishes a standard RFC 8414 authorization-server metadata document. MCP clients that support OAuth auto-discovery (ChatGPT, Cursor, Claude Web) read this once to learn every endpoint:
curl https://guliel.com/.well-known/oauth-authorization-server