Token导航 LogoToken导航TokenDH.com
network overview MCP logo
数据服务未说明官方级别未说明来源级核验

network overview MCP

MCP Server

一个受控的模型上下文协议(MCP)服务器,为LLM提供对ONDC电子商务分析数据的安全只读访问。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
数据分析PythonClaude电子商务Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

AnkurPandeyOndc

提供方

AnkurPandeyOndc

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

ONDC分析MCP服务器

A被治理 模型上下文协议 (MCP)服务器,为LLM提供对PostgreSQL中ONDC电子商务分析数据的安全、只读访问。

它的作用

服务器暴露 4个MCP工具 LLM(Claude等)可以调用该LLM来探索和查询ONDC订单数据:

工具说明
get_schema返回表定义、列类型、域/类别映射和NP类型
get_data_freshness返回最新 order_date 每张桌子
run_safe_sql验证并执行带有安全防护栏的只读SQL查询
search_docs搜索已索引的ONDC文档(RAG框架,尚未索引文档)

SQL安全护栏

每个查询都传递给 run_safe_sql 在执行之前进行验证:

  • SELECT 允许使用语句(不允许插入/更新/删除/删除)
  • SELECT * 被拒绝--需要明确的列名
  • WHERE 条款与 order_date 筛选器是必需的
  • LIMIT 自动注入(默认值1000)或上限(如果过高)
  • 仅在中定义的表 schema/tables.yaml 可访问
  • JOIN需要 ON 仅允许列的条款
  • 多语句查询被拒绝
  • 所有查询都在具有语句超时的只读事务中运行

基于角色的访问

中定义了两个角色 schema/tables.yaml:

  • 分析师 --访问这两个表
  • 观众 --访问 model_for_all_domain

数据库模式

架构: opendata_nodata

model_for_all_domain --按域、类别和网络参与者列出的订单数

类型描述
order_date日期订单日期
buyer_npvarchar买家网络参与者名称
seller_npvarchar卖家网络参与者名称
categoryvarchar产品/服务类别
domainvarchar商业领域(零售B2C、物流等)
np_typevarchar网络参与者类型:np间、np内或null
订单int4订单数量

model_for_all_domain_pincode --按域名和城市分类的订单数量

类型描述
order_date日期订单日期
domainvarchar业务域
delivery_cityvarchar订单交付城市
seller_cityvarchar卖家所在城市
订单int8订单数量

领域

金融、家居服务、物流、公共交通、零售B2B、零售B2C、零售代金券、打车

先决条件

  • Python 3.11+
  • 诗歌
  • PostgreSQL(远程或本地)
  • Redis(可选——可以禁用)

设置

cd ondc-analytics-mcp
poetry install

配置

复制示例env文件并填写您的数据库凭据:

cp .env.example .env

.env 变量:

变量默认值描述
DATABASE_HOSTlocalhostPostgreSQL主机
DATABASE_PORT5432PostgreSQL端口
DATABASE_NAMEondc_analytics数据库名称
DATABASE_USERondc数据库用户
DATABASE_PASSWORDondc_secret数据库密码
DATABASE_SCHEMAopendata_nodata架构名称
DATABASE_URL*(汽车制造)*完整连接URL--将其设置为覆盖单个变量
REDIS_ENABLEDtrue设置为 false 完全禁用Redis缓存
REDIS_URLredis://localhost:6379/0Redis连接URL
TRANSPORTstdio运输方式: stdiohttp
MAX_QUERY_ROWS1000每个查询返回的最大行数
QUERY_TIMEOUT_SECONDS30SQL语句超时
LOG_LEVELINFO日志记录级别
AUDIT_LOG_PATHlogs/audit.jsonl审核日志文件的路径

运行服务器

选项1:stdio模式(适用于克劳德桌面/MCP检查器)

poetry run python -m ondc_mcp.server

或者使用MCP检查器进行交互式测试:

poetry run mcp dev src/ondc_mcp/server.py

选项2:HTTP模式(端口8000上的可流式传输HTTP)

TRANSPORT=http poetry run python -m ondc_mcp.server

选项3:Docker Compose(本地Postgres+Redis的全栈)

docker compose up --build

这将开始:

  • PostgreSQL 16(通过以下方式播种样本数据 schema/init.sql)
  • Redis 7
  • 端口8000上的MCP服务器

只运行Postgres和Redis(并在本地运行服务器):

docker compose up postgres redis

连接到克劳德桌面

添加到您的Claude桌面配置(claude_desktop_config.json):

{
  "mcpServers": {
    "ondc-analytics": {
      "command": "poetry",
      "args": ["run", "python", "-m", "ondc_mcp.server"],
      "cwd": "/path/to/ondc-analytics-mcp",
      "env": {
        "DATABASE_HOST": "your-db-host",
        "DATABASE_PORT": "5432",
        "DATABASE_NAME": "your-db-name",
        "DATABASE_USER": "your-db-user",
        "DATABASE_PASSWORD": "your-db-password",
        "REDIS_ENABLED": "false"
      }
    }
  }
}

连接后,Claude将看到所有4个工具,并可以回答以下分析问题:

  • “昨天按订单数排名靠前的域名是什么?”
  • “按类别显示上周的零售B2C订单”
  • “比较班加罗尔和德里的订单量”

查询示例

有效查询:

SELECT domain, SUM(orders) AS total_orders
FROM opendata_nodata.model_for_all_domain
WHERE order_date = '2026-02-08'
GROUP BY domain
LIMIT 10

拒绝——删除表格:

DROP TABLE opendata_nodata.model_for_all_domain
-- Error: "Only SELECT statements are allowed, got: Drop"

**拒绝--选择\*:**

SELECT * FROM opendata_nodata.model_for_all_domain WHERE order_date = '2026-02-08'
-- Error: "SELECT * is not allowed. Please specify explicit column names."

拒绝--无日期筛选器:

SELECT domain FROM opendata_nodata.model_for_all_domain
-- Error: "A WHERE clause with an order_date filter is required"

审核日志记录

每个工具调用和SQL查询都会记录到 logs/audit.jsonl。每个条目包括:

  • timestamp
  • user_id, role
  • raw_sql, validated_sql
  • status (成功/拒绝)
  • rejection_reasons
  • execution_time_ms
  • row_count

运行测试

poetry run pytest tests/ -v

37个测试,涵盖SQL验证器规则、模式注册表、角色访问和RAG骨架。不需要数据库或Redis。

项目结构

ondc-analytics-mcp/
  src/ondc_mcp/
    server.py              # MCP server entry point, tool registration
    config.py              # Environment-based configuration
    db/
      connection.py        # asyncpg connection pool, read-only execution
      schema_registry.py   # Loads table metadata from tables.yaml
    validation/
      sql_validator.py     # SQL AST validation via sqlglot
    security/
      role_access.py       # Role-based table access control
      query_logger.py      # Audit logging
    cache/
      redis_cache.py       # Redis caching with graceful degradation
    tools/
      sql_tool.py          # run_safe_sql implementation
      schema_tool.py       # get_schema implementation
      freshness_tool.py    # get_data_freshness implementation
      rag_tool.py          # search_docs skeleton
    rag/
      ingestion.py         # Document ingestion (skeleton)
      search.py            # Document search (skeleton)
  schema/
    tables.yaml            # Table metadata, domains, roles
    init.sql               # Seed data for local development
  tests/
    test_sql_validator.py  # 22 SQL validation tests
    test_tools.py          # 15 schema, role, RAG tests
  docker-compose.yml
  Dockerfile
  pyproject.toml

目录标签

目录标签

数据分析PythonClaude电子商务本地部署数据库访问LLM集成安全查询

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP