Server data from the Official MCP Registry
Search, answer, and fetch Tako's knowledge base of 100K+ data charts, plus deep research agents.
Search, answer, and fetch Tako's knowledge base of 100K+ data charts, plus deep research agents.
Remote endpoints: streamable-http: https://mcp.tako.com/mcp
Tako MCP is a well-structured server with proper OAuth 2.1 implementation, Bearer token authentication, and comprehensive input validation. The codebase demonstrates security-conscious design with PKCE support, secure cookie handling, HTML escaping, and URI validation. Minor code quality observations exist but do not represent security vulnerabilities. Supply chain analysis found 5 known vulnerabilities in dependencies (1 critical, 4 high severity).
4 files analyzed · 8 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: TAKO_API_URL
Environment variable: PUBLIC_BASE_URL
Environment variable: PORT
Environment variable: HOST
Environment variable: MCP_ALLOWED_HOSTS
Environment variable: MCP_ENABLE_DNS_REBINDING
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
From the project's GitHub README.
An MCP (Model Context Protocol) server that provides access to Tako's knowledge base and interactive data visualizations.
This MCP server enables AI agents to:
Use the hosted endpoint at https://mcp.tako.com. Three lines, no install:
export TAKO_API_TOKEN='<your-token-from-tako.com>'
claude mcp add tako-mcp --transport http https://mcp.tako.com/mcp \
--header "Authorization: Bearer $TAKO_API_TOKEN"
That's it for new users. Detailed configs for Claude Code / Claude Desktop / Cursor / Windsurf are in the next section.
Looking for the Python
pip install tako-mcpserver, or the Docker image, or the Smithery listing? Those are the legacy Python implementation — see Self-hosting (legacy) at the bottom. They're kept for air-gapped, custom-fork, and pre-existing deployments, but the hosted Workers endpoint is where all new tool work ships first and has the current tool surface.
The fastest path: point your MCP client at https://mcp.tako.com with a Bearer token. No install, no local server.
Endpoints:
| Environment | URL |
|---|---|
| Production | https://mcp.tako.com/mcp |
| Staging (testing only) | https://mcp.staging.tako.com/mcp |
Authentication: every request needs Authorization: Bearer <TAKO_API_TOKEN>. Get a token at tako.com → account settings → API tokens.
export TAKO_API_TOKEN='<your-token>'
claude mcp add tako-mcp --transport http https://mcp.tako.com/mcp \
--header "Authorization: Bearer $TAKO_API_TOKEN"
Verify with claude mcp list (should show tako-mcp connected) or /mcp inside a session.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"tako-mcp": {
"type": "http",
"url": "https://mcp.tako.com/mcp",
"headers": {
"Authorization": "Bearer <your-tako-api-token>"
}
}
}
}
Restart Claude Desktop. Tako MCP should appear in the available tools list.
Add to ~/.cursor/mcp.json (Cursor) or the equivalent Windsurf config:
{
"mcpServers": {
"tako-mcp": {
"type": "http",
"url": "https://mcp.tako.com/mcp",
"headers": {
"Authorization": "Bearer <your-tako-api-token>"
}
}
}
}
tools/list handshake on connect — your client always sees the current tool surface, no manual list to keep in sync.api_token per-tool-call argument shown in the self-hosted examples below. Once authenticated, tool inputs match exactly across both transports.mcp.staging.tako.com) for testing changes against an unstable build before they reach mcp.tako.com.Use this if you're connecting Tako from Claude.ai or ChatGPT — the consumer chat hosts that don't accept Bearer tokens. The hosted endpoint at https://mcp.tako.com/mcp runs an OAuth 2.1 flow that signs you in with your Tako account and connects on your behalf, no JSON config or CLI required.
If you're using Claude Code, Claude Desktop, Cursor, or Windsurf, see the Bearer-auth instructions above — those clients accept a static
Authorization: Bearerheader and don't need OAuth.
Before connecting from Claude.ai or ChatGPT:
Step 2 is mandatory: the consent flow looks up your existing token and surfaces a "Your Tako account does not have an API token yet" page if it doesn't find one. Tako does not auto-mint a token during the OAuth dance, because rotating an existing one would break any Claude Code / Cursor wiring you already have on the same account.

The same three Tako-hosted screens appear regardless of which host (Claude.ai or ChatGPT) you're connecting from:
Tako sign-in page. Two options: Continue with Google or send yourself an email magic-link. Use the same identity you signed up with at tako.com.

Tako consent page. Reads "Connect [host name] to Tako — Signed in as you@example.com — Allow / Cancel". Click Allow to authorize the connection.

Bounce back to the host. The connector is now listed and tools are callable.
The host itself (Claude.ai or ChatGPT) may also display its own consent prompt before or after Tako's. That's normal — Tako confirms it's safe to share your account; the host confirms it's safe to invoke an external connector.
Requires Claude.ai Pro, Max, Team, or Enterprise.
Open Claude.ai → Settings → Connectors.

Click Add custom connector.
[Screenshot: Claude.ai "Add custom connector" dialog]
Paste https://mcp.tako.com/mcp and click Connect.
You'll be taken through the Tako sign-in flow described above.
After consent, Tako appears in your connector list as connected.

Requires ChatGPT Pro, Business, or Enterprise. Developer Mode must be enabled.
Open ChatGPT → Settings → Connectors → Developer Mode and toggle it on if it isn't already.

Click Create custom connector.

Paste https://mcp.tako.com/mcp and click Connect.
You'll be taken through the Tako sign-in flow described above.
After consent, the connector is listed and ready to use.

In a fresh conversation, ask:
Show me Tako's chart on Intel vs Nvidia headcount.
A successful response includes a chart link or an inline chart render (depending on host) within a few seconds. If you instead see an authentication error, jump to Disconnecting & re-authorizing below.
There are two ways to break the connection, and they have different blast radius. Pick the one that matches what you actually want.
Per-host disconnect (Claude.ai or ChatGPT settings → remove the Tako connector). Stops that host from making MCP calls. Does not revoke the underlying Tako API token. Other connected hosts — and any Claude Code / Cursor Bearer-auth wiring on the same account — keep working unchanged.
Rotate the API token at tako.com → settings → API tokens. This is the hard kill switch. Rotating creates a new token and invalidates the old one server-side, which means every previously-issued OAuth grant — across every host — stops authenticating immediately. To resume from any host, disconnect and reconnect; the new consent flow picks up your fresh token.
This kill-switch behavior is by design for v1. Per-grant scoped tokens (revoke a single host without touching the others) are tracked under TAKO-2679's known limitations.
⚠️ The pip / Docker / Smithery paths described in this section are the original Python implementation in
src/tako_mcp/. They are not the current canonical Tako MCP — that's the hosted Cloudflare Worker atmcp.tako.comdocumented above. The Python server still works and is maintained for self-hosted, air-gapped, and Smithery-marketplace deployments, but it ships an older tool surface and an older transport (SSE, per-toolapi_tokenargument) than the hosted version. New tool work lands inworkers/first; the Python server may diverge over time.If you don't have a specific reason to self-host, use the hosted endpoint above.
pip install tako-mcp
Or install from source:
git clone https://github.com/anthropics/tako-mcp.git
cd tako-mcp
pip install -e .
tako-mcp
Or with Docker:
docker build -t tako-mcp .
docker run -p 8001:8001 tako-mcp
Point your MCP client to http://localhost:8001.
Environment variables apply to the Python server. The hosted Worker has its own configuration baked into workers/wrangler.jsonc and is not user-tunable.
| Variable | Description | Default |
|---|---|---|
TAKO_API_URL | Tako API endpoint | https://api.tako.com |
PUBLIC_BASE_URL | Public URL for chart embeds | https://tako.com |
PORT | Server port | 8001 |
HOST | Server host | 0.0.0.0 |
MCP_ALLOWED_HOSTS | Additional allowed hosts (comma-separated) | |
MCP_ENABLE_DNS_REBINDING | Enable DNS rebinding protection | true |
python -m tests.test_client --api-token YOUR_API_TOKEN
This verifies:
knowledge_search → tako_search (endpoint unchanged).grounding → tako_answer (now backed by GA /api/v1/answer; result is {answer, cards, web_results, request_id}).tako_contents, tako_agent.Update any client config or agent prompts that referenced the old tool names.
Note on the JSON examples below: these show the input shape used by the legacy Python server (
api_tokenpassed as a per-tool argument). If you're using the hosted endpoint atmcp.tako.com, drop theapi_tokenfield — auth flows via the connection-levelAuthorization: Bearer …header instead. Tool inputs are otherwise compatible across both transports, and your MCP client discovers the live tool surface automatically viatools/list. The hosted Worker also ships a different tool surface than the Python server: current Workers tools aretako_search,tako_answer,tako_contents,tako_agent,get_chart_image,open_chart_ui,create_chart,create_report,get_report,list_reports,export_report, andget_credit_balance.
tako_searchSearch Tako's knowledge base for charts and data visualizations.
{
"query": "Intel vs Nvidia headcount",
"api_token": "your-api-token",
"count": 5,
"search_effort": "deep"
}
Returns matching charts with IDs, titles, descriptions, and URLs.
get_chart_imageGet a preview image URL for a chart.
{
"pub_id": "chart-id",
"api_token": "your-api-token",
"dark_mode": true
}
get_card_insightsGet AI-generated insights for a chart.
{
"pub_id": "chart-id",
"api_token": "your-api-token",
"effort": "medium"
}
Returns bullet-point insights and a natural language description.
ThinViz lets you create charts with your own data using pre-configured templates.
list_chart_schemasList available chart templates.
{
"api_token": "your-api-token"
}
Returns schemas like stock_card, bar_chart, grouped_bar_chart.
get_chart_schemaGet detailed info about a schema including required components.
{
"schema_name": "bar_chart",
"api_token": "your-api-token"
}
create_chartCreate a chart from a template with your data.
{
"schema_name": "bar_chart",
"api_token": "your-api-token",
"source": "Company Reports",
"components": [
{
"component_type": "header",
"config": {
"title": "Revenue by Region",
"subtitle": "Q4 2024"
}
},
{
"component_type": "categorical_bar",
"config": {
"datasets": [{
"label": "Revenue",
"data": [
{"x": "North America", "y": 120},
{"x": "Europe", "y": 98},
{"x": "Asia", "y": 156}
],
"units": "$M"
}],
"title": "Revenue by Region"
}
}
]
}
Returns the new chart's card_id, embed_url, and image_url.
open_chart_uiOpen an interactive chart in the UI (MCP-UI).
{
"pub_id": "chart-id",
"dark_mode": true,
"width": 900,
"height": 600
}
Returns a UIResource for rendering an interactive iframe.
tako_search with the querytako_answer to get a grounded prose answerget_chart_image for a previewopen_chart_ui to render an interactive chartGET /health - Simple "ok" responseGET /health/detailed - JSON with status and timestampTako MCP runs in two modes depending on which distribution path you chose. Both speak the same MCP tool protocol; only the transport and host differ.
Hosted mode (mcp.tako.com) — the recommended path:
AI Agent (Claude Code/Desktop, Cursor, etc.)
↓
MCP Protocol (Streamable HTTP, POST /mcp)
↓
Cloudflare Worker ── Bearer auth, tool dispatch
↓
Tako Django API (api.tako.com)
The Cloudflare Worker is a thin TypeScript proxy: it extracts the Bearer token, validates the MCP request, calls the appropriate Django endpoint with the user's token forwarded as X-API-Key, and returns structured tool results. Code lives in workers/ of this repo.
Self-hosted mode (pip install / Docker) — same proxy idea, run locally:
AI Agent
↓
MCP Protocol (SSE)
↓
Local tako-mcp process (Python, Starlette/Uvicorn)
↓
Tako Django API
Use this when you need to run inside a private network, modify the server, or pin a specific version. Code lives in src/tako_mcp/.
In both modes the server:
api_token per-tool argument for SSE)The open_chart_ui tool returns an MCP-UI resource that clients can render as an interactive iframe. The embedded chart supports:
postMessageClients that support MCP-UI (like CopilotKit) will automatically render these resources.
Tako is published to the official MCP Registry
as a remote server under the name io.github.TakoData/tako-mcp.
server.json (repo root) is the registry descriptor: a remote
streamable-http entry pointing at https://mcp.tako.com/mcp. The registry
schema does not list tools — hosts discover them at runtime via tools/list.
(This is distinct from registry/server.json, the generated in-repo tool
catalog used by npm run registry:gen / registry:check.).github/workflows/publish-mcp.yml. It
authenticates with the registry via GitHub OIDC (no secret — the
io.github.TakoData/* namespace is authorized because this repo lives in the
TakoData org) and runs mcp-publisher publish. The version lives in code:
bump server.json's version and merge to main and it publishes
automatically. A merge that touches server.json without changing the version
is a no-op (the workflow skips, so the registry never sees a duplicate). Manual
workflow_dispatch publishes the checked-in version on demand.com.tako/tako-mcp) is an optional future upgrade. It
requires DNS authentication: generate an Ed25519 key, add a TXT record on
tako.com, and swap the workflow's login github-oidc step for
login dns --domain tako.com --private-key ${{ secrets.MCP_PRIVATE_KEY }}.MIT License - see LICENSE for details.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.