Back to Browse

Recordcrm MCP Server

Developer ToolsModerate6.1MCP RegistryLocal
Free

Server data from the Official MCP Registry

Attio CRM records, companies, deals, lists, and members via the Attio API.

About

Attio CRM records, companies, deals, lists, and members via the Attio API.

Security Report

6.1
Moderate6.1Moderate Risk

recordcrm is a small, well-structured Attio CRM client that requires an API token before making any request and sends it only as a Bearer header to the Attio API. The main concerns are low-severity: the ATTIO_API_URL override could send the token to a non-Attio host if misconfigured, and upstream error bodies are echoed back to the caller. Network and environment-variable access match the server's CRM purpose, and no exfiltration, shell execution, or hardcoded secrets were found. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.

8 files analyzed · 8 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

ATTIO_API_KEYRequired
ATTIO_API_URLRequired

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-cloudcorprecords-recordcrm": {
      "env": {
        "ATTIO_API_KEY": "your-attio-api-key-here",
        "ATTIO_API_URL": "your-attio-api-url-here"
      },
      "args": [
        "-y",
        "@reneturcios/recordcrm"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

recordcrm

recordcrm is a small client for the Attio CRM: it searches records with free-text or structured filters, creates records in any object, reads a single record or an attribute's definition and options, creates and updates company and deal records, lists workspace lists and their entries, and looks up workspace members — all through the Attio API v2.

This package is a clean-room rebuild, and a labelled core subset: it covers 12 of the 19 universal operations plus scoped writes documented for the original Attio MCP server. The omitted operations are listed under "Scope" below.

How it talks to the service

Every tool needs an Attio API token:

export ATTIO_API_KEY="your token"
# ATTIO_ACCESS_TOKEN is accepted as a fallback when ATTIO_API_KEY is unset.
# Optional override (default: https://api.attio.com/v2)
export ATTIO_API_URL="https://api.attio.com/v2"

With no token set, every call fails with an error naming ATTIO_API_KEY, before any request is made.

Wire-format note: the original project's README documents the tools and their purposes; the endpoint shapes here follow the public Attio API v2 and are documented reconstructions. Records live under /v2/objects/{object}/records; record search posts to the records query endpoint (.../records/query) with a full_text query clause when a query is given, or a filter object for advanced search; writes wrap attribute values as { "data": { "values": ... } }; attribute options are read from the attribute definition at /v2/objects/{object}/attributes/{attribute}. Responses are parsed as JSON (an empty success body reads as { "status": "ok" }), and an upstream HTTP error is reported with its status and body text.

Install

npx @reneturcios/recordcrm records_search '{"object":"companies","query":"acme"}'

Or run the container image:

docker run -i ghcr.io/cloudcorprecords/recordcrm

The container defaults to the MCP server. Pass CLI arguments to use it as a CLI instead.

CLI

The CLI mirrors the tools: one subcommand per tool, taking its arguments as a single JSON object.

recordcrm records_search '{"object":"companies","query":"acme","limit":5}'
recordcrm records_search_advanced '{"object":"companies","filters":{"name":{"$contains":"acme"}}}'
recordcrm records_create '{"object":"people","data":{"name":[{"value":"Ada"}]}}'
recordcrm records_get_info '{"object":"people","record_id":"..."}'
recordcrm lists_list '{}'
recordcrm --version

Exit codes: 0 on success, 1 on an API or validation error (the error names the problem), 2 for usage errors.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

npx -y @reneturcios/recordcrm mcp

MCP client configuration:

{
  "mcpServers": {
    "recordcrm": {
      "command": "npx",
      "args": ["-y", "@reneturcios/recordcrm", "mcp"],
      "env": { "ATTIO_API_KEY": "your token" }
    }
  }
}

Tools

ToolInputWhat it does
records_searchobject (required), query, limitSearch records in an object by free-text query.
records_search_advancedobject (required), filters (required), limitSearch records in an object with structured filters.
records_createobject (required), data (required)Create a record in an object from attribute values.
records_get_infoobject (required), record_id (required)Fetch one record by ID from an object.
records_get_attribute_optionsobject (required), attribute (required)Get an attribute definition, including its select options.
companies_createdata (required)Create a company record from attribute values.
companies_updaterecord_id (required), data (required)Update a company record by ID.
deals_createdata (required)Create a deal record from attribute values.
deals_updaterecord_id (required), data (required)Update a deal record by ID.
lists_list—List all lists in the workspace.
list_entries_listlist (required), limitList entries in a list.
workspace_members_getworkspace_member_id (required)Fetch one workspace member by ID.

Scope

Omitted from this core subset: records_search_by_relationship, records_get_interactions, records_batch, the universal records_update / records_delete operations, lists_create, lists_update_configuration, list_entries_filter, list_entries_manage, records_get_list_memberships, diagnostics_get, and the universal notes/tasks operations. The original's field-mapping configuration is also not reproduced: this subset passes attribute values and filters through in Attio API shape directly. Search results, record contents, and list data are produced by the upstream Attio service; this package reproduces the tool surface and the request/response handling, not that service's data.

Development

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, fake fetch only, no network
npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

Reviews

No reviews yet

Be the first to review this server!