关于 Congress.gov API MCP Server
Congress.gov API MCP Server 将官方 Congress.gov API v3 接入 MCP,面向需要查询美国国会立法数据的 MCP 客户端。它结合标准 URI 资源与搜索、子资源工具,覆盖实体查找和相关数据获取。
主要功能
- 01查询法案、议员、国会及委员会资源
- 02跨集合搜索立法数据
- 03获取实体相关子资源
- 04使用标准 URI 访问核心实体
适用场景
- 01查找法案或议员的唯一标识
- 02检索法案的行动记录
- 03查询议员提出的立法
- 04读取特定届国会信息
MCP 相关
向 MCP 客户端提供 Congress.gov 数据资源,以及搜索和获取相关子资源的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Congress.gov API MCP 服务
这是一个模型上下文协议(MCP)服务,旨在通过混合方式提供对官方 Congress.gov API(v3)的访问:
- MCP 资源: 使用标准化 URI 直接查询核心立法实体(法案、议员、国会、委员会和一般信息)。
- MCP 工具: 用于更复杂的操作,例如跨集合搜索(
congress_search)和检索相关数据列表(congress_getSubResource)。
此服务充当桥梁,让 MCP 客户端(例如 AI 助手或开发工具)能够轻松查询和使用美国立法数据。
项目结构
/src:包含所有源代码。/config:配置管理(ConfigurationManager.ts)。/services:与 Congress.gov API 交互的核心逻辑(CongressApiService.ts、RateLimitService.ts)。/tools:MCP 工具定义(search/、subresource/、index.ts)。/types:TypeScript 接口和 Zod 模式。/utils:共享实用函数(日志记录、错误处理等)。resourceHandlers.ts:处理核心实体资源请求的逻辑。createServer.ts:创建服务实例,并注册资源和工具。server.ts:应用程序主入口。
/dist:编译后的 JavaScript 输出(由npm run build生成)。/docs:项目文档(PRD、功能规范、RFC)。package.json:项目元数据和依赖项。tsconfig.json:TypeScript 编译器选项。.eslintrc.json、.prettierrc.json:代码检查和格式化规则。.env:(不提交)用于存储CONGRESS_GOV_API_KEY。
开始使用
-
安装依赖项:
npm install -
设置 API 密钥: 在项目根目录创建一个
.env文件,并添加你的 Congress.gov API 密钥:CONGRESS_GOV_API_KEY=YOUR_API_KEY_HERE(从 https://api.data.gov/signup/ 获取密钥)
-
构建服务:
npm run build -
运行服务:
npm start(此命令会运行
node dist/server.js)
或者,使用 npm run dev 在开发模式下运行(使用 ts-node 和 nodemon)。
与 MCP 客户端搭配使用
将 MCP 客户端连接到正在运行的服务(例如,在本地运行时通过 stdio 连接)。
访问资源
使用 access_mcp_resource 命令/方法,并提供相应的 URI。
示例:
-
获取第 117 届国会的 H.R. 3076 法案:
<access_mcp_resource> <server_name>congress-server</server_name> <uri>congress-gov://bill/117/hr/3076</uri> </access_mcp_resource> -
获取议员 Pelosi 的信息:
<access_mcp_resource> <server_name>congress-server</server_name> <uri>congress-gov://member/P000197</uri> </access_mcp_resource> -
获取第 118 届国会的信息:
<access_mcp_resource> <server_name>congress-server</server_name> <uri>congress-gov://congress/118</uri> </access_mcp_resource> -
获取 API 概览:
<access_mcp_resource> <server_name>congress-server</server_name> <uri>congress-gov://info/overview</uri> </access_mcp_resource>
使用工具
使用 use_mcp_tool 命令/方法。
!!! 重要:工具工作流——查找实体并获取相关数据 !!!
许多常见任务都必须通过同时使用两个工具,按以下两步完成:
-
第 1 步:使用
congress_search查找实体 ID-
目的: 找到所需的特定法案、议员、委员会等,并提取其唯一标识符(例如
memberId,或者法案 URI 所需的congress、billType、billNumber)。 -
工具:
congress_search -
示例: 查找议员“John Kennedy”(可能会返回多个结果,需要从中选择):
<use_mcp_tool> <server_name>congress-server</server_name> <tool_name>congress_search</tool_name> <arguments> { "collection": "member", "query": "John Kennedy" } </arguments> </use_mcp_tool> -
**输出:**在结果中查找
memberId(例如K000393)或其他必要标识符。 -
!!! 警告 !!! 搜索可能会返回多个结果。你必须识别正确的实体,并在下一步使用其专属 ID。
-
!!! API 限制 !!! 底层 API 不支持使用
filters参数按congress过滤常规搜索(例如/v3/bill或/v3/member),并且会忽略该参数。按 Congress 过滤通常需要使用特定的 API 路径(例如/v3/bill/117),而此工具不会构造此类路径。
-
-
步骤 2:使用
congress_getSubResource获取相关数据-
**目的:**使用在步骤 1 中找到的标识符构造
parentUri,并获取相关详细信息(操作、提案人、文本等)。 -
工具:
congress_getSubResource -
前提条件:你必须拥有正确的
parentUri(例如,步骤 1 中的congress-gov://member/K000393)。 -
**示例:**获取议员
K000393提出的立法:<use_mcp_tool> <server_name>congress-server</server_name> <tool_name>congress_getSubResource</tool_name> <arguments> { "parentUri": "congress-gov://member/K000393", "subResource": "sponsored-legislation", "limit": 5 } </arguments> </use_mcp_tool> -
!!! 必定报错警告 !!! 你必须使用与
parentUri类型严格匹配的有效subResource字符串(例如,议员使用'sponsored-legislation',法案使用'actions')。提供无效的组合将导致错误。请查看工具说明,了解有效的组合。
-
遵循这两个步骤对于可靠地获取相关信息至关重要。
工具示例:
-
搜索包含“climate”的法案(限制为 5 条):
<use_mcp_tool> <server_name>congress-server</server_name> <tool_name>congress_search</tool_name> <arguments> { "collection": "bill", "query": "climate", "limit": 5 } </arguments> </use_mcp_tool> -
列出议员(此处无法按 Congress 过滤):
-
注意:如上所述,API 不支持在
congress_search中直接按congress过滤 'member' 集合。<use_mcp_tool> <server_name>congress-server</server_name> <tool_name>congress_search</tool_name> <arguments> { "collection": "member", "limit": 10 // Add "query" or other filters like "type" if needed } </arguments> </use_mcp_tool>
-
-
获取法案 H.R. 3076(第 117 届 Congress)的操作(需要搜索结果中的 URI 或已知信息):
<use_mcp_tool> <server_name>congress-server</server_name> <tool_name>congress_getSubResource</tool_name> <arguments> { "parentUri": "congress-gov://bill/117/hr/3076", "subResource": "actions", "limit": 10 } </arguments> </use_mcp_tool> -
获取议员 P000197 提出的立法:
<use_mcp_tool> <server_name>congress-server</server_name> <tool_name>congress_getSubResource</tool_name> <arguments> { "parentUri": "congress-gov://member/P000197", "subResource": "sponsored-legislation", "limit": 5 } </arguments> </use_mcp_tool>
代码检查与格式化
- 代码检查:
npm run lint - 格式化:
npm run format
提交时,Husky 和 lint-staged 会自动对代码进行检查和格式化。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。