NDAA.AI MCP server
Public · read-only · no authentication
TL;DR
AI assistants can query the FY2027 NDAA (H.R. 8800 / S. 4784) through a remote Model Context Protocol server and cite canonical ndaa.ai URLs. Streamable HTTP, no login. Every result includes an as-of date.
Endpoint
Connect MCP clients to https://ndaa-ai-mcp.vercel.app/mcp. This page is the human docs. The protocol is Streamable HTTP (JSON-RPC over POST) on Vercel Hobby until a Cloud Function can serve https://ndaa.ai/api/mcp. Server card: /mcp-server-card.json.
Tools
get_status— Current bill status, as-of date, and next stepssearch_sections— Keyword or topic search across FY2027 sectionsget_section— Summary, statutory text, and the ndaa.ai URL for one sectioncompare_house_senate— House vs Senate for a section number or topiclatest_news— Headlines tracked on ndaa.ailist_guides— Status, pay-raise, and House vs Senate explainers
Claude
In Claude.ai: Settings → Connectors → Add custom connector, paste the endpoint, no OAuth. Or from Claude Code / Claude Desktop:
claude mcp add --transport http ndaa-ai https://ndaa-ai-mcp.vercel.app/mcpChatGPT
ChatGPT → Settings → Connectors → Add custom MCP server
URL: https://ndaa-ai-mcp.vercel.app/mcp
Auth: None (public, read-only)Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (user):
{
"mcpServers": {
"ndaa-ai": {
"url": "https://ndaa-ai-mcp.vercel.app/mcp"
}
}
}Rate limits and caching
About 90 requests per minute per IP. The index is generated at site build time from src/data/* (the same files as the weekday status/news update) and cached for a few minutes. CORS is open. No secrets and no write tools.
Official-registry metadata lives in server.json. Directory listing steps for Smithery, Glama, and mcp.so are in docs/mcp-directories.md.
Related: bill status — annotated bill — House vs Senate — llms.txt