beholder-mcp
An MCP server for the Beholder government contracting API, built with FastMCP and Python.
Beholder aggregates and enriches data from SAM.gov and USASpending.gov, providing higher rate limits and richer analysis than either public API — including risk indicators, contract vehicles, competition metrics, and subaward tracking.
Prerequisites
- uv
- A Beholder API key — get one at api.beholder-gov.com/docs
Setup
git clone https://github.com/rsivilli/beholder-mcp
cd beholder-mcp
Create a .env file and set your API key:
BEHOLDER_API_KEY=your_api_key_here
Running the server
stdio (for MCP clients that spawn the process, e.g. Claude Desktop):
uv run beholder-mcp
HTTP (for connecting remotely):
uv run beholder-mcp-http
Claude Desktop configuration
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"beholder": {
"command": "uv",
"args": ["run", "--directory", "/path/to/beholder-mcp", "beholder-mcp"],
"env": {
"BEHOLDER_API_KEY": "your_api_key_here"
}
}
}
}
Available tools
Contractors
| Tool | Description |
|---|---|
search_contractors |
Search contractors by name, UEI, state, or agency — returns paginated list with obligation totals and review priority scores |
get_contractor |
Get a contractor record by UEI or name — returns full profile with top agencies, PSC codes, vehicle summaries, and risk indicators |
resolve_contractor |
Resolve a company name or UEI to its Beholder UUID and key fields — returns the single best match |
get_contractor_profile |
Full contractor profile in one call: registration details, recent contracts, risk indicators, and contract vehicles |
find_competitors |
Find contractors competing in the same PSC code categories as a given company |
Opportunities
| Tool | Description |
|---|---|
search_opportunities |
Search contract opportunities and award notices by keyword, NAICS code, set-aside, agency, active status, and date filters |
Contracts & subawards
| Tool | Description |
|---|---|
search_contracts |
Search awarded contracts by PIID prefix, recipient, PSC code, fiscal year, obligation range, date range, status, and award type |
get_related_contracts |
Given a contract PIID, find related contracts — parent, siblings, same vehicle, or same awardee |
search_subawards |
Get subaward reports filed under a specific prime contract PIID |
Development
Install dev dependencies and set up pre-commit hooks:
uv sync
uv run pre-commit install
Run linting and formatting checks:
uv run pre-commit run --all-files
Metadata
Release files for beholder-mcp 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| beholder_mcp-1.1.0.tar.gz | 19.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beholder_mcp-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.7 kB
Release files / beholder_mcp-1.1.0.tar.gz
| Download URL | beholder_mcp-1.1.0.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f5ef46d01f3cac636639553f1ca14c643628f3f6a5618b3ffe8e9b8ba7ad874
|
|
BLAKE2b-256 checksum How to use checksums |
b27892684f4e6f4f40bf44ba4d71f6f148d8308e8baaf612b203b5329c45f22a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / beholder_mcp-1.1.0-py3-none-any.whl
| Download URL | beholder_mcp-1.1.0-py3-none-any.whl |
|---|---|
| Size | 22.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b8b47bf024c93c9413d23c07bf4d8404d7aac716d405a7e736724a57095ec5e0
|
|
BLAKE2b-256 checksum How to use checksums |
191b61d3e88477d7912d6b4be851e9ea38dd000c2cc0a6f871c1ca5f754a4121
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for beholder-mcp 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.