Skip to main content
Glama
DataCore-VietNam

vn.datacore/datacore-a2a

Official

DataCore A2A — MCP server

Lets an MCP client (Claude Code, Claude Desktop, VS Code, Cursor…) use DataCore's data skills as native tools: Vietnamese address normalization, address validation, company lookup, embedding generation.

MCP client (stdio) ──► datacore-mcp ──HTTPS──► DataCore API

Zero dependency, Python 3.9+.

Installation

pip install datacore-a2a-mcp

Related MCP server: Company Data MCP Server

Prerequisites

This server is a client, not a service. It needs a DataCore endpoint and a mandate token to call — contact 3TIT to be issued one. Without those two, the server starts up and exits immediately with a message saying which variable is missing.

Configuration

Variable

Required

Meaning

DATACORE_A2A_URL

yes

Base URL of the DataCore endpoint issued to you, e.g. https://api.example.com

DATACORE_MANDATE

yes

AP2 mandate token issued by DataCore — determines which skills can be called and the spend cap

DATACORE_SKILLS

no

Comma-separated list of skill ids to limit the tools, or * for all. Leave blank for the default

DATACORE_TIMEOUT

no

Timeout per request (seconds), default 30

Use the exact URL DataCore issued along with the mandate. A different endpoint will not accept your mandate and will return 401.

Claude Code / Claude Desktop

Add to .mcp.json (project) or the Claude Desktop config:

{
  "mcpServers": {
    "datacore-a2a": {
      "command": "datacore-mcp",
      "env": {
        "DATACORE_A2A_URL": "https://api.example.com",
        "DATACORE_MANDATE": "<mandate-token>"
      }
    }
  }
}

Tools

The tool list is generated from the endpoint, not hardcoded here — so when DataCore adds a skill, restart the server and the new tool appears.

By default, 4 skills wired to the real backend are exposed:

Tool

Skill id

What it does

address_normalize

address.normalize

Normalizes a Vietnamese address into province / district / commune

address_validate

address.validate

Checks whether an address exists per administrative data

company_search

company.search

Looks up a company by name or tax ID

company_embeddings

company.embeddings

Generates embedding vectors for text

Every tool is read-only (readOnlyHint: true): nothing is written, deleted, or created. Calling again with the same input yields the same result.

Three other DataCore skills (company.graph, company.financial-sankey, company.news) are deliberately not exposed: they are currently returning mock/deterministic data. If you want to see them for testing, set DATACORE_SKILLS="*", and don't trust the results.

Examples

The three prompts below run through three different tools:

  1. Address normalization — "Normalize this address into province/district/commune: So 1 Ly Thai To, Hoan Kiem, Ha Noi"

  2. Company lookup — "Find company information for tax ID 0100109106 and tell me its operating status"

  3. Embedding — "Generate an embedding for this industry description and tell me how many dimensions the vector has: bán buôn thiết bị điện tử"

Security model

This server carries the mandate token as-is in the X-AP2-Mandate header for DataCore to verify, and never sets any other authorization header on its own. A client is not a place to grant itself permissions — it only forwards what it was issued, and all allow/deny decisions live on the DataCore side.

The mandate is a bearer credential: whoever holds it can call exactly the skills in it, up to the spend cap, until it expires. Treat it like a password — don't commit a .mcp.json with the token filled in, and if your client supports it, read it from a secret manager instead of leaving it inline.

This package never writes the token to logs, not even partially; the text content you send is not logged either. That is a commitment for the process running on your machine — the service side is a different matter, and PRIVACY.md states plainly what it stores.

Troubleshooting

Logs go to stderr, prefixed with [datacore-mcp]. stdout is the JSON-RPC channel.

Symptom

Common cause

Server exits immediately, MISSING required environment variable

DATACORE_A2A_URL or DATACORE_MANDATE not set

401 on every request

Mandate expired, or DATACORE_A2A_URL is not the endpoint issued with that mandate

402

The mandate's spend cap has been used up

403

Skill is outside the mandate's allowlist — request a mandate that includes that skill

502

The skill's backend on the DataCore side is not responding

No tools appear

DATACORE_SKILLS filtered everything out, or the endpoint has no skills registered

Reporting security issues

mcp-security@datacore.vn. Don't open a public issue for security bugs.

If you suspect your mandate has leaked, report it immediately — don't wait until it expires. We need to know so we can handle it on the service side.

Privacy

See PRIVACY.md. In short: this package runs on your machine, stores nothing, sends nothing anywhere except the DataCore endpoint you configure yourself, and never writes the mandate token to logs.

License

MIT — see LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables read-only SQL querying and schema inspection across MSSQL, PostgreSQL, and MySQL databases via MCP tools.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only access to company data across PostgreSQL, MongoDB Atlas, and flat files through MCP tools, allowing AI assistants to query and retrieve information via natural language.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to query internal business data for insights into customers, revenue, subscriptions, sales, and churn through controlled, read-only MCP tools.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to securely query PostgreSQL with pgvector, DynamoDB, and MongoDB Atlas with Vector Search through a read-only, allowlisted MCP interface.
    MIT