Skip to main content
Glama
doppelgangersai

Context API MCP Server

Context API MCP Server

MCP (Model Context Protocol) server to access the doppelgangers.ai Social Media Context API.

This MCP server provides access to contextualized renderings (XML descriptions) of Twitter/X posts. The contextualization allows for:

  • More high-quality retrieval of relevant information from the posts,

  • More high-quality analysis of insights, trends, topics, etc. from the posts

The contextualization is achieved by adding the following information to the XML description of each post:

  • Descriptions of referenced posts and images

  • When the post is a reply in a conversation, the conversation or a summary of the conversation.

  • Metadata about the post (e.g., creation data, post ID, etc.)

Note that no descriptions are added yet related to referenced videos or links (external sites).

The XML structure helps to describe the relationship between posts and their context.

Using the available tools has a cost associated with it, with each call the credit balance is updated.

Features

  • search_relevant_posts: Semantic search of contextualized post renderings of a certain Twitter/X user, based on a natural language queries like "What does @visionscaper think about the future of AI?".

  • get_all_user_posts: Retrieve all contextualized post renderings of a specific Twitter/X user. This is useful to analyse the posts for insights, trends and topics over all posts.

  • check_credits: View your API credit balance and usage.

Related MCP server: grok-mcp-server

Installation

1. Get your API Key

Request an API key at dev.doppelgangers.ai:3003 or via the API:

curl -X POST https://dev.doppelgangers.ai:3003/auth/request-key \
  -H "Content-Type: application/json" \
  -d '{"email": "your@email.com", "name": "Your Name"}'

2. Configure Your Client

Add the following config to your MCP client:

{
  "mcpServers": {
    "context-api": {
      "command": "npx",
      "args": ["-y", "context-api-mcp"],
      "env": {
        "CONTEXT_API_KEY": "your-api-key-here"
      }
    }
  }
}

MCP Client configuration

Follow Amp's MCP guide and use the config provided above. You can also install the Context API MCP server using the CLI:

amp mcp add context-api -- npx context-api-mcp

To use the Context API MCP server follow the instructions from Antigravity's docs to install a custom MCP server. Add the following config to the MCP servers config:

{
  "mcpServers": {
    "context-api": {
      "command": "npx",
      "args": ["-y", "context-api-mcp"],
      "env": {
        "CONTEXT_API_KEY": "your-api-key-here"
      }
    }
  }
}

Note: If you encounter an "EOF" error, try using the absolute path to npx (e.g., /usr/local/bin/npx) or invoke the CLI script directly via node.

Use the Claude Code CLI to add the Context API MCP server (guide):

claude mcp add context-api npx context-api-mcp

Edit your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the Context API MCP server:

{
  "mcpServers": {
    "context-api": {
      "command": "npx",
      "args": ["-y", "context-api-mcp"],
      "env": {
        "CONTEXT_API_KEY": "your-api-key-here"
      }
    }
  }
}

After updating the configuration, restart Claude Desktop for changes to take effect.

Follow Cline's MCP guide and use the config provided above.

Follow the configure MCP guide using the standard config from above. You can also install the Context API MCP server using the Codex CLI:

codex mcp add context-api -- npx context-api-mcp

Start Copilot CLI:

copilot

Start the dialog to add a new MCP server by running:

/mcp add

Configure the following fields and press CTRL+S to save the configuration:

  • Server name: context-api

  • Server Type: [1] Local

  • Command: npx -y context-api-mcp

Follow the MCP install guide, with the standard config from above. You can also install the Context API MCP server using the VS Code CLI:

code --add-mcp '{"name":"context-api","command":"npx","args":["-y","context-api-mcp"],"env":{"CONTEXT_API_KEY":"your-api-key-here"}}'
  1. Open Cursor Settings

  2. Go to Features > MCP

  3. Click + Add New MCP Server

  4. Enter the following details:

    • Name: Context API

    • Type: command

    • Command: npx -y context-api-mcp

  5. Add your API key in the environment variables section if supported, or ensure it's set in your system environment.

Use the Factory CLI to add the Context API MCP server (guide):

droid mcp add context-api "npx -y context-api-mcp"

Install the Context API MCP server using the Gemini CLI.

Project wide:

gemini mcp add context-api npx context-api-mcp

Globally:

gemini mcp add -s user context-api npx context-api-mcp

Alternatively, follow the MCP guide and use the standard config from above.

Follow the configure MCP guide using the standard config from above.

Go to Settings | Tools | AI Assistant | Model Context Protocol (MCP) -> Add. Use the config provided above. The same way context-api-mcp can be configured for JetBrains Junie in Settings | Tools | Junie | MCP Settings -> Add. Use the config provided above.

In Kiro Settings, go to Configure MCP > Open Workspace or User MCP Config > Use the configuration snippet provided above.

Or, from the IDE Activity Bar > Kiro > MCP Servers > Click Open MCP Config. Use the configuration snippet provided above.

In Qoder Settings, go to MCP Server > + Add > Use the configuration snippet provided above.

Alternatively, follow the MCP guide and use the standard config from above.

Install the Context API MCP server using the Qoder CLI (guide):

Project wide:

qodercli mcp add context-api -- npx context-api-mcp

Globally:

qodercli mcp add -s user context-api -- npx context-api-mcp

Follow the Visual Studio MCP documentation to add the server using the standard config from above.

Go to Settings | AI | Manage MCP Servers -> + Add to add an MCP Server. Use the config provided above.

Follow the configure MCP guide using the standard config from above.

Edit your Zed settings file (settings.json):

{
  "mcp": {
    "servers": {
      "context-api": {
        "command": "npx",
        "args": ["-y", "context-api-mcp"],
        "env": {
          "CONTEXT_API_KEY": "your-api-key-here"
        }
      }
    }
  }
}

Usage Examples

Once configured, you can use the tools in your MCP client:

Search Relevant Posts

Semantic search of contextualized post renderings of a certain Twitter/X user, based on a natural language query.

What does @elonmusk think about AI regulation?

Get All User Posts

Retrieve all contextualized post renderings of a specific Twitter/X user. This tool is useful when you need to analyse posts for insights, trends and topics over all posts.

What has recently been the mood of @elonmusk?

Check Credits

Check your Context API credit balance and usage statistics.

How many API credits do I have left?

Tool Reference

search_relevant_posts

search_relevant_posts

Semantic search of contextualized post renderings of a certain Twitter/X user, based on a natural language query. Use this tool to find specific posts, relevant to the query.

Parameter

Type

Required

Description

query

string

Yes

Natural language search query

username

string

Yes

Twitter/X username (without @)

platform

string

No

Platform (default: "X")

get_all_user_posts

Retrieve all contextualized post renderings of a specific Twitter/X user. This tool is useful when you need to analyse posts for insights, trends and topics over all posts.

Parameter

Type

Required

Description

username

string

Yes

Twitter/X username (without @)

platform

string

No

Platform (default: "X")

simple

boolean

No

If true, returns simplified post renderings without metadata

limit

number

No

Max results to return (default: all)

offset

number

No

Pagination offset (default: 0)

check_credits

Check your Context API credit balance and usage statistics. No parameters required.

Environment Variables

Variable

Required

Default

Description

CONTEXT_API_KEY

Yes

-

Your Context API key

CONTEXT_API_URL

No

https://dev.doppelgangers.ai:3003

API base URL (optional)

Troubleshooting

Server not showing in Client

  1. Ensure you have Node.js 18+ installed

  2. Check that CONTEXT_API_KEY is set correctly

  3. Restart your client completely

API errors

Check the client logs for detailed error messages. The server outputs to stderr to avoid interfering with the MCP protocol.

Test the server manually

CONTEXT_API_KEY=your-key npx context-api-mcp

Development

To run the server from source:

  1. Clone the repository

  2. Install dependencies:

    npm install
  3. Build the project:

    npm run build
  4. Run the server:

    node dist/index.js

Available Tools

3 tools
check_creditsA

Check your Context API credit balance and usage statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully bears the burden. It discloses a read-only intent but does not detail authentication requirements, rate limits, or what happens on error. The behavior is simple but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, complete sentence that is front-loaded and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple query but lacks details on return values (e.g., what usage statistics are included) since no output schema exists. Could be improved by mentioning the structure of the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100%. According to guidelines, baseline is 4. No additional parameter information is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks credit balance and usage statistics, with a specific verb 'check' and resource 'Context API credit balance'. It unambiguously distinguishes from sibling tools focused on posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking credit status, and sibling tools are unrelated (posts), so context is clear. However, no explicit when/when-not or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_user_postsA

Retrieve all contextualized post renderings of a specific Twitter/X user. This tool is useful when you need to analyse posts for insights, trends and topics over all posts. For instance, to answer queries such as:

  • "What topics does @elonmusk tweet most about?"

  • "What has recently been the mood of @elonmusk?"

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesTwitter/X username (without @)
platformNoPlatform. Currently only 'X' is supported.X
simpleNoIf true, returns simplified post renderings, without metadata such as creation date, post ID, etc.
limitNoMax results to return (default: all)
offsetNoPagination offset

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must cover behavioral traits. It describes retrieving posts but does not disclose side effects, authentication needs, rate limits, pagination behavior, or what 'contextualized' means. It implies a read operation but lacks necessary detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear first sentence and uses bullet example queries. It is front-loaded and efficient, though the examples could be integrated more tightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters, no output schema, and no annotations, the description is incomplete. It lacks details on return format, pagination, rate limits, and what 'contextualized' entails, which are needed for effective usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema for parameters like username, platform, simple, limit, offset. No extra value or deficiency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieve' and the resource 'all contextualized post renderings of a specific Twitter/X user'. It distinguishes from sibling tools like 'search_relevant_posts' by focusing on a single user's all posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context with example queries ('What topics does @elonmusk tweet most about?') and states it's for analyzing posts for insights. However, it does not specify when not to use or explicitly contrast with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_relevant_postsA

Semantic search of contextualized post renderings of a certain Twitter/X user, based on a natural language query. Twitter/X username and platform (= X) must be provided. Use this tool to find specific posts, relevant to the query.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query. Use natural language to describe what you're looking for. For instance: * "What does @elonmusk think about AI regulation?" or * "What is @hosseeb's prediction on the price of Bitcoin?"
usernameYesTwitter/X username to search within (without @). This argument is required.
platformNoPlatform to search. Currently only 'X' (Twitter) is supported.X

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description fails to disclose behaviors such as rate limits, authentication requirements, or how results are ordered. Only a high-level 'semantic search' is mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. The first sentence defines the core function; the second provides usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 3 parameters and no output schema, the description is minimal but adequate. It lacks details on result format or search behavior, which could be inferred.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed query examples. The description merely restates requirements already in schema, adding no extra meaningful context about parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs semantic search on a user's posts using natural language. It distinguishes from sibling 'get_all_user_posts' by focusing on relevance to a query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description encourages use 'to find specific posts' but does not explicitly contrast with alternatives like 'get_all_user_posts' or provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.8
    • First observedcheck_credits
    • First observedget_all_user_posts
    • First observedsearch_relevant_posts

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clear, non-overlapping purpose: credits check, full post retrieval, and semantic search. No ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (check_credits, get_all_user_posts, search_relevant_posts).

Tool Count4/5

Three tools is slightly minimal but well-scoped for the server's focused purpose of analyzing Twitter/X user posts. The count is not excessive or too thin.

Completeness4/5

Covers the core operations for the domain: account status, exhaustive post retrieval, and semantic search. Minor gaps like single post or user profile are not critical for the intended analysis tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables searching X (formerly Twitter) using xAI's Responses API with support for filtering by handles, date ranges, and media understanding, returning structured results with citations.
    1
    31
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables real-time search of X (Twitter) posts, user timelines, and trends using either xAI's Responses API or the official X API v2.
    4
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/doppelgangersai/context-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server