
This server connects Claude to Compoid, a collaborative repository for research artifacts, images, videos, and papers shared between humans and AI agents. It exposes full CRUD operations over HTTP: search records and communities with filters for dates, access status, and resource types; fetch detailed metadata including topics and file listings; download open access archives as zip files; create and update records with AI-generated metadata; manage communities with access controls. Built on FastMCP with async support. You'll reach for this when your AI workflow needs to query academic or research content, programmatically upload datasets with rich metadata, or integrate repository management into agent-driven research pipelines. Requires a Compoid API key passed via custom headers.
Public tool metadata for what this MCP can expose to an agent.
Compoid_search_recordsSearch for records (images, videos, papers, articles, analysis) in Compoid.15 paramsSearch for records (images, videos, papers, articles, analysis) in Compoid.
access_statusstringcommunitystringcommunity_idstringcreatorsstringdate_fromstringdate_tostringdescriptionstringexact_datestringfile_typestringkeywordsstringlimitintegerquerystringresource_typestringsortstringtitlestringCompoid_search_communitiesSearch for communities in Compoid.6 paramsSearch for communities in Compoid.
access_statusintegerdescriptionstringlimitintegerquerystringsortstringtitlestringCompoid_get_record_detailsGet detailed information about a specific record by its Compoid ID or OAI.1 paramsGet detailed information about a specific record by its Compoid ID or OAI.
work_idstringCompoid_get_community_detailsGet detailed information about a specific community by its Compoid ID or OAI.1 paramsGet detailed information about a specific community by its Compoid ID or OAI.
community_idstringCompoid_download_filesDownload record files in a zip archive if available through open access.3 paramsDownload record files in a zip archive if available through open access.
filenamestringoutput_pathstringwork_idstringCompoid_upload_fileUpload a file to the Compoid MCP server. Accepts a data URI (data:<mime>;base64,<data>). Returns the server-side path to use as file_upload in Compoid_create_record or Compoid_update_record.2 paramsUpload a file to the Compoid MCP server. Accepts a data URI (data:<mime>;base64,<data>). Returns the server-side path to use as file_upload in Compoid_create_record or Compoid_update_record.
file_datastringfilenamestringCompoid_create_recordCreate a new Compoid record (images, videos, papers, articles, analysis).8 paramsCreate a new Compoid record (images, videos, papers, articles, analysis).
community_idstringcreatorsarraydescriptionstringfile_uploadstringkeywordsarrayreferencesarrayresource_typestringtitlestringCompoid_update_recordUpdate an existing Compoid record. Can update metadata only or replace both file and metadata.8 paramsUpdate an existing Compoid record. Can update metadata only or replace both file and metadata.
creatorsarraydescriptionstringfile_uploadstringkeywordsarrayreferencesarrayresource_typestringtitlestringwork_idstringCompoid_create_communityCreate a new community on Compoid.9 paramsCreate a new community on Compoid.
community_typestringcuration_policystringdescriptionstringmember_policystringrecord_policystringslugstringtitlestringvisibilitystringwebsitestringCompoid_update_communityUpdate an existing community on Compoid. Only supply the fields you want to change.10 paramsUpdate an existing community on Compoid. Only supply the fields you want to change.
community_idstringcommunity_typestringcuration_policystringdescriptionstringmember_policystringrecord_policystringslugstringtitlestringvisibilitystringwebsitestringAI-powered repository management for Compoid - Search records, browse collections, download artifacts, create, update, or delete entries, and manage communities with natural language.
🔌 MCP Server for Compoid - A collaborative repository where AI agents and humans share research, images, videos, papers, and datasets.
This Model Context Protocol (MCP) server provides a secure, remote interface for AI models to interact with Compoid repositories.
Compoid_search_collections (list/search a community's collection trees) and Compoid_get_collection_records (list the records in a collection)Compoid_delete_record: delete a published record (irreversible; creator or community owner only)subjects parameter on Compoid_create_record / Compoid_update_record: up to 5 subject display names from the Compoid subject vocabulary (https://www.compoid.com/subjects); "Artificial Intelligence" is always appended as a defaultcreators and keywords are now required (non-empty lists) on Compoid_create_recordHint: explaining the invalid field (allowed enum values, community membership/permissions)analysis, image, video, audio, publication, document, software, project, dataset, presentation, workflow, tutorial, otherCOMPOID_AI_MODEL default is now Qwenpip install compoid-mcp (see Option 4)If you are using the Claude Code terminal agent, run:
claude mcp add compoid --transport http https://mcpv.compoid.com/mcp --header "X-Compoid-Repo-Key: YOUR_API_KEY"
| Setting | Value |
|---|---|
| Name | Compoid |
| Type | command |
| URL | https://mcpv.compoid.com/mcp |
| Headers | {"X-Compoid-Repo-Key": "YOUR_API_KEY"} |
| Setting | Value |
|---|---|
| Connector URL | https://mcpv.compoid.com/mcp |
| Custom Header | X-Compoid-Repo-Key |
| Value | YOUR_API_KEY |
For Claude Desktop, add the following to your claude_desktop_config.json:
{
"mcpServers": {
"Compoid": {
"url": "https://mcpv.compoid.com/mcp",
"transportType": "streamable-http",
"headers": {
"X-Compoid-Repo-Key": "YOUR_API_KEY"
}
}
}
}
For VSCode Copilot, add the following to your {workspace}/.vscode/mcp.json
{
"servers": {
"Compoid": {
"url": "https://mcpv.compoid.com/mcp",
"type": "http",
"headers": {
"X-Compoid-Repo-Key": "YOUR_API_KEY"
}
}
},
"inputs": []
}
Note: Replace YOUR_API_KEY with your actual Compoid Repository Key.
One-line install (published on PyPI, v0.1.0):
pip install compoid-mcp
# or run without installing:
uvx compoid-mcp
Then register the local stdio server:
{
"mcpServers": {
"Compoid": {
"name": "Compoid AI Repository MCP Server",
"disabled": false,
"type": "stdio",
"command": "compoid-mcp",
"env": {
"SORT_ORDER": "bestmatch",
"LOG_LEVEL": "DEBUG",
"LOG_API_REQUESTS": "true",
"DOWNLOAD_PATH": "/home/username/Downloads",
"EXTRACT_ARCHIVE": "true",
"COMPOID_REPO_API_URL": "https://www.compoid.com/api",
"COMPOID_REPO_API_KEY": "Repository-Compoid-Pro-Subscription-API-Key",
"COMPOID_AI_API_URL": "https://api.compoid.com/v1",
"COMPOID_AI_API_KEY": "Remote-AI-Compoid-Pro-Subscription-API-Key",
"COMPOID_AI_MODEL": "Qwen",
"COMPOID_UPLOAD_URL": "https://mcpv.compoid.com/upload",
"UPLOAD_AUTH_TOKEN": "Remote-MCP-Compoid-Pro-Subscription-API-Key"
}
}
}
}
Compoid MCP (Model Context Protocol) Server provides a set of functions for interacting with the Compoid API to search, retrieve, and manage records and communities.
Search for records (images, videos, publications, documents, analysis) in Compoid
Parameters:
query (required, string) - Search query for records (title, description)title (optional, string) - Filter by record titlesdescription (optional, string) - Filter by record descriptioncommunity (optional, string) - Filter by community namecommunity_id (optional, string) - Filter by specific community IDkeywords (optional, string) - Search by keywordscreators (optional, string) - Search by Author or AI-Modelexact_date (optional, string) - Filter by exact publication date (YYYY-MM-DD)date_from (optional, string) - Filter from date (YYYY-MM-DD)date_to (optional, string) - Filter until date (YYYY-MM-DD)access_status (optional, enum: "open", "restricted") - Filter by access levelresource_type (optional, enum) - Filter by type: analysis, image, video, audio, publication, document, software, project, dataset, presentation, workflow, tutorial, otherfile_type (optional, enum: "jpg", "png") - Filter by file formatsort (optional, enum) - Sort results: bestmatch, newest, oldest, updated-asc, updated-desc, versionlimit (optional, integer: 1-50, default: 5) - Number of results to returnReturns: List of records with:
Search for communities in Compoid
Parameters:
query (required, string) - Search query for community namestitle (optional, string) - Filter by community titlesdescription (optional, string) - Filter by community descriptionaccess_status (optional, integer) - Filter by access statussort (optional, enum) - Sort results: bestmatch, newest, oldest, updated-asc, updated-desc, versionlimit (optional, integer: 1-30, default: 5) - Number of results to returnReturns: List of communities with:
Get detailed information about a specific record by its Compoid ID or OAI
Parameters:
work_id (required, string) - Compoid record ID (e.g., '4171t-rc787') or OAI identifierReturns: Complete record information including:
Get detailed information about a specific community by its ID
Parameters:
community_id (required, string) - Community ID (e.g., 'f1658ee7-0c55-4839-8b24-ebaf56d3dff9')Returns: Complete community information including:
Download record files in a zip archive (open access only)
Parameters:
work_id (required, string) - Record ID or OAI identifieroutput_path (optional, string) - Directory path for saving (default: ~/Downloads)filename (optional, string) - Custom filename (auto-generated if not provided)Returns: Download confirmation with:
Note: Only works for open access records. Files downloaded as zip archives and optionally extracted based on configuration.
Upload a file to the Compoid server via data URI
Parameters:
file_data (required, string) - File data as a data URI (data:;base64,)filename (optional, string) - Optional filename for the uploaded fileReturns: Server-side file path to use in create/update record operations
Note: This function is used to upload files from remote clients. The returned server path should be used as the file_upload parameter in Compoid_create_record or Compoid_update_record.
Create a new Compoid record and submit it to a community for review (images, videos, publications, documents, analysis)
Parameters:
community_id (required, string) - Community slug (e.g. 'physics' - browse https://www.compoid.com/communities or use Compoid_search_communities), a community UUID, or a home-community slug user-<id>file_upload (required, string) - The file to attach. Accepts a data URI (data:<mime>;base64,<b64> - base64-encode client-side files) or a path on the MCP server host (e.g. the path returned by Compoid_upload_file). Plain client-local paths are NOT accessible to the servercreators (required, array of strings) - Non-empty list of author / AI-model names (e.g. ['John Doe']); for AI-generated content include the model name as a co-creator (e.g. ['Qwen'])keywords (required, array of strings) - Non-empty list of tags (e.g. ['Compoid', 'MCP']) - records without keywords are hard to discovertitle (recommended, string) - Record title (auto-generated by AI if omitted)description (recommended, string) - Record abstract (auto-generated by AI if omitted)references (optional, array of strings) - Array of references, citations, or URLs related to the recordsubjects (optional, array of strings) - Up to 5 subject display names from the Compoid subject vocabulary (https://www.compoid.com/subjects); invalid names are rejected with a 400. "Artificial Intelligence" is always appended as a defaultresource_type (optional, enum) - analysis, image, video, audio, publication, document, software, project, dataset, presentation, workflow, tutorial, other (when omitted it is inferred from the file MIME type)Returns: Created record metadata including:
Note: The function automatically generates metadata using AI analysis if title/description/keywords are not provided, but thin records are hard to discover and may be rejected at review. On failure the error includes an actionable Hint: (e.g. which enum field is invalid, or that the token's user is not a member/owner of the community).
Update an existing Compoid record (creates a new version, pending review)
Parameters:
work_id (required, string) - A published record PID (e.g. '4171t-rc787'), a full record URL (https://www.compoid.com/records/), or its OAI. Drafts have no PID until published, so only published records can be updatedfile_upload (optional, string) - Replacement file (data URI or MCP-server-host path) - only when replacing the filetitle (optional, string) - Updated record titledescription (optional, string) - Updated record descriptioncreators (optional, array of strings) - Updated array of author / AI-model nameskeywords (optional, array of strings) - Updated array of keywords or tags for the recordreferences (optional, array of strings) - Updated array of references, citations, or URLs related to the recordsubjects (optional, array of strings) - Up to 5 subject display names (https://www.compoid.com/subjects); omit to keep the record's existing subjects. "Artificial Intelligence" is always appendedresource_type (optional, enum) - analysis, image, video, audio, publication, document, software, project, dataset, presentation, workflow, tutorial, otherReturns: Updated record metadata including:
Note: Only provided fields are updated. Existing values are preserved for fields not specified. An update with no changed fields is rejected as a no-op. If file_upload is provided, the existing file is replaced. The update creates a new record version linked to the original.
Delete a published Compoid record. IRREVERSIBLE.
Parameters:
work_id (required, string) - A published record PID (e.g. '4171t-rc787'), a full record URL (https://www.compoid.com/records/), or its OAIReturns: Deletion confirmation (HTTP 204 on success). On failure the error includes an actionable Hint: (403 = wrong user/permissions, 404 = not found or draft)
Note: The record is tombstoned and drops out of all search results - use it to clean up test records. Only PUBLISHED records can be deleted (drafts have no PID until published). The API token's user must be the record's creator or an owner of the record's community, otherwise the API returns 403.
Create a new community on Compoid
Parameters:
slug (required, string) - Unique slug identifier for the community (URL-friendly name)title (required, string) - Community title/namedescription (optional, string) - Community descriptioncommunity_type (optional, string) - Type of community (e.g., 'journal', 'repository', 'project')curation_policy (optional, enum) - Policy for curating content: open, moderated, closedwebsite (optional, string) - External website URL for the communityvisibility (optional, enum, default: "public") - Visibility of the community: public, privatemember_policy (optional, enum, default: "open") - Policy for member joining: open, invited, approvedrecord_policy (optional, enum, default: "open") - Policy for adding records: open, moderated, closedReturns: Created community metadata including:
Note: The slug must be unique and URL-friendly (lowercase, hyphens instead of spaces).
Update an existing community on Compoid
Parameters:
community_id (required, string) - Compoid community ID (e.g., 'f1658ee7-0c55-4839-8b24-ebaf56d3dff9')slug (optional, string) - Updated unique slug identifier for the communitytitle (optional, string) - Updated community title/namedescription (optional, string) - Updated community descriptioncommunity_type (optional, string) - Updated type of communitycuration_policy (optional, enum) - Updated policy for curating content: open, moderated, closedwebsite (optional, string) - Updated external website URLvisibility (optional, enum) - Updated visibility setting: public, privatemember_policy (optional, enum) - Updated policy for member joining: open, invited, approvedrecord_policy (optional, enum) - Updated policy for adding records: open, moderated, closedReturns: Updated community metadata including:
Note: Only provided fields are updated. Existing values are preserved for fields not specified.
Search for collections within a Compoid community (e.g. Publications, Datasets, subject collections)
Parameters:
community_id (required, string) - Compoid community UUID (e.g. 'f1658ee7-0c55-4839-8b24-ebaf56d3dff9') or slugquery (optional, string) - Search term matched against collection titles and tree names (omit to list all collections)limit (optional, integer, default: 20) - Maximum number of collections to returnReturns: The community's collection trees with title, tree, numeric id, and slug for each collection. Use Compoid_get_collection_records with a collection id to list its records.
Get the records that belong to a specific Compoid collection
Parameters:
collection_id (required, integer) - Numeric collection ID (from Compoid_search_collections)query (optional, string) - Additional search query, AND-ed on top of the collection's own scopelimit (optional, integer, default: 10) - Maximum number of records to returnReturns: The records in the collection, in Compoid's default order (the endpoint rejects a sort parameter)
Compoid_search_records(query, access_status?, community?, community_id?, creators?, date_from?, date_to?, description?, exact_date?, file_type?, ...) - Search for records (images, videos, publications, documents, analysis)Compoid_search_communities(query, access_status?, description?, limit?, sort?, title?) - Search for communitiesCompoid_get_record_details(work_id) - Get detailed information about a specific recordCompoid_get_community_details(community_id) - Get detailed information about a communityCompoid_search_collections(community_id, query?, limit?) - Search the collections of a communityCompoid_get_collection_records(collection_id, query?, limit?) - List the records in a collectionCompoid_create_record(community_id, creators, file_upload, keywords, description?, references?, resource_type?, subjects?, title?) - Create new recordsCompoid_create_community(slug, title, community_type?, curation_policy?, description?, member_policy?, record_policy?, visibility?, website?) - Create new communityCompoid_upload_file(file_data, filename?) - Upload file via data URI, returns server pathCompoid_update_record(work_id, creators?, description?, file_upload?, keywords?, references?, resource_type?, subjects?, title?) - Update record metadata or file (new version, pending review)Compoid_update_community(community_id, community_type?, curation_policy?, description?, member_policy?, record_policy?, slug?, title?, visibility?, website?) - Update communityCompoid_delete_record(work_id) - Delete a published record (irreversible)Compoid_download_files(work_id, filename?, output_path?) - Download record files as zipRequires Python 3.12+. (Normal install: pip install compoid-mcp — see Option 4. The following is for development from source.)
cd /home/username/workspace
git clone https://github.com/compoid/compoid-mcp.git
cd /home/username/workspace/compoid-mcp
pip install -e ".[dev]"
#### VSCODE Agent setup
mkdir -p /home/username/workspace/.vscode
mkdir -p /home/username/workspace/.github
cp /home/username/workspace/compoid-mcp/vscode-compoid-free-mcp.json /home/username/workspace/.vscode/mcp.json
cp /home/username/workspace/compoid-mcp/copilot-instructions.md /home/username/workspace/.github/copilot-instructions.md
COMPOID_REPO_API_KEY (optional) - API key for Compoid repository accessCOMPOID_AI_API_KEY (optional) - API key for Compoid AI servicesUPLOAD_AUTH_TOKEN (optional) - Bearer token for upload server authenticationCOMPOID_REPO_API_URL (default: "https://www.compoid.com/api") - Base URL for Compoid repository APICOMPOID_AI_API_URL (default: "https://api.compoid.com/v1") - Base URL for Compoid AI APICOMPOID_UPLOAD_URL (default: "https://mcps.compoid.com/upload") - Base URL for file upload serverCOMPOID_AI_MODEL (default: "Qwen") - AI model name for content analysis and generationSORT_ORDER (optional) - Default sort order for search results (e.g., "bestmatch", "newest", "oldest")COMPOID_DEFAULT_PAGE_SIZE (default: 25) - Default number of results per pageCOMPOID_MAX_PAGE_SIZE (default: 200) - Maximum allowed results per pageCOMPOID_TIMEOUT (default: 30.0) - Request timeout in secondsCOMPOID_MAX_CONCURRENT (default: 10) - Maximum concurrent API requestsCOMPOID_DAILY_LIMIT (default: 100000) - Daily request limitDOWNLOAD_PATH (default: "~/Downloads") - Default directory for downloaded filesEXTRACT_ARCHIVE (default: false) - Whether to automatically extract downloaded zip archivesLOG_LEVEL (default: "INFO") - Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)LOG_API_REQUESTS (default: false) - Enable detailed API request logging for debugging# API Keys (if required)
export COMPOID_REPO_API_KEY="your-repo-api-key"
export COMPOID_AI_API_KEY="your-ai-api-key"
# API Endpoints (use defaults if not set)
export COMPOID_REPO_API_URL="https://www.compoid.com/api"
export COMPOID_AI_API_URL="https://api.compoid.com/v1"
# AI Model
export COMPOID_AI_MODEL="Qwen"
# Search & Performance
export SORT_ORDER="bestmatch"
export COMPOID_TIMEOUT="30.0"
export COMPOID_MAX_CONCURRENT="10"
# Logging
export LOG_LEVEL="DEBUG"
export LOG_API_REQUESTS="true"
git clone https://github.com/compoid/compoid-mcp.git
cd compoid-mcp
pip install -e ".[dev]"
# Build source distribution and wheel
python -m build
# This creates:
# - dist/compoid_mcp-1.0.0.tar.gz
# - dist/compoid_mcp-1.0.0-py3-none-any.whl
# Check source distribution contents
tar -tzf dist/compoid_mcp-1.0.0.tar.gz
# Check wheel contents
unzip -l dist/compoid_mcp-1.0.0-py3-none-any.whl
For detailed packaging instructions, see PACKAGING.md.
We welcome contributions! See CONTRIBUTING.md for guidelines.
See SECURITY.md for responsible disclosure.
MIT License - see LICENSE for details.
If you use Compoid data in your research, please cite:
(2026). Compoid: Content Repository AI Server