Docs · guides
MCP Plugins
Connect external tools to TeamDay agents — OAuth integrations, database connectors, SEO tools, and any MCP server via URL.
MCP Plugins
MCP (Model Context Protocol) plugins connect external tools and services to your agents. This guide covers supported integrations, configuration patterns, and how MCPs work at different levels.
For basic MCP concepts, see What Are MCP Servers?. For installation, see Installing MCP Servers.
Two Levels of MCP Attachment
MCPs can be attached at two levels, and when an agent chats in a space, it gets the union of both:
| Level | How | Available To |
|---|---|---|
| Agent level | Via mcpInstanceIds on the agent | Follows the agent everywhere — org chat, any space |
| Space level | Via mcpRefs on the space | Available to all agents chatting in that space |
When an agent chats in a space, it gets access to both its own MCPs and the space's MCPs. When an agent chats at the org level (no space), it only gets its own agent-level MCPs.
Supported Integrations
SEO
| Integration | What It Provides |
|---|---|
| Ahrefs | Backlink analysis, keyword research, site audit, rank tracking |
| Google Search Console | Search impressions, clicks, CTR, keyword positions |
| SE Ranking | Keyword tracking, competitor analysis, site audit |
Analytics
| Integration | What It Provides |
|---|---|
| Google Analytics | GA4 traffic data, page metrics, user behavior |
CRM
| Integration | What It Provides |
|---|---|
| HubSpot | CRM records, deals, companies, contacts, tickets, activities, and marketing content |
CMS
| Integration | What It Provides |
|---|---|
| WordPress | Post management, content publishing (self-hosted and .com) |
Database
| Integration | What It Provides |
|---|---|
| PostgreSQL | Query and manage PostgreSQL databases |
| MySQL | Query and manage MySQL databases |
| BigQuery | Google BigQuery data warehouse queries |
| Firestore | Google Cloud Firestore document database |
| Cloud SQL | Google Cloud SQL managed databases |
| SQLite | Local SQLite database access |
| MongoDB | MongoDB document database queries |
| ClickHouse | ClickHouse analytics database |
| Neo4j | Neo4j graph database queries |
| Snowflake | Snowflake data warehouse queries |
| Elasticsearch | Elasticsearch search and analytics |
| MSSQL | Microsoft SQL Server queries |
Advertising
| Integration | What It Provides |
|---|---|
| Meta Ads | Facebook/Instagram ad campaign management and reporting |
| Google Ads | Google Ads campaign management and reporting |
Communication
| Integration | What It Provides |
|---|---|
| Brevo | Transactional and marketing email via Brevo API |
Search
| Integration | What It Provides |
|---|---|
| Brave Search | Web search via Brave Search API |
| DataForSEO | SERP data, keyword metrics, competitor analysis |
| Exa | Neural search for finding relevant content |
SEO Setup Guides
Ahrefs
Ahrefs supports one-click OAuth — no manual token generation needed.
- Go to MCP Settings → search for Ahrefs → click Connect Ahrefs
- Authorize Teamday in the Ahrefs consent screen
- Teamday stores the access token as an org secret automatically — no copy/paste
- Restart or wake your workspace agents to pick up the new Ahrefs MCP configuration
After connecting: the UI shows "Ahrefs connected. Restart or wake workspace agents to pick up the MCP token." Agents will not see Ahrefs tools until they restart.
A manual token fallback is also available: paste an Ahrefs MCP token into the optional field in MCP Settings. See the Ahrefs MCP docs for how to generate one.
DataForSEO
DataForSEO uses Basic auth with your API credentials — not your dashboard login password.
- Go to MCP Settings → search for DataForSEO → click to configure
- In the Authorization header value field, enter:
Basic <base64(api_login:api_password)>api_loginandapi_passwordcome from your DataForSEO API Access panel, not your dashboard password- To encode:
echo -n "your_login:your_password" | base64→ prefix the result withBasic - Example:
Basic ZGVtb19sb2dpbjpkZW1vX3Bhc3N3b3Jk
- Save — Teamday stores this as an encrypted org secret
Common mistake: Using the password you log into the DataForSEO website with will not work. You need the API login and API password from the API Access panel.
For a full setup walkthrough, see the DataForSEO MCP setup guide.
CRM Setup Guide
HubSpot
HubSpot supports one-click OAuth — no API keys or manual token generation required.
- Go to MCP Settings → search for HubSpot → click Connect HubSpot
- Authorize Teamday in the HubSpot consent screen
- Teamday stores the access token as an encrypted org secret automatically
- Restart or wake your workspace agents to pick up the new HubSpot MCP configuration
Access scope: HubSpot access follows the permissions of the connected HubSpot user. Agents can read and write CRM data (contacts, companies, deals, tickets, activities) based on what that user can access in HubSpot. Keep write access attached only to trusted operators.
After connecting: restart or wake any agents that should have access — agents load MCP tokens at startup.
Generic
| Integration | What It Provides |
|---|---|
| Any MCP via URL | Connect any MCP server using mcp-oauth with auto-discovery |
Transport Types
MCPs communicate using one of two transport protocols:
| Transport | Description | Use Case |
|---|---|---|
| stdio | Local process execution | Most MCPs — runs as a child process in the sandbox |
| streamable-http | Remote HTTP-based connection | OAuth MCPs like Ahrefs, Google Search Console — connects to a remote server |
OAuth MCP Integrations
Some MCP servers require OAuth authentication to access user data (e.g., Google Analytics, Google Search Console, Ahrefs, HubSpot). For Ahrefs-specific setup steps, see the Ahrefs setup guide above. For HubSpot, see the HubSpot setup guide above.
How OAuth MCPs Work
- You install the MCP on a space or agent
- The web app shows a Connect button
- You authenticate with the external service via OAuth in the browser
- Tokens are stored encrypted and refreshed automatically
Token Lifecycle
- OAuth tokens are stored encrypted per-space
- Access tokens are refreshed automatically before expiration
- If a token expires or is revoked, the UI prompts you to reconnect
MCP Configuration via API
Create MCP Instance
curl -X POST "https://cc.teamday.ai/api/v1/mcps" \
-H "Authorization: Bearer $TEAMDAY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "custom-api",
"type": "stdio",
"command": "node",
"args": ["dist/index.js"],
"env": {
"API_KEY": "your-api-key"
}
}'
Update MCP Configuration
curl -X PATCH "https://cc.teamday.ai/api/v1/mcps/<id>" \
-H "Authorization: Bearer $TEAMDAY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"env": {
"API_KEY": "new-api-key"
}
}'
Attach MCP to an Agent
curl -X PATCH "https://cc.teamday.ai/api/v1/agents/<agent-id>" \
-H "Authorization: Bearer $TEAMDAY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"addMcpInstanceIds": ["mcp-id-1"]}'
Attach MCP to a Space
curl -X PATCH "https://cc.teamday.ai/api/v1/spaces/<space-id>" \
-H "Authorization: Bearer $TEAMDAY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"addMcps": ["mcp-id-1"]}'
Configuration Patterns
Environment Variable References
In .mcp.json, reference Space secrets with ${VAR_NAME}:
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-postgres", "${DATABASE_URL}"]
},
"api-tool": {
"command": "node",
"args": ["tools/api/index.js"],
"env": {
"API_KEY": "${API_KEY}",
"API_SECRET": "${API_SECRET}"
}
}
}
}
Store the actual values as secrets:
teamday spaces set-secret <space-id> \
DATABASE_URL=postgres://user:pass@host/db \
API_KEY=abc123 \
API_SECRET=xyz789
Multiple MCP Servers
A Space can have many MCP servers. Each runs as a separate process:
{
"mcpServers": {
"google-analytics": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-google-analytics"],
"env": {"GA_PROPERTY_ID": "${GA_PROPERTY_ID}"}
},
"postgres": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-postgres", "${DATABASE_URL}"]
},
"github": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-github"],
"env": {"GITHUB_TOKEN": "${GITHUB_TOKEN}"}
}
}
}
Disabling Tools
If an MCP provides tools you don't want agents to use, disable them at the Space level:
curl -X PATCH "https://cc.teamday.ai/api/v1/spaces/<space-id>" \
-H "Authorization: Bearer $TEAMDAY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"disabledTools": ["mcp__github__create_issue"]}'
Programmatic vs File-Based
| Approach | How | Best For |
|---|---|---|
| API/CLI | teamday mcps create | Org-wide MCP instances, managed centrally |
| .mcp.json | File in Space root | Per-Space configuration, version controlled |
Programmatic MCPs (via API) override file-based MCPs with the same name.
Next Steps
- MCP Servers — MCP concepts
- Installing MCP Servers — Installation guide
- Creating Custom MCP Servers — Build your own
- Tools Overview — All tool categories