Anam MCP Server
OfficialSummary: This legacy Anam MCP server lets you manage Anam AI personas, avatars, voices, sessions, knowledge, tools, LLMs, share links, avatar videos, and meeting bots from an MCP client.
Create, list, get, update, and delete personas with avatar, voice, LLM, and system prompt settings.
List/search/create/update/delete avatars and voices.
Manage webhook/knowledge tools and LLM configurations.
Create session tokens and inspect sessions and recordings.
Manage knowledge folders/groups/documents, search them, upload documents, and get download URLs.
Manage share links and generate avatar videos from text scripts.
Add, list, check, and remove Anam avatars in Zoom, Google Meet, and Teams via meeting bots.
Note: the README marks this local package deprecated; the hosted replacement is https://lab.anam.ai/mcp with OAuth, renamed tools, and additional tools.
Adds AI avatars to Google Meet video meetings via integration with Recall AI.
Adds AI avatars to Zoom video meetings via integration with Recall AI.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Anam MCP Server list my personas"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Anam MCP Server
This server has moved. Anam now hosts its MCP server at
https://lab.anam.ai/mcp. There's nothing to install: you sign in with
your Anam account over OAuth instead of pasting an API key, and new tools
arrive without an update.
This Python package (anam-mcp on PyPI) is no longer maintained. Switch to
the hosted server using the steps below, or follow the
setup guide and the
docs.
Connect to the hosted server
Server URL:
https://lab.anam.ai/mcpThe first time you connect, your app opens Anam in a browser. Sign in, choose one organization, and choose Full access or Read only.
Claude (claude.ai and Claude Desktop)
Open Settings, then Connectors, and choose Add custom connector.
Name it Anam, paste
https://lab.anam.ai/mcpand add it.Choose Connect and sign in to Anam.
On Team and Enterprise plans, an owner adds the connector in the organization's settings first.
ChatGPT
Open Plugins, choose the plus button, then Add custom MCP server.
Name it Anam, paste
https://lab.anam.ai/mcpand choose OAuth.Accept the warning, choose Create as a plugin and sign in to Anam.
Claude Code
claude mcp add --transport http --scope user anam https://lab.anam.ai/mcp
claude mcp login anamCursor
Add Anam to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:
{
"mcpServers": {
"anam": {
"url": "https://lab.anam.ai/mcp"
}
}
}Cursor asks you to sign in to Anam when it first connects.
VS Code
code --add-mcp '{"name":"anam","type":"http","url":"https://lab.anam.ai/mcp"}'Codex
codex mcp add anam --url https://lab.anam.ai/mcp
codex mcp login anamOther clients
Add https://lab.anam.ai/mcp as a remote MCP server (Streamable HTTP). Sign-in
is OAuth 2.1 with PKCE; clients register themselves. See the
setup guide for details.
Agents without a browser: API keys
Your Anam API key still works. Send it as a Bearer token instead of signing in:
{
"mcpServers": {
"anam": {
"url": "https://lab.anam.ai/mcp",
"headers": {
"Authorization": "Bearer <your Anam API key>"
}
}
}
}# Claude Code
claude mcp add --transport http anam https://lab.anam.ai/mcp \
--header "Authorization: Bearer $ANAM_API_KEY"
# Codex
codex mcp add anam --url https://lab.anam.ai/mcp --bearer-token-env-var ANAM_API_KEYCreate and revoke keys on the API keys page.
Per-client paths
https://lab.anam.ai/mcp serves every tool, so use it everywhere unless a
directory listing tells you otherwise. The paths /mcp/claude,
/mcp/chatgpt, /mcp/copilot, /mcp/gemini, /mcp/agentforce and
/mcp/muse serve the smaller tool sets made for those platforms' directory
listings.
Related MCP server: Corebee MCP Server
What changes when you switch
Sign-in: OAuth with your Anam account replaces
ANAM_API_KEY. API keys still work as a Bearer token.No local install: you no longer need Python,
uvoruvx.Meetings: inviting a persona to Google Meet, Zoom or Microsoft Teams no longer needs a Recall AI key.
Tool names: every tool now starts with
anam_. See the table below.
| Hosted server tool |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The hosted server also adds tools this package never had, such as
anam_quickstart, anam_persona_from_brief, session transcripts and search,
pronunciation dictionaries, integration guides and docs search. The
docs list them all.
Legacy: running anam-mcp locally
This package gets no new tools or fixes. Its last release is 0.1.13.
It needs version 1 of the mcp Python package. A fresh install now picks up
mcp 2.x, and the server then fails on startup with
No module named 'mcp.server.fastmcp'. Pin mcp<2 to keep it running:
{
"mcpServers": {
"anam": {
"command": "uvx",
"args": ["--with", "mcp<2", "anam-mcp"],
"env": {
"ANAM_API_KEY": "<your-api-key>"
}
}
}
}Variable | Description | Default |
| Your Anam API key (required) | - |
| API base URL |
|
| Recall AI API key, for the meeting tools | - |
| Avatar meet page URL |
|
| Text-to-avatar service URL |
|
The previous README, with the full list of this package's tools, is in this repository's history.
License
MIT License. See LICENSE.
Available Tools
54 toolsadd_avatar_to_meetingA
Add an Anam avatar to a video meeting (Zoom, Google Meet, Teams).
Creates an ephemeral session and deploys a Recall bot that shows the avatar as its camera feed. The avatar can hear and respond to meeting participants.
Args: meeting_url: Video conference URL (e.g., https://meet.google.com/abc-defg-hij) avatar_id: Anam avatar ID. Use search_avatars to find one. voice_id: Anam voice ID. Use search_voices to find one. system_prompt: Instructions for the avatar's personality and behavior. bot_name: Name shown in the meeting participant list (default: "Anam Avatar") llm_id: Optional LLM ID. Defaults to GPT-4o-mini. avatar_model: Avatar model ("cara-2" or "cara-3", default: cara-3)
Returns: Bot ID and status information
Inputs: meeting_url (required), avatar_id (required), voice_id (required), system_prompt (required), +3 more. Returns: result
create_avatarA
Create a custom avatar from an image URL.
Note: This feature is only available for enterprise and pro plans.
Args: name: Display name for the avatar image_url: URL of the image to use
Inputs: name (required), image_url (required). Returns: result
create_knowledge_folderB
Create a new knowledge folder for documents.
After creating, upload documents via Anam Lab UI or API.
Args: name: Folder name (e.g., "Product Documentation") description: Optional description
Inputs: name (required), description. Returns: result
create_knowledge_toolA
Create a knowledge tool for RAG (document search).
Args: name: Tool name in snake_case (e.g., "search_product_docs") description: When the LLM should use this tool folder_ids: List of knowledge folder UUIDs to search
Inputs: name (required), description (required), folder_ids (required). Returns: result
create_llmB
Create a custom LLM configuration.
Args: name: Display name for the LLM provider: LLM provider (e.g., "openai", "anthropic") model: Model name (e.g., "gpt-4", "claude-3") api_key: API key for the provider base_url: Custom base URL (for self-hosted models) temperature: Sampling temperature max_tokens: Maximum output tokens
Inputs: name (required), provider (required), model (required), api_key, +3 more. Returns: result
create_personaA
Create a new Anam persona with specified avatar, voice, and personality.
Args: name: Display name for the persona (e.g., "Customer Support Agent") avatar_id: UUID of the avatar. Use list_avatars or search_avatars to find one. voice_id: UUID of the voice. Use list_voices or search_voices to find one. system_prompt: Instructions defining the persona's personality and behavior. llm_id: UUID of the LLM. Defaults to Anam's standard LLM.
Inputs: name (required), avatar_id (required), voice_id (required), system_prompt (required), +1 more. Returns: result
create_session_tokenA
Create a session token for the Anam client SDK.
Use EITHER persona_id (for saved personas) OR individual config fields (ephemeral).
Args: persona_id: UUID of a saved persona (recommended for production) name: Persona name (ephemeral mode) avatar_id: Avatar UUID (ephemeral). Use search_avatars to find one. voice_id: Voice UUID (ephemeral). Use search_voices to find one. system_prompt: Personality instructions (ephemeral) llm_id: LLM UUID (ephemeral, defaults to GPT-4o-mini) avatar_model: Avatar model ("cara-2" or "cara-3", default: cara-3) max_session_length_seconds: Session timeout skip_greeting: Skip the initial greeting (default: False)
Inputs: persona_id, name, avatar_id, voice_id, +5 more. Returns: result
create_voiceB
Create a custom voice configuration.
Args: display_name: Display name for the voice provider: Voice provider (e.g., "cartesia", "elevenlabs") provider_voice_id: The voice ID from the provider gender: Gender of the voice ("MALE" or "FEMALE") country: Country code (e.g., "US", "GB") description: Optional description
Inputs: display_name (required), provider (required), provider_voice_id (required), gender, +2 more. Returns: result
create_webhook_toolA
Create a webhook tool for personas to call external APIs.
Args: name: Tool name in snake_case (e.g., "check_order_status") description: When the LLM should call this tool. Be specific. url: The HTTP endpoint to call method: HTTP method (GET, POST, PUT, PATCH, DELETE) await_response: Wait for response (False for fire-and-forget)
Inputs: name (required), description (required), url (required), method, +1 more. Returns: result
delete_avatarA
Delete a custom avatar by ID. Cannot delete stock avatars.
Args: avatar_id: The UUID of the avatar to delete
Inputs: avatar_id (required). Returns: result
delete_knowledge_documentB
Delete a knowledge document by ID.
Args: document_id: The UUID of the document to delete
Inputs: document_id (required). Returns: result
delete_knowledge_groupA
Delete a knowledge group by ID. This will also delete all documents in the group.
Args: group_id: The UUID of the knowledge group to delete
Inputs: group_id (required). Returns: result
delete_llmB
Delete an LLM by ID.
Args: llm_id: The UUID of the LLM to delete
Inputs: llm_id (required). Returns: result
delete_personaA
Delete a persona by ID. This action cannot be undone.
Args: persona_id: The UUID of the persona to delete
Inputs: persona_id (required). Returns: result
delete_toolC
Delete a tool by ID.
Args: tool_id: The UUID of the tool to delete
Inputs: tool_id (required). Returns: result
delete_voiceB
Delete a voice by ID.
Args: voice_id: The UUID of the voice to delete
Inputs: voice_id (required). Returns: result
generate_avatar_videoA
Generate an avatar video from a text script.
INTERNAL TESTING ONLY - This feature is in early access. Contact support@anam.ai for access.
Creates an MP4 video of an avatar speaking the provided script. The video generation runs asynchronously and may take 30-120 seconds depending on script length.
Args: script: The text for the avatar to speak persona_id: Use a saved persona (provide this OR avatar_id + voice_id) avatar_id: Avatar ID for ephemeral session (requires voice_id) voice_id: Voice ID for ephemeral session (requires avatar_id) avatar_model: Avatar model to use (default: cara-3) poll_interval: Seconds between status checks (default: 3.0) max_wait: Maximum seconds to wait for completion (default: 600.0)
Stock Avatars (use with voice_id): Female: - Liv: 071b0286-4cce-4808-bee2-e642f1062de3 - Mia: edf6fdcb-acab-44b8-b974-ded72665ee26 - Sophie: 6dbc1e47-7768-403e-878a-94d7fcc3677b - Bella: dc9aa3e1-32f2-499e-9921-ecabac1076fc - Julia: edcb8f1a-334f-4cdb-871c-5c513db806a7 - Anne: 27e12daa-50fc-4384-93c2-ebca73f1f78d - Layla: ae2ea8c1-db28-47e3-b6ea-493e4ed3c554 Male: - Gabriel: 6cc28442-cccd-42a8-b6e4-24b7210a09c5 - Finn: 8a339c9f-0666-46bd-ab27-e90acd0409dc - Hunter: ecfb2ddb-80ec-4526-88a7-299a4738957c - Kevin: ccf00c0e-7302-455b-ace2-057e0cf58127 - Richard: 19d18eb0-5346-4d50-a77f-26b3723ed79d - William: 81b70170-2e80-4e4b-a6fb-e04ac110dc4b
Recommended Voices: Female: Jessica - b138c2a2-ba66-4887-95d5-1a57093fc92d Male: Adam - e54745c7-9439-44c3-b61a-193b42cce5bd
Returns: Download URL for the generated video, or error message
Inputs: script (required), persona_id, avatar_id, voice_id, +3 more. Returns: result
get_avatarB
Get details of a specific avatar by ID.
Args: avatar_id: The UUID of the avatar to retrieve
Inputs: avatar_id (required). Returns: result
get_knowledge_documentA
Get details of a specific knowledge document by ID.
Args: document_id: The UUID of the document to retrieve
Inputs: document_id (required). Returns: result
get_knowledge_document_downloadC
Get download URL for a knowledge document.
Args: document_id: The UUID of the document
Inputs: document_id (required). Returns: result
get_knowledge_groupA
Get details of a specific knowledge group by ID.
Args: group_id: The UUID of the knowledge group to retrieve
Inputs: group_id (required). Returns: result
get_llmB
Get details of a specific LLM by ID.
Args: llm_id: The UUID of the LLM to retrieve
Inputs: llm_id (required). Returns: result
get_meeting_bot_statusA
Check the status of a Recall meeting bot.
Args: bot_id: The Recall bot ID returned by add_avatar_to_meeting
Returns: Bot status including meeting URL, join status, etc.
Inputs: bot_id (required). Returns: result
get_personaA
Get details of a specific persona by ID.
Args: persona_id: The UUID of the persona to retrieve
Inputs: persona_id (required). Returns: result
get_sessionA
Get details of a specific session by ID.
Args: session_id: The UUID of the session to retrieve
Inputs: session_id (required). Returns: result
get_session_recordingB
Get recording information for a session.
Args: session_id: The UUID of the session
Inputs: session_id (required). Returns: result
get_toolA
Get details of a specific tool by ID.
Args: tool_id: The UUID of the tool to retrieve
Inputs: tool_id (required). Returns: result
get_voiceA
Get details of a specific voice by ID.
Args: voice_id: The UUID of the voice to retrieve
Inputs: voice_id (required). Returns: result
list_avatarsA
List all available avatars.
Returns a formatted summary of avatars with IDs, names, variants, and type (stock/custom).
Args: page: Page number (default: 1) per_page: Items per page (default: 100)
Inputs: page, per_page. Returns: result
list_knowledge_documentsA
List all documents in a knowledge group.
Args: group_id: The UUID of the knowledge group page: Page number (default: 1) per_page: Items per page (default: 100)
Inputs: group_id (required), page, per_page. Returns: result
list_knowledge_foldersA
List all knowledge folders in your organization.
Knowledge folders contain documents for RAG capabilities.
Inputs: no named parameters. Returns: result
list_llmsB
List all available LLMs.
Args: page: Page number (default: 1) per_page: Items per page (default: 100)
Inputs: page, per_page. Returns: result
list_meeting_botsB
List all Recall meeting bots.
Shows recent bots including their status and meeting URLs.
Args: limit: Maximum number of bots to return (default: 20)
Inputs: limit. Returns: result
list_personasA
List all personas in your Anam account.
Returns a formatted summary of personas with their IDs, names, and avatars.
Args: page: Page number (default: 1) per_page: Items per page (default: 100)
Inputs: page, per_page. Returns: result
list_sessionsA
List all sessions in your account.
Args: page: Page number (default: 1) per_page: Items per page (default: 100)
Inputs: page, per_page. Returns: result
list_toolsA
List all tools in your organization.
Returns webhook tools, knowledge tools, and client tools that can be attached to personas.
Args: page: Page number (default: 1) per_page: Items per page (default: 100)
Inputs: page, per_page. Returns: result
list_voicesB
List all available voices.
Returns a formatted summary of voices with IDs, names, and languages. Over 400 voices available in 50+ languages.
Args: page: Page number (default: 1) per_page: Items per page (default: 100)
Inputs: page, per_page. Returns: result
remove_avatar_from_meetingA
Remove an avatar from a video meeting.
Makes the Recall bot leave the meeting gracefully.
Args: bot_id: The Recall bot ID returned by add_avatar_to_meeting
Inputs: bot_id (required). Returns: result
search_avatarsA
Search avatars by name.
Fetches all avatars and filters by name match. Use this to find avatars like "Cara", "Mia", "Gabriel", etc.
Args: query: Name to search for (case-insensitive, partial match) stock_only: If True, only return stock avatars (not custom)
Inputs: query (required), stock_only. Returns: result
search_knowledge_groupC
Search within a knowledge group for relevant documents.
Args: group_id: The UUID of the knowledge group to search query: Search query limit: Maximum number of results
Inputs: group_id (required), query (required), limit. Returns: result
search_voicesA
Search voices by name, country, or gender.
Fetches all voices and filters by the specified criteria.
Args: query: Name to search for (case-insensitive, partial match) country: Country code to filter by (e.g., "US", "GB", "FR", "DE", "PT") gender: Gender to filter by ("MALE" or "FEMALE")
Inputs: query, country, gender. Returns: result
update_avatarA
Update a custom avatar. Only provide the fields you want to change.
Args: avatar_id: The UUID of the avatar to update name: New internal name display_name: New display name
Inputs: avatar_id (required), name, display_name. Returns: result
update_knowledge_documentB
Update a knowledge document.
Args: document_id: The UUID of the document to update name: New document name
Inputs: document_id (required), name. Returns: result
update_knowledge_groupB
Update a knowledge group. Only provide the fields you want to change.
Args: group_id: The UUID of the knowledge group to update name: New name description: New description
Inputs: group_id (required), name, description. Returns: result
update_llmA
Update an LLM configuration. Only provide the fields you want to change.
Args: llm_id: The UUID of the LLM to update name: New display name temperature: New sampling temperature max_tokens: New maximum output tokens
Inputs: llm_id (required), name, temperature, max_tokens. Returns: result
update_personaA
Update an existing persona. Only provide the fields you want to change.
Args: persona_id: The UUID of the persona to update name: New display name avatar_id: New avatar UUID voice_id: New voice UUID system_prompt: New personality instructions llm_id: New LLM UUID
Inputs: persona_id (required), name, avatar_id, voice_id, +2 more. Returns: result
update_toolA
Update a tool. Only provide the fields you want to change.
Args: tool_id: The UUID of the tool to update name: New tool name description: New description url: New webhook URL (for webhook tools) method: New HTTP method (for webhook tools) await_response: Whether to wait for response (for webhook tools)
Inputs: tool_id (required), name, description, url, +2 more. Returns: result
update_voiceA
Update a voice configuration. Only provide the fields you want to change.
Args: voice_id: The UUID of the voice to update display_name: New display name description: New description
Inputs: voice_id (required), display_name, description. Returns: result
upload_knowledge_documentB
Upload a document to a knowledge group.
Args: group_id: The UUID of the knowledge group name: Document name content: Document content (text) content_type: MIME type (default: text/plain)
Inputs: group_id (required), name (required), content (required), content_type. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 54 tools
Most tools target distinct resources and actions, but there is some overlap between search and list functions (e.g., search_avatars vs list_avatars) that could cause confusion for an agent. The boundaries are generally clear.
All tools consistently follow the verb_noun pattern with underscores. Even tools like add_avatar_to_meeting and remove_avatar_from_meeting maintain a clear, predictable structure.
With 54 tools, this server is over the threshold for 'too many' (25+). While the domain is broad, the tool count feels bloated and could be streamlined by consolidating some CRUD operations or reducing redundancy.
The server offers CRUD operations for most entity types, but there are notable gaps: no delete or update for knowledge folders, no delete for sessions, and inconsistencies between 'folder' and 'group' terminology. Overall, the coverage is reasonable but incomplete.
Maintenance
Related MCP Connectors
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Connect MCP clients to 2,000+ AI models without managing provider API keys.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables integration with Manus AI to create AI tasks with custom prompts, manage webhooks for real-time notifications, and leverage attachments and connectors within MCP-compatible clients.372 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-driven customer support operations including conversation management, knowledge base, contacts, metrics, and settings via MCP.MIT
- AlicenseBqualityCmaintenanceEnables MCP clients to manage an AI voice calling workspace by creating and editing agents, running outbound campaigns, placing calls, sending one-way voice messages, reading analytics, and managing webhooks.25MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, and clone or design voices through integrated AI APIs.493 npmMIT