政府数据搜索服务

PIA MCP服务器提供对美国政府数据集的高级搜索功能,支持OData过滤和分面搜索,适用于AI和法律研究。

  • by Program-Integrity-Alliance
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 Program-Integrity-Alliance/pia-mcp-local

使用说明

MCP服务器


项目完整性联盟(PIA) 旨在使与美国政府数据集的合作更容易和人工智能友好。我们已经从各种来源获取了数十万份文件和文章,而且这个列表还在不断增长。此MCP服务器使人工智能能够在比大多数源网站更详细的级别上搜索这些数据,例如,在PDF报告中搜索以找到文本和图像出现的确切页面。

完全归因于令人惊叹的开放联邦数据源,PIA提供的数据中的所有链接都将始终指向原始来源。

目前,数据集列表包括:

  1. 美国政府问责局(GAO) -自2010年以来,已有1万份联邦报告和5.5万份公开监督建议
  2. Overlight.gov -自2010年以来,有2.8万份OIG联邦报告和2.9万份公开监督建议
  3. 美国国会 -第118和119次会议的法案文本
  4. 司法部(DOJ) -自2000年以来的195k份新闻稿
  5. 联邦机构年度报告——国会理由、财务报告、绩效报告——10个优先机构的139份报告,2024年的覆盖率最高。
  6. 所有国会研究服务报告-22k份报告由 EveryCRSReport.com
  7. 美国总统行政命令——根据《联合国宪章》规定的最后7任总统的命令 联邦公报.

这些数据每周更新一次,我们很快就会添加更多的数据集和工具。

如果您有任何问题或对其他数据集的要求,我们期待通过提出问题来听取您的意见 这里.

有关如何在Claude和ChatGPT等平台中使用PIA的MCP资源的更多信息,请参阅 PIA连接.

🤝 贡献 • 📝 报告错误或问题

✨ 核心功能

  • 🔎 文档搜索:使用全面的OData过滤选项查询PIA数据库
  • 📊 分面搜索:发现可用的筛选字段和值
  • 📝 AI指令提示:提示LLM如何总结搜索结果和使用搜索工具

🚀 快速开始

获取PIA API密钥

  1. 首选 https://programintegrity.org/ 并注册a 自由 PIA帐户(如果您已经有了,请登录)
  2. 登录后,单击用户图标(右上角)并选择 API/MCP密钥 (这打开了 API/MCP密钥 页面在 /account/api-keys)
  3. 生成一个新密钥,然后复制它——您将通过 X-API-KEY 头球 --api-key 争论

使用Docker MCP工具包安装(推荐)

  1. 下载并运行最新版本的 Docker 桌面版
  2. 导航到“MCP工具包”
  3. 搜索“项目诚信联盟”
  4. 单击“+”添加为服务器
  5. 在“配置”下输入您的密钥
  6. 在“MCP工具包”中导航到“客户端”
  7. 选择一个,例如“克劳德桌面”
  8. 启动您的客户
  9. 现在,您应该看到“pia_search”和其他工具

通过Smithery安装

通过以下方式自动安装Claude Desktop的PIA服务器 史密瑟里:

npx -y @smithery/cli install pia-mcp-server --client claude

手动安装

使用紫外线进行安装:

uv tool install pia-mcp-server

刷新工具规范(列出时不需要API密钥)

此本地服务器中的工具列表由本地快照提供,因此工具 即使没有API密钥也是可发现的。从远程刷新快照 服务器,运行:

PIA_API_KEY=your_key python utils/refresh_tools.py

发展:

# Clone and set up development environment
git clone https://github.com/Program-Integrity-Alliance/pia-mcp-local.git
cd pia-mcp-local

# Create and activate virtual environment
uv venv
source .venv/bin/activate

# Install with test dependencies
uv pip install -e ".[test]"

对于Docker:

# Build the Docker image if you want to use a local image
git clone https://github.com/Program-Integrity-Alliance/pia-mcp-local.git
cd pia-mcp-local
docker build -t pia-mcp-server:latest .

🔌 MCP集成

将此配置添加到MCP客户端配置文件中:

{
    "mcpServers": {
        "pia-mcp-server": {
            "command": "uv",
            "args": [
                "tool",
                "run",
                "pia-mcp-server",
                "--api-key", "YOUR_API_KEY"
            ],
            "cwd": "/path/to/your/pia-mcp-local"
        }
    }
}

对于Docker:

您必须构建Docker镜像。..

docker build -t pia-mcp-server:latest .

然后将此添加到您的客户,例如克劳德。..

{
    "mcpServers": {
        "pia-mcp-server": {
            "command": "docker",
            "args": [
                "run",
                "--rm",
                "-i",
                "pia-mcp-server:latest",
                "--api-key", "YOUR_API_KEY"
            ]
        }
    }
}

💡 可用工具

服务器提供2个工具,逐字转发给程序完整性联盟(PIA)MCP服务器:

1. pia_search

目的: 初步搜索PIA数据库中的政府监督报告、建议和相关文件。

说明: 返回带有代码段、引用、嵌入方面和 govquery_url,具有完整的OData过滤功能。将每个数据集和特定于机构的搜索工具整合到一个工具中。

参数:

  • query (必填):搜索查询文本
  • filter (可选):支持复杂布尔逻辑的OData筛选器表达式
  • 其他可选的分页/方面/模式参数——请参阅该工具的 inputSchema

2. pia_oversight_recommendations

目的: 默认情况下,使用启用的方面搜索开放建议数据集(GAO+Oversight.gov)。

参数:

  • query (必填):搜索查询文本
  • filter (可选):OData筛选器表达式

遥控器也会暴露 search 和 fetch (OpenAI ChatGPT MCP规范)——此代理故意这样做 不 揭露他们;使用 pia_search 相反。它们被同步脚本排除在外(utils/refresh_tools.py).

搜索模式

pia_search 支持OData过滤和分面。这 filter 参数使用标准 OData查询语法.

筛选器表达式示例:

  • 基本筛选器: "SourceDocumentDataSource eq 'GAO'"
  • 多种条件: "SourceDocumentDataSource eq 'GAO' or SourceDocumentDataSource eq 'Oversight.gov'"
  • 复杂分组: "SourceDocumentDataSource eq 'GAO' and RecStatus ne 'Closed'"
  • 否定: "SourceDocumentDataSource ne 'Department of Justice' and not (RecStatus eq 'Closed')"
  • 列出成员资格: "IsIntegrityRelated eq 'Yes' and RecPriorityFlag in ('High', 'Critical')"
  • 日期范围: "SourceDocumentPublishDate ge '2020-01-01' and SourceDocumentPublishDate le '2024-12-31'"
  • 布尔分组: "(SourceDocumentDataSource eq 'GAO' or SourceDocumentDataSource eq 'Oversight.gov') and RecStatus eq 'Open'"

OData筛选器运算符:

  • eq -等于: field eq 'value'
  • ne -不等于: field ne 'value'
  • gt -大于: amount gt 1000
  • ge -大于或等于: date ge '2023-01-01'
  • lt -小于: amount lt 5000
  • le -小于或等于: date le '2023-12-31'
  • in -列表中的值: status in ('Active', 'Pending')

OData逻辑运算符:

  • and -逻辑与: field1 eq 'value' and field2 gt 100
  • or -逻辑OR: status eq 'Active' or status eq 'Pending'
  • not -逻辑不是: not (status eq 'Inactive')
  • () -分组: (field1 eq 'A' or field1 eq 'B') and field2 gt 0

OData字符串函数:

  • contains(field, 'text') -字段包含文本
  • startswith(field, 'prefix') -字段以前缀开头
  • endswith(field, 'suffix') -字段以后缀结尾

2.PIA搜索面

查找可用于筛选的字段名称和值。

工具名称: pia_search_facets

参数:

  • query (可选):用于获取方面的可选查询(默认值:“”)

目的:

  • 发现可用的字段名称(例如。, data_source, document_type, agency)
  • 查找可能的字段值(例如,“OIG”、“GAO”、“audit_report”)
  • 了解每个字段的数据类型(字符串、日期、数字)

这些信息有助于您构建正确的 filter 搜索工具的表达式。

🔍 筛选器发现工作流

要有效地使用OData过滤器,请遵循以下工作流程:

步骤1:发现可用字段

使用 pia_search_facets 该工具用于探索哪些字段可用于筛选。您可以提供查询以获取与搜索主题相关的方面,也可以省略查询以查看所有可用字段。

步骤2:检查字段值

方面响应将显示可用字段及其可能值:

{
  "SourceDocumentDataSource": ["Oversight.gov", "GAO", "CMS", "FBI"],
  "RecStatus": ["Open", "Closed", "In Progress"],
  "RecPriorityFlag": ["High", "Medium", "Low", "Critical"],
  "IsIntegrityRelated": ["Yes", "No"],
  "SourceDocumentPublishDate": "2020-01-01 to 2024-12-31"
}

第3步:建立目标搜索

使用 pia_search 具有已发现字段的工具,用于创建精确的OData过滤器:

基本示例:

Query: "Medicare fraud"
Filter: "SourceDocumentDataSource eq 'GAO' and SourceDocumentPublishDate ge '2023-01-01' and IsIntegrityRelated eq 'Yes'"

复杂示例:

Query: "healthcare violations"
Filter: "(SourceDocumentDataSource eq 'Oversight.gov' or SourceDocumentDataSource eq 'CMS') and RecPriorityFlag in ('High', 'Critical') and SourceDocumentPublishDate ge '2023-01-01'"

📝 AI指令提示

服务器显示一个提示,指示调用LLM如何使用PIA工具和格式化响应:

pia_assistant_guidance

使用PIA(GovQuery)工具的LLM综合指南:搜索策略、引用格式和响应结构。

论据: 无(可重复使用的指南)

⚙️ 配置

API密钥始终通过MCP服务器配置提供。可以通过环境变量配置其他设置:

变量 目的 默认值
PIA_API_URL PIA API端点 https://www.programintegrity.org/mcp
REQUEST_TIMEOUT API请求超时(秒) 60
MAX_RESULTS 每次查询的最大结果数 50

MCP配置

API密钥必须使用 --api-key 争论。看 获取PIA API密钥 上面创建一个。

{
    "mcpServers": {
        "pia-mcp-server": {
            "command": "pia-mcp-server",
            "args": ["--api-key", "YOUR_API_KEY"]
        }
    }
}

替换 YOUR_API_KEY 使用您的实际PIA API密钥。

🧪 测试

运行测试套件:

python -m pytest

跑步覆盖:

python -m pytest --cov=pia_mcp_server

📄 许可证

根据MIT许可证发布。有关详细信息,请参阅LICENSE文件。


由...制作❤️ 政府透明度和问责制