npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@attrove/mcp

v0.1.6

Published

MCP server for Attrove - AI-powered context retrieval for Claude and Cursor

Readme

@attrove/mcp

MCP (Model Context Protocol) server for Attrove. Enables AI assistants like Claude and Cursor to access your users' unified context from Gmail, Slack, Google Calendar, and more.

Installation

npm install @attrove/mcp
# or
yarn add @attrove/mcp
# or
pnpm add @attrove/mcp

Quick Start

Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "attrove": {
      "command": "npx",
      "args": ["@attrove/mcp"],
      "env": {
        "ATTROVE_API_KEY": "sk_...",
        "ATTROVE_USER_ID": "user-uuid"
      }
    }
  }
}

Cursor

  1. Open Cursor Settings (Cmd+, on macOS, Ctrl+, on Windows/Linux)
  2. Search for "MCP" or navigate to Features > MCP Servers
  3. Click "Edit in settings.json" or add directly:
{
  "mcpServers": {
    "attrove": {
      "command": "npx",
      "args": ["@attrove/mcp"],
      "env": {
        "ATTROVE_API_KEY": "sk_...",
        "ATTROVE_USER_ID": "user-uuid"
      }
    }
  }
}
  1. Restart Cursor for changes to take effect
  2. In the chat, you can now ask questions about your connected integrations

Claude Code (Terminal)

If using Claude Code in the terminal, the MCP server is configured via environment variables:

export ATTROVE_API_KEY="sk_..."
export ATTROVE_USER_ID="user-uuid"

Direct CLI Usage

ATTROVE_API_KEY=sk_... ATTROVE_USER_ID=user-uuid npx @attrove/mcp

Common Use Cases

Once connected, you can ask your AI assistant natural language questions. Here are some examples:

Meeting prep:

"What context do I need for my 2pm meeting with the marketing team?"

Email follow-ups:

"Are there any emails from last week that I haven't responded to?"

Project status:

"What's the latest on the Q4 roadmap discussions?"

People search:

"What has John from Acme Corp been asking about recently?"

Historical context:

"Find the thread where we discussed the pricing changes last month"

Available Tools

attrove_query

Ask questions about the user's communications and get AI-generated answers.

Parameters:

  • query (required): The question to ask
  • integration_ids (optional): Filter to specific integration IDs (UUIDs, e.g., ["550e8400-e29b-41d4-a716-446655440000"])
  • include_sources (optional): Include source snippets

Example prompts:

  • "What did Sarah say about the Q4 budget?"
  • "Summarize my meeting with the engineering team"
  • "What are the action items from yesterday's standup?"
  • "When is my next meeting with the product team?"
  • "What context do I need before my 3pm call?"

attrove_search

Search for specific messages or conversations.

Parameters:

  • query (required): The search query
  • after_date (optional): Only messages after this date (ISO 8601)
  • before_date (optional): Only messages before this date
  • sender_domains (optional): Filter by sender domains
  • include_body_text (optional): Include message content (default: true)

Example prompts:

  • "Find all emails about the product launch"
  • "Show me conversations with the marketing team"
  • "Search for messages mentioning the deadline extension"
  • "Find discussions with acme.com from last month"

attrove_integrations

List the user's connected integrations.

Parameters: None

Example prompts:

  • "What services are connected?"
  • "Show me my integrations"

Environment Variables

| Variable | Required | Description | |----------|----------|-------------| | ATTROVE_API_KEY | Yes | Your Attrove API key (sk_...) | | ATTROVE_USER_ID | Yes | User ID to scope API calls | | ATTROVE_BASE_URL | No | Custom API base URL | | ATTROVE_DEBUG | No | Set to true for verbose error logging |

Programmatic Usage

You can also use the server programmatically:

import { createServer, startServer } from '@attrove/mcp';

// Create a server instance
const server = createServer({
  apiKey: 'sk_...',
  userId: 'user-uuid'
});

// Or start directly with stdio transport
await startServer({
  apiKey: 'sk_...',
  userId: 'user-uuid'
});

Getting API Credentials

  1. Sign up at attrove.com
  2. Create an organization in the dashboard
  3. Generate an API key (sk_...)
  4. Provision a user to get a user ID
import { Attrove } from '@attrove/sdk';

const admin = Attrove.admin({
  clientId: 'your-client-id',
  clientSecret: 'your-client-secret'
});

// Create a user
const { id, apiKey } = await admin.users.create({
  email: '[email protected]'
});

// Use `apiKey` as ATTROVE_API_KEY and `id` as ATTROVE_USER_ID

Troubleshooting

"ATTROVE_API_KEY environment variable is required"

Make sure you've set the environment variables correctly in your MCP configuration.

Tools not showing up

  1. Restart Claude/Cursor after configuration changes
  2. Check the MCP server logs for errors
  3. Verify your API key is valid

Debugging errors

Set ATTROVE_DEBUG=true to enable verbose error logging with stack traces:

{
  "mcpServers": {
    "attrove": {
      "command": "npx",
      "args": ["@attrove/mcp"],
      "env": {
        "ATTROVE_API_KEY": "sk_...",
        "ATTROVE_USER_ID": "user-uuid",
        "ATTROVE_DEBUG": "true"
      }
    }
  }
}

Rate limiting

The Attrove API has rate limits. If you're making many requests, you may need to wait before trying again.

Requirements

  • Node.js 18.0.0 or later

AI-Friendly Documentation

For AI assistants and code generation tools, Attrove provides machine-readable documentation:

  • llms.txt: https://attrove.com/llms.txt - Condensed API reference for LLMs
  • Quickstart: https://github.com/attrove/quickstart - Example code with CLAUDE.md context

Links

License

MIT