nport
nport
SEC Form N-PORT 및 Form N-CEN에서 구축되고 GLEIF LEI 레지스터에 연결된 정규화된 펀드 보유 및 서비스 제공자 그래프로, MCP를 통해 에이전트에 제공됩니다.
설계: docs/design.md. 소스 데이터에 대한 경험적 메모: docs/data-notes.md.
상태: 인제스트 계층만. 원시 및 Parquet 계층은 종단 간 배치됩니다. dbt 변환, MCP 서버 및 Terraform은 아직 구축되지 않았습니다.
빠른 시작
uv sync
export SEC_USER_AGENT="Your Name your@email.com" # the SEC throttles anonymous traffic
uv run nport-ingest periods nport # what quarters are published upstream
uv run nport-ingest all # N-PORT + N-CEN + GLEIF, latest available
uv run nport-ingest status # what is landed, from the manifests세 가지 소스를 모두 랜딩하는 데 몇 분이 걸리며 ./data 아래에 약 1GB를 씁니다. 단일 소스 또는 이전 분기를 랜딩하려면:
uv run nport-ingest land nport --period 2026q1
uv run nport-ingest land ncen --raw-only # skip Parquet conversion
uv run nport-ingest land gleif --force # re-download and re-convertRelated MCP server: civicgraph-mcp
저장소
NPORT_DATA_ROOT는 모든 것이 저장되는 위치를 제어하며 로컬 반복과 ECS에서 실행하는 것 사이의 유일한 차이점입니다:
export NPORT_DATA_ROOT=./data # default
export NPORT_DATA_ROOT=s3://my-bucket/nport # needs the `s3` extra: uv sync --extra s3레이아웃, docs/design.md §2 참조:
{root}/raw/{source}/{period}/{archive}.zip original bytes, immutable
{root}/parquet/{table}/period={period}/data.parquet zstd, all columns VARCHAR
{root}/parquet/_manifest/{source}/period={period}/
manifest.json source URL, raw SHA-256, per-table row counts
schema.json column names, types, descriptions and PKs, from the
CSVW sidecar the SEC ships inside each archive랜딩된 기간을 다시 실행하는 것은 --force가 전달되지 않는 한 no-op이며, 이는 작업을 일정에서 재시도해도 안전하게 만듭니다. SEC가 동일한 파일 이름으로 분기를 다시 게시하면 실행은 조용히 오래된 데이터를 제공하는 대신 바이트 수가 변경되었음을 경고합니다.
인제스트 계층의 설계 결정
모든 Parquet 열은 VARCHAR입니다. 유형 지정은 dbt staging/에 속합니다. 소스에는 유형 추론을 깨뜨리는 값이 가득합니다 — 28-FEB-2026과 같은 날짜, -.0091723714와 같은 숫자, 숫자 열에 나타나는 N/A — 따라서 여기서 추론은 실패하거나 조용히 강제 변환되며, 원시 바이트에서 재현 가능해야 하는 유일한 계층에 비즈니스 로직을 넣게 됩니다.
다운로드 URL은 구성되지 않고 발견됩니다. 대부분의 SEC 아카이브는 {period}_{source}.zip 패턴을 따르지만, 여러 N-CEN 분기는 재게시 후 2025q1_ncen_0.zip으로 제공되었습니다. 인덱스 페이지에서 href를 스크래핑하며, 기존 패턴은 대체 수단으로 사용됩니다.
아카이브 자체의 스키마 메타데이터가 추출됩니다. 두 SEC ZIP에는 테이블별 기본 키, 열 유형 및 열 설명을 선언하는 CSVW *_metadata.json이 포함되어 있습니다. 이는 transform/의 그레인 검증을 위한 권위 있는 입력이므로 ZIP에 남겨두지 않고 schema.json으로 작성됩니다.
레이아웃
src/nport/ingest/ fetch -> validate -> land as Parquet
sources/ one module per upstream source
convert.py ZIP of delimited text -> Parquet, via DuckDB
land.py orchestration and manifests
storage.py URI addressing over fsspec (local or S3)
transform/ dbt project (dbt-duckdb) [not built]
src/nport/server/ FastMCP server [not built]
evals/ scored question set [not built]
infra/ Terraform [not built]개발
uv run ruff check src/ && uv run ruff format src/
uv run pytestThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 'Server of Servers' architecture that aggregates domain-specific financial data capabilities into a single governed interface. It enables users to access fund performance tools like returns, benchmark comparisons, and risk-adjusted metrics through a unified MCP-compliant gateway.
- AlicenseAqualityBmaintenanceA money-in-politics knowledge graph, as an MCP server. It links entities across federal campaign donations, lobbying disclosures, and government contracts.7MIT
- AlicenseAqualityBmaintenanceAn MCP server that wraps SEC EDGAR APIs to provide company financial data, screening metrics, and disclosure signals for investment diligence, with every figure traced to its source filing.8MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that reconstructs hedge-fund/superinvestor portfolios from SEC EDGAR 13F filings, offering tools to query fund holdings, consensus activity, and quarter-over-quarter changes through a read-only API.3AGPL 3.0
Related MCP Connectors
MCP server for nonprofit financials via ProPublica — IRS Form 990 data for 1.8M+ nonprofits.
Knowledge coverage map and health score. Ingest docs into a governed knowledge graph via MCP.
The Graph MCP — indexed blockchain data via subgraph GraphQL queries
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bensacc/nport-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server