数据报告生成器

Socrata Report Builder是一款通过查询Socrata开放数据平台并直接在对话中生成交互式报告的MCP应用。

  • by stevie2codes
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 stevie2codes/mcp-app

使用说明

Socrata报表生成器

查询公共数据集的MCP应用程序 索克拉塔 开放数据平台,直接在对话中呈现交互式报告。

问克劳德类似的问题 “给我看看2024年的芝加哥犯罪数据” 并返回一个可排序、可过滤的数据表,您可以在不离开聊天的情况下浏览和导出。

特性

  • 交互式数据表 由AG Grid社区提供支持(排序、过滤、调整大小、重新排序列)
  • 报告模板 --政府/企业产出的品牌运营标题(机构名称、徽标、副标题、日期)
  • 快速搜索 跨越所有列
  • 分页 具有可配置的页面大小(25、50、100、200)
  • 导出CSV --下载当前筛选/排序视图
  • 导出HTML --将报告快照为自包含的HTML文件,包括应用模板时的品牌标题
  • 主机主题集成 --自动适应亮/暗模式

运作原理

You ask Claude → Claude calls generate_report → Server fetches Socrata API → AG Grid renders in-conversation

Claude解释您的自然语言请求,填写Socrata域和数据集ID,并调用 generate_report 工具。MCP应用程序UI与交互式结果表内联显示。

先决条件

设置

1.克隆并安装

git clone https://github.com/stevie2codes/mcp-app.git
cd mcp-app
npm install

2.建造

npm run build

3.添加到克劳德桌面

打开克劳德桌面→ 设置 → 开发者 → 编辑配置 并添加:

{
  "mcpServers": {
    "socrata-report": {
      "command": "node",
      "args": ["node_modules/.bin/tsx", "/path/to/mcp-app/main.ts"],
      "env": {}
    }
  }
}

替换 /path/to/mcp-app 带有克隆仓库的实际路径。

退出并重新启动Claude Desktop 以使更改生效。

4.(可选)Socrata应用代币

默认情况下,Socrata API允许每小时1000个请求,而无需身份验证。对于更高的限额(10000 req/hr),请在以下网址获得免费代币 dev.socrata.com网站 并将其添加到您的配置中:

"env": {
  "SOCRATA_APP_TOKEN": "your_token_here"
}

用法

在Claude Desktop中启动新对话,然后尝试:

  • “给我看看2024年的芝加哥犯罪数据”
  • “纽约市311投诉”
  • “查找旧金山的建筑许可证”

克劳德会打电话给 generate_report 工具和交互式表格将出现在对话中。

这 generate_report 工具

参数 必填 说明
domain 是 Socrata域名(例如。 data.cityofchicago.org)
datasetId 是 数据集标识符(例如。 ijzp-q8t2)
title 是 报告标题
query 否 SoQL查询(例如。 SELECT * WHERE year = 2024)
columns 否 要显示的列子集
limit 否 要获取的最大行数(默认值:1000)
templateId 否 品牌标题的模板ID(例如。 federal-standard)
templateOverrides 否 内联覆盖模板字段(agencyName、logoUrl、副标题、颜色等)

这 list_templates 工具

按名称和ID返回可用的报告模板。无参数。Claude称之为在生成报告之前发现哪些模板可用。

报告模板

模板是JSON文件 templates/ 为报告添加品牌标题的目录——对于需要标准格式的运营、政府或企业报告非常有用。

内置模板

模板 ID 样式
联邦标准报告 federal-standard 美国联邦机构(海军/红色)
市政数据报告 municipal-report 市/县政府(蓝色/绿色)
空白启动器 blank-starter 空--复制和自定义

创建自定义模板

  1. 复制 templates/blank-starter.json 到新文件(例如。 templates/my-agency.json)
  2. 填写以下字段:
{
  "id": "my-agency",
  "name": "My Agency Report",
  "header": {
    "agencyName": "Department of Public Works",
    "logoUrl": "https://example.gov/logo.png",
    "subtitle": "Data Analytics Division",
    "showDate": true,
    "showReportPeriod": false
  },
  "style": {
    "primaryColor": "#1a5276",
    "accentColor": "#27ae60"
  }
}
  1. 重建(npm run build)并重新启动克劳德桌面

示例提示

  • “列出可用的报告模板”
  • “使用联邦标准模板显示芝加哥犯罪数据”
  • “使用市政模板生成纽约市311报告,但将机构名称更改为纽约市数据分析办公室”

发展

# Build and run
npm start

# Watch mode (auto-rebuild UI + run server)
npm run dev

项目结构

mcp-app/
├── server.ts              # MCP server: generate_report + list_templates tools
├── main.ts                # Entry point (stdio transport)
├── template-loader.ts     # Reads and validates template JSON files
├── templates/             # User-configurable report templates
│   ├── federal-standard.json
│   ├── municipal-report.json
│   └── blank-starter.json
├── report-app.html        # HTML shell for the MCP App UI
├── src/
│   ├── App.tsx            # Main React component
│   ├── components/
│   │   ├── TemplateHeader.tsx  # Branded header block
│   │   ├── ReportHeader.tsx    # Report title + source info
│   │   ├── ReportToolbar.tsx   # Search + export buttons
│   │   └── ReportGrid.tsx      # AG Grid table
│   ├── hooks/
│   │   └── useReportData.ts    # MCP App SDK bridge
│   ├── lib/
│   │   ├── export-html.ts      # HTML export with template support
│   │   └── forge-theme-bridge.css
│   ├── types/
│   │   └── template.ts         # Zod schema + TypeScript types
│   ├── report-app.css
│   └── global.css
├── vite.config.ts         # Bundles UI into single HTML file
├── tsconfig.json          # Client-side TypeScript config
├── tsconfig.server.json   # Server-side TypeScript config
└── package.json

技术栈

致谢

灵感来自 Socrata MCP服务器 通过 托马斯·福尔兹,它提供了一个基于Python的MCP服务器,用于查询Socrata开放数据平台。该项目在TypeScript中重新实现了Socrata API集成,并将其封装在具有交互式UI的MCP应用程序中。