This server, based on the Model Context Protocol (MCP), allows Claude or any other MCP-compatible client to interact with your Audiense Insights account. It extracts marketing insights and audience analysis from Audiense reports, covering demographic, cultural, influencer, and content engagement analysis.
π Prerequisites
Before using this server, ensure you have:
- Node.js (v18 or higher)
- Claude Desktop App
- Audiense Insights Account with API credentials
- X/Twitter API Bearer Token (optional, for enriched influencer data)
Installing via
To install Audiense Insights Server for Claude Desktop automatically via :
npx -y @/cli@latest install @AudienseCo/mcp-audiense-insights --client claude
βοΈ Configuring Claude Desktop
- Open the configuration file for Claude Desktop:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
code %AppData%\Claude\claude_desktop_config.json
- Add or update the following configuration:
"mcpServers": {
"audiense-insights": {
"command": "/opt/homebrew/bin/node",
"args": [
"/ABSOLUTE/PATH/TO/YOUR/build/index.js"
"env": {
"AUDIENSE_CLIENT_ID": "your_client_id_here",
"AUDIENSE_CLIENT_SECRET": "your_client_secret_here",
"TWITTER_BEARER_TOKEN": "your_token_here"
3. Save the file and restart Claude Desktop.
## π οΈ Available Tools
### π `get-reports`
**Description**: Retrieves the list of **Audiense insights reports** owned by the authenticated user.
- **Parameters**: _None_
- **Response**:
- List of reports in JSON format.
### π `get-report-info`
**Description**: Fetches detailed information about a **specific intelligence report**, including:
- Status
- Segmentation type
- Audience size
- Segments
- Access links
- **Parameters**:
- `report_id` _(string)_: The ID of the intelligence report.
- **Response**:
- Full report details in JSON format.
- If the report is still processing, returns a message indicating the pending status.
### π `get-audience-insights`
**Description**: Retrieves **aggregated insights** for a given **audience**, including:
- **Demographics**: Gender, age, country.
- **Behavioral traits**: Active hours, platform usage.
- **Psychographics**: Personality traits, interests.
- **Socioeconomic factors**: Income, education status.
- **Parameters**:
- `audience_insights_id` _(string)_: The ID of the audience insights.
- `insights` _(array of strings, optional)_: List of specific insight names to filter.
- **Response**:
- Insights formatted as a structured text list.
### π `get-baselines`
**Description**: Retrieves available **baseline audiences**, optionally filtered by **country**.
- **Parameters**:
- `country` _(string, optional)_: ISO country code to filter by.
- **Response**:
- List of baseline audiences in JSON format.
### π `get-categories`
**Description**: Retrieves the list of **available affinity categories** that can be used in influencer comparisons.
- **Parameters**: _None_
- **Response**:
- List of categories in JSON format.
### π `compare-audience-influencers`
**Description**: Compares **influencers** of a given audience with a **baseline audience**. The baseline is determined as follows:
- If a **single country** represents more than 50% of the audience, that country is used as the baseline.
- Otherwise, the **global baseline** is used.
- If a **specific segment** is selected, the full audience is used as the baseline.
Each influencer comparison includes:
- **Affinity (%)** β How well the influencer aligns with the audience.
- **Baseline Affinity (%)** β The influencerβs affinity within the baseline audience.
- **Uniqueness Score** β How distinct the influencer is compared to the baseline.
- **Parameters**:
- `audience_influencers_id` _(string)_: ID of the audience influencers.
- `baseline_audience_influencers_id` _(string)_: ID of the baseline audience influencers.
- `cursor` _(number, optional)_: Pagination cursor.
- `count` _(number, optional)_: Number of items per page (default: 200).
- `bio_keyword` _(string, optional)_: Filter influencers by **bio keyword**.
- `entity_type` _(enum: `person` | `brand`, optional)_: Filter by entity type.
- `followers_min` _(number, optional)_: Minimum number of followers.
- `followers_max` _(number, optional)_: Maximum number of followers.
- `categories` _(array of strings, optional)_: Filter influencers by **categories**.
- `countries` _(array of strings, optional)_: Filter influencers by **country ISO codes**.
- **Response**:
- List of influencers with **affinity scores, baseline comparison, and uniqueness scores** in JSON format.
### π `get-audience-content`
**Description**: Retrieves **audience content engagement details**, including:
- **Liked Content**: Most popular posts, domains, emojis, hashtags, links, media, and a word cloud.
- **Shared Content**: Most shared content categorized similarly.
- **Influential Content**: Content from influential accounts.
Each category contains:
- `popularPost`: Most engaged posts.
- `topDomains`: Most mentioned domains.
- `topEmojis`: Most used emojis.
- `topHashtags`: Most used hashtags.
- `topLinks`: Most shared links.
- `topMedia`: Shared media.
- `wordcloud`: Most frequently used words.
- **Parameters**:
- `audience_content_id` _(string)_: The ID of the audience content.
- **Response**:
- Content engagement data in JSON format.
### π `report-summary`
**Description**: Generates a **comprehensive summary** of an Audiense report, including:
- Report metadata (title, segmentation type)
- Full audience size
- Detailed segment information
- **Top insights** for each segment (bio keywords, demographics, interests)
- **Top influencers** for each segment with comparison metrics
- **Parameters**:
- `report_id` _(string)_: The ID of the intelligence report to summarize.
- **Response**:
- Complete report summary in JSON format with structured data for each segment
- For pending reports: Status message indicating the report is still processing
- For reports without segments: Message indicating there are no segments to analyze
## π‘ Predefined Prompts
This server includes a preconfigured prompts
- `audiense-demo`: Helps analyze Audiense reports interactively.
- `segment-matching`: A prompt to match and compare audience segments across Audiense reports, identifying similarities, unique traits, and key insights based on demographics, interests, influencers, and engagement patterns.
**Usage:**
- Accepts a reportName argument to find the most relevant report.
- If an ID is provided, it searches by report ID instead.
Use case: Structured guidance for audience analysis.
## π οΈ Troubleshooting
### Tools Not Appearing in Claude
1. Check Claude Desktop logs:
tail -f ~/Library/Logs/Claude/mcp*.log
2. Verify environment variables are set correctly.
3. Ensure the absolute path to index.js is correct.
### Authentication Issues
- Double-check OAuth credentials.
- Ensure the refresh token is still valid.
- Verify that the required API scopes are enabled.
## π Viewing Logs
To check server logs:
### For MacOS/Linux:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
### For Windows:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
## π Security Considerations
- Keep API credentials secure β never expose them in public repositories.
- Use environment variables to manage sensitive data.
## π License
This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.