Attio Simple MCP Server
# Attio Simple MCP Server
An MCP (Model Context Protocol) server that integrates [Attio CRM](https://attio.com) with AI clients like Claude Code, Claude Desktop, ChatGPT, Windsurf, and Cursor.
This template was created by [Manoel Lemos](mailto:manoel@lemos.net) as a shortcut for people interested in deploying Attio MCP servers.
## Features
- **14 Tools** for managing companies, people, and notes in Attio
- **Schema Discovery** - Dynamically discover your workspace's objects and attributes
- **Type-Safe** - Full TypeScript with auto-generated Attio API types
## Available Tools
| Category | Tools |
|----------|-------|
| Schema | `get_workspace_schema` |
| Companies | `search_companies`, `get_company`, `create_company`, `update_company`, `manage_company_domains` |
| People | `search_people`, `get_person`, `create_person`, `update_person`, `manage_person_emails`, `manage_person_tags` |
| Notes | `create_note`, `get_note` |
## Quick Start
### 1. Install Dependencies
```bash
npm install
```
### 2. Configure Environment
```bash
cp .env.example .env
```
Edit `.env` and add your Attio API key:
```bash
ATTIO_API_KEY="your_api_key_here"
ATTIO_WORKSPACE_SLUG="your-workspace-slug" # Optional: for web URLs
```
Get your API key from [Attio Settings > Developers > API Keys](https://app.attio.com).
### 3. Build
```bash
npm run build
```
### 4. Configure Your AI Client
#### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
```json
{
"mcpServers": {
"attio": {
"command": "node",
"args": ["/absolute/path/to/attio-mcp/dist/index.js"],
"env": {
"ATTIO_API_KEY": "your_api_key_here",
"ATTIO_WORKSPACE_SLUG": "your-workspace-slug"
}
}
}
}
```
#### Claude Code
```bash
claude mcp add attio node /absolute/path/to/attio-mcp/dist/index.js
```
## Adding Custom Objects
This template includes tools for standard Attio objects (companies, people). To add tools for your custom objects:
1. Use `get_workspace_schema` to discover your workspace's objects and attributes
2. Copy an existing tool (e.g., `search-companies.ts`) as a template
3. Modify the API endpoint, fields, and types for your custom object
4. Register the new tool in `src/tools/index.ts`
## Development
```bash
npm run dev # Watch mode
npm run build # Build
npm test # Run tests
npm run test:watch # Watch tests
```
## License
MIT
TDQS
Scored across 14 tools
Each tool has a clearly distinct purpose with no ambiguity. For example, create_company, get_company, update_company, and search_companies are well-differentiated, and manage_company_domains handles specific domain operations without overlapping with update_company. The descriptions reinforce these distinctions, making misselection unlikely.
Tool names follow a consistent verb_noun pattern throughout, such as create_company, get_person, search_people, and update_company. The manage_* tools also adhere to this pattern, and there are no deviations in naming conventions, ensuring predictability and readability.
With 14 tools, the server is well-scoped for CRM operations, covering companies, people, notes, and schema. Each tool earns its place by providing specific functionality without redundancy, such as separate tools for creation, retrieval, updating, searching, and managing attributes like domains and emails.
The tool set offers comprehensive CRUD and lifecycle coverage for companies and people, including creation, retrieval, updating, searching, and attribute management. Minor gaps include the lack of delete operations for companies, people, or notes, but agents can likely work around this by using other methods or the server's inherent limitations.