Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/datanika-mcp/issues.md or /mcp/datanika-mcp/issues.json, or Pod over MCP.

Reported issues for datanika-mcp

Pod holds 18 of 31 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to datanika-mcp.

Most discussed

[Engineering] P0: mcp 2.x breaks the image — datanika-mcp's unpinned dep clobbers core's mcp<2, /mcp unmounted, all deploys blocked

This blocks every production deploy. Found when a monitoring-only promotion (#601) failed on the box. Nothing about that change was related; any deploy today would have hit this.

Symptom

deploy-pointer.ymlDeploy the app via blue/green swap fails its post-swap assertion:

15:59:08   public /mcp unauth -> 404 (expect 401; 200 means it fell through to the SPA)
15:59:08 FATAL: /mcp returned 404

The app itself is healthy — /healthz, /readyz, / all 200 on the new colou

Read the thread · 2026-08-29 · closed · 7 comments

[QA] S1: prod runs 4 Reflex workers with per-process state — 48% of reconnects are served a stale session (root cause of #472/#529)

S1 — reproduced on production, 2026-08-30, without a browser.

Production runs the Reflex backend as 4 independent worker processes with a per-process state store. A client that reconnects lands on a different process roughly half the time and is served a state that has lost earlier writes. Since AuthState.access_token is a plain server-side state var and check_auth does if not self.access_token: return rx.redirect("/login"), a stale read is a logout.

This is the cause of

Read the thread · 2026-08-30 · closed · 4 comments

[QA] e2e-staging failure on e8198d1

Run: https://github.com/datanika-io/datanika-core/actions/runs/33344167976 Commit: e8198d1 Message: [Engineering] Route every Connection lookup through an org-scoped accessor Report: playwright-report artifact on the run page

Only the GATING tier can open this — informational specs do not fail the job (core#521).

Read the thread · 2026-08-31 · closed · external user · 2 comments

[Growth] List datanika-mcp in the MCP registries (discoverability)

Part of the AI-first agent-surface wave (coordinator-routed 2026-07-18). Quick win — free discoverability where agents/users browse for tools.

Gap: we have a working MCP server but it's unlisted, so nobody browsing MCP directories finds Datanika.

Scope (registry landscape verified 2026-07-18)

  1. Publish to the official MCP registry firstregistry.modelcontextprotocol.io (Anthropic/GitHub/Microsoft/PulseMCP metaregistry). It feeds the directories + clients, so do it first

Read the thread · 2026-07-18 · closed · 2 comments

[Infra P0] Post-deploy smoke gate — app.datanika.io after ci.yml

Summary

Add a post-deploy smoke gate as a new job in .github/workflows/ci.yml that runs after the Deploy step on push to master, curls a curated list of URLs on https://app.datanika.io, asserts 200 + non-empty body (plus per-URL content-type and body-substring checks), and fails the workflow on any miss. Same task in parallel on the landing side: datanika-landing (separate tracking issue, same source-of-truth).

Paired issue: datanika-landing#<TBD, see cross-ref> adds the

Read the thread · 2026-04-14 · closed · 2 comments

[Product] Chrome autofills the user's Datanika password into connector credential fields — and Google Ads then sends it to Google as a header

Found on production while capturing a 02-add-connection screenshot for the Google Ads guide. I caught it because the screenshot I was about to publish contained credentials I had never typed. The shot was deleted, not shipped.

Symptom

Open Connections → New Connection → type google_ads on app.datanika.io in Chrome, with the Datanika site password saved in the browser (the ordinary state for any returning user). Without touching either field:

Read the thread · 2026-08-29 · closed · 1 comment

[Infra] deploy-bluegreen.sh: FATAL paths bypass the ERR rollback trap, leaving prod half-deployed on the new colour

Found during the #601 promotion, which failed at a post-swap assertion and left production on the new colour with /mcp down, instead of rolling back. Root cause of the deploy failure itself is #602; this issue is about the deploy script's behaviour when an assertion fails.

1. The FATAL paths bypass the rollback trap

scripts/deploy-bluegreen.sh arms a rollback:

trap 'rollback' ERR          # line 107

but every assertion failure exits like this:

[ "$MCP" = 401

[Read the thread](https://github.com/datanika-io/datanika-core/issues/603) · 2026-08-29 · closed · 1 comment

### [QA] MongoDB source cannot authenticate: the connection URI sets no authSource, so users in admin are rejected

## Authenticated MongoDB connections cannot authenticate

`_build_mongodb_source` (`dlt_runner.py:760`) builds:

```python
uri = f"mongodb://{quote_plus(user)}:{quote_plus(password)}@{host}:{port}/{database}"

The database in the path is also the authentication database. MongoDB users are conventionally created in admin — that is what MONGO_INITDB_ROOT_USERNAME does in the official image, and what MongoDB Atlas and every managed provider do. So unless the user happens to exist *insid

Read the thread · 2026-07-22 · closed · 1 comment

Most recent

datanika-mcp: the transport's stateless mode and its private-attribute reach-through both need guards

Filed by Infra while deciding the mcp 2.x question left open by #602. Nothing is broken and nothing is exploitable today — this is about two invariants that currently hold by accident.

1. stateless=True is load-bearing, and nothing says so

datanika-mcp/src/datanika_mcp/server.py:492-496:

manager = StreamableHTTPSessionManager(
    app=mcp._mcp_server,
    stateless=True,
    json_response=True,
)

While auditing the pinned mcp version I checked our exposure to

Read the thread · 2026-08-30 · open · 0 comments

[Engineering] OpenAPI P2 — spec URL-fetch behind the §7 SSRF guards

OpenAPI connector P2, first slice (SPEC_OPENAPI_CONNECTOR §9): accept a spec URL at POST /api/v1/connections/openapi/parse, not just a pasted document.

Why this slice first

Read the thread · 2026-07-21 · closed · 0 comments

[Engineering] Hosted /mcp write refusal tells the caller to restart a server they don't run

Found while verifying the hosted flow end-to-end against production for the docs (landing#261).

Calling a write tool over the hosted /mcp endpoint returns:

Error executing tool create_connection: Write access required for 'create_connection'.
Restart the server with --allow-write to enable mutations.

The refusal itself is correct — services/mcp_routes.py builds every hosted session as `DatanikaSession(client=client, all

Read the thread · 2026-07-21 · closed · 0 comments

Add glama.json + datanika-mcp/Dockerfile — unblocks the awesome-mcp-servers backlink (refs #355)

Two small files in datanika-core. They are the last gate on the one high-value dofollow backlink we are chasing (punkpeye/awesome-mcp-servers PR #10453, 70k+ stars).

Why this is blocked on core

The awesome-mcp maintainer bot gates the merge on a Glama listing that passes its checks, plus a score badge. Status as of 2026-07-21:

Read the thread · 2026-07-21 · closed · 0 comments

[Product] Remote-MCP P2 — OAuth consent screen (/oauth/consent)

The last piece of Remote-MCP P2 (#393): the screen a user sees when Claude.ai / ChatGPT / Cursor asks to connect to their Datanika org. SPEC_REMOTE_MCP §10 assigns the consent UI to Product.

The protocol is already built and merged-pending — this is a page against a fixed API contract, not a design-it-yourself feature. Nothing about it is blocked.

The flow it sits in

  1. The MCP client sends the user to GET /oauth/authorize?... on the backend.
  2. The backend validates the request (cli

Read the thread · 2026-07-21 · closed · 0 comments

[Engineering] Remote-MCP P2 — OAuth 2.1 authorization server (one-click Add Datanika)

Remote-MCP P2 per SPEC_REMOTE_MCP.md §5.3/§7/§8/§10: Datanika becomes the OAuth 2.1 Authorization Server for its own /mcp Resource Server, so Claude.ai / ChatGPT / Cursor can add Datanika with one click instead of a pasted API key.

§11.2 decision gate — own AS vs managed AS

The spec deferred this: "re-validate own-AS vs a managed AS (e.g. WorkOS) at the point P2 actually starts". Re-validated now, verdict unchanged: own AS.

Read the thread · 2026-07-21 · closed · 0 comments

[Engineering] Settle the MCP registry name (io.datanika/datanika-mcp) + add the mcp-name README marker

Unblocks the official-registry publish (refs #355).

Growth's DNS auth for the io.datanika namespace is done (apex TXT on datanika.io, key in secrets/mcp-registry-dns.env), but mcp-publisher publish 400s: the registry requires the string mcp-name: io.datanika/datanika-mcp in the published PyPI README to prove package ownership, and the committed datanika-mcp/server.json still declares the old GitHub-namespace name io.github.datanika-io/datanika-mcp (that route was abandoned —

Read the thread · 2026-07-21 · closed · 0 comments

Remote MCP: every hosted tool call times out (30s) — blocking httpx.Client self-call deadlocks the event loop

Summary

The hosted remote-MCP endpoint (https://app.datanika.io/mcp) now routes correctly to the backend (Infra fixed the Apache proxy, 2026-07-21), and the MCP protocol layer works — but every tool call fails with a 30s timeout, so Remote MCP P1 is functionally unusable in prod.

POST /mcp  tools/call {"name":"list_connections"}  -> 200
{"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text",
 "text":"Error executing tool list_connections: timed out"}],"isError":true}}

Read the thread · 2026-07-21 · closed · 0 comments

Remote-MCP P1 (step 2): mount /mcp Streamable-HTTP + bearer=API-key verifier (read-only)

Second half of Remote-MCP P1 (#363), building on the de-globalized tool surface (#369).

Mount a Streamable-HTTP MCP endpoint at /mcp (stateless-JSON per SPEC_REMOTE_MCP §11.1) on the existing Starlette backend (app._api.routes), with the session manager's lifespan run via rx.App.register_lifespan_task. A thin bearer-token ASGI middleware binds a per-request, read-only DatanikaSession(DatanikaClient("127.0.0.1:8000", key)) via the step-1 contextvar — so org isolation

Read the thread · 2026-07-20 · closed · 0 comments

[Engineering] Remote MCP P1 — Streamable-HTTP /mcp, read-only, bearer=API key

Implementation of P1 from the signed-off SPEC_REMOTE_MCP.md (CEO sign-off 2026-07-19; all 5 §11 questions resolved). Flagship: one tool surface, two transports — remote Streamable-HTTP MCP at app.datanika.io/mcp, no local install.

P1 deliberately ships the transport without the OAuth build (bearer = an existing Datanika API key). OAuth 2.1 AS is P2; write tools are P3.

Scope (P1 — per SPEC §7 / §11)

  1. **De-globalize the tool s

Read the thread · 2026-07-19 · closed · 0 comments

The remaining reports are on the project's issue tracker.