使用说明
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与交互式结果表内联显示。
先决条件
- Node.js>=18
- 克劳德桌面 (支持MCP Apps的最新版本)
设置
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 |
空--复制和自定义 |
创建自定义模板
- 复制
templates/blank-starter.json到新文件(例如。templates/my-agency.json) - 填写以下字段:
{
"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"
}
}
- 重建(
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
技术栈
- MCP应用软件开发工具包 --MCP主机内的交互式UI
- 反应19 --UI框架
- AG电网社区 --具有排序、筛选和分页功能的数据表
- 泰勒·福吉 --web组件(按钮、文本字段、徽章、工具提示)
- 佐德 --模板和工具输入的模式验证
- 维特 + vite插件单文件 --将UI捆绑到单个HTML中
- 索克拉塔SODA API --公共开放数据
致谢
灵感来自 Socrata MCP服务器 通过 托马斯·福尔兹,它提供了一个基于Python的MCP服务器,用于查询Socrata开放数据平台。该项目在TypeScript中重新实现了Socrata API集成,并将其封装在具有交互式UI的MCP应用程序中。
