nepa-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nepa_mcp-0.1.0/.gitignore +53 -0
- nepa_mcp-0.1.0/CITATION.cff +26 -0
- nepa_mcp-0.1.0/CODE_OF_CONDUCT.md +171 -0
- nepa_mcp-0.1.0/CONTRIBUTING.md +137 -0
- nepa_mcp-0.1.0/LICENSE +28 -0
- nepa_mcp-0.1.0/MAINTAINERS.md +25 -0
- nepa_mcp-0.1.0/NOTICE +23 -0
- nepa_mcp-0.1.0/PKG-INFO +383 -0
- nepa_mcp-0.1.0/README.md +349 -0
- nepa_mcp-0.1.0/SECURITY.md +43 -0
- nepa_mcp-0.1.0/SUPPORT.md +50 -0
- nepa_mcp-0.1.0/blm/requirements.txt +15 -0
- nepa_mcp-0.1.0/blm/server.py +173 -0
- nepa_mcp-0.1.0/blm/src/__init__.py +0 -0
- nepa_mcp-0.1.0/blm/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/blm/src/apis/blm_api.py +416 -0
- nepa_mcp-0.1.0/blm/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/blm/src/core/constants.py +26 -0
- nepa_mcp-0.1.0/census/requirements.txt +15 -0
- nepa_mcp-0.1.0/census/server.py +156 -0
- nepa_mcp-0.1.0/census/src/__init__.py +1 -0
- nepa_mcp-0.1.0/census/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/census/src/apis/simplified_census_api.py +339 -0
- nepa_mcp-0.1.0/census/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/census/src/core/fips_utils.py +66 -0
- nepa_mcp-0.1.0/cfr/__init__.py +1 -0
- nepa_mcp-0.1.0/cfr/requirements.txt +20 -0
- nepa_mcp-0.1.0/cfr/server.py +1091 -0
- nepa_mcp-0.1.0/cfr/src/__init__.py +1 -0
- nepa_mcp-0.1.0/cfr/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/cfr/src/apis/cfr_api.py +1652 -0
- nepa_mcp-0.1.0/cfr/src/apis/cfr_constants.py +69 -0
- nepa_mcp-0.1.0/efh/requirements.txt +16 -0
- nepa_mcp-0.1.0/efh/server.py +205 -0
- nepa_mcp-0.1.0/efh/src/__init__.py +0 -0
- nepa_mcp-0.1.0/efh/src/apis/__init__.py +0 -0
- nepa_mcp-0.1.0/efh/src/apis/efh_api.py +589 -0
- nepa_mcp-0.1.0/efh/src/core/__init__.py +0 -0
- nepa_mcp-0.1.0/efh/src/core/constants.py +22 -0
- nepa_mcp-0.1.0/epa_aqs/requirements.txt +15 -0
- nepa_mcp-0.1.0/epa_aqs/server.py +314 -0
- nepa_mcp-0.1.0/epa_aqs/src/__init__.py +0 -0
- nepa_mcp-0.1.0/epa_aqs/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/epa_aqs/src/apis/aqs_api.py +651 -0
- nepa_mcp-0.1.0/epa_aqs/src/apis/aqs_constants.py +185 -0
- nepa_mcp-0.1.0/epa_aqs/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/esa_ranges/requirements.txt +16 -0
- nepa_mcp-0.1.0/esa_ranges/server.py +126 -0
- nepa_mcp-0.1.0/esa_ranges/src/__init__.py +0 -0
- nepa_mcp-0.1.0/esa_ranges/src/apis/__init__.py +0 -0
- nepa_mcp-0.1.0/esa_ranges/src/apis/esa_ranges_api.py +601 -0
- nepa_mcp-0.1.0/esa_ranges/src/core/__init__.py +0 -0
- nepa_mcp-0.1.0/esa_ranges/src/core/constants.py +15 -0
- nepa_mcp-0.1.0/fema_nfhl/requirements.txt +7 -0
- nepa_mcp-0.1.0/fema_nfhl/server.py +168 -0
- nepa_mcp-0.1.0/fema_nfhl/src/__init__.py +1 -0
- nepa_mcp-0.1.0/fema_nfhl/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/fema_nfhl/src/apis/fema_nfhl_api.py +516 -0
- nepa_mcp-0.1.0/fema_nfhl/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/gbif/requirements.txt +7 -0
- nepa_mcp-0.1.0/gbif/server.py +181 -0
- nepa_mcp-0.1.0/gbif/src/__init__.py +0 -0
- nepa_mcp-0.1.0/gbif/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/gbif/src/apis/counties_api.py +82 -0
- nepa_mcp-0.1.0/gbif/src/apis/gbif_api.py +769 -0
- nepa_mcp-0.1.0/gbif/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/gbif/src/core/fips_utils.py +126 -0
- nepa_mcp-0.1.0/gis/requirements.txt +7 -0
- nepa_mcp-0.1.0/gis/server.py +149 -0
- nepa_mcp-0.1.0/gis/src/__init__.py +1 -0
- nepa_mcp-0.1.0/gis/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/gis/src/apis/roi_api.py +147 -0
- nepa_mcp-0.1.0/gis/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/ipac/requirements.txt +19 -0
- nepa_mcp-0.1.0/ipac/server.py +116 -0
- nepa_mcp-0.1.0/ipac/src/__init__.py +1 -0
- nepa_mcp-0.1.0/ipac/src/apis/__init__.py +4 -0
- nepa_mcp-0.1.0/ipac/src/apis/ipac_api.py +350 -0
- nepa_mcp-0.1.0/map_composer/__init__.py +1 -0
- nepa_mcp-0.1.0/map_composer/requirements.txt +6 -0
- nepa_mcp-0.1.0/map_composer/server.py +665 -0
- nepa_mcp-0.1.0/map_composer/src/__init__.py +1 -0
- nepa_mcp-0.1.0/map_composer/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/map_composer/src/apis/counties_api.py +127 -0
- nepa_mcp-0.1.0/map_composer/src/apis/gbif_api.py +773 -0
- nepa_mcp-0.1.0/map_composer/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/map_composer/src/core/constants.py +135 -0
- nepa_mcp-0.1.0/map_composer/src/core/fips_utils.py +130 -0
- nepa_mcp-0.1.0/map_composer/src/core/geometry_collector.py +2580 -0
- nepa_mcp-0.1.0/map_composer/src/core/map_renderer.py +1040 -0
- nepa_mcp-0.1.0/nepa_assist/requirements.txt +19 -0
- nepa_mcp-0.1.0/nepa_assist/server.py +114 -0
- nepa_mcp-0.1.0/nepa_assist/src/__init__.py +1 -0
- nepa_mcp-0.1.0/nepa_assist/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/nepa_assist/src/apis/nepa_assist_api.py +397 -0
- nepa_mcp-0.1.0/nepa_assist/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/nepa_mcp/__init__.py +10 -0
- nepa_mcp-0.1.0/nepa_mcp/__main__.py +5 -0
- nepa_mcp-0.1.0/nepa_mcp/aggregate.py +37 -0
- nepa_mcp-0.1.0/nepa_mcp/cli.py +133 -0
- nepa_mcp-0.1.0/nepa_mcp/clients.py +93 -0
- nepa_mcp-0.1.0/nepa_mcp/config.py +79 -0
- nepa_mcp-0.1.0/nepa_mcp/loader.py +41 -0
- nepa_mcp-0.1.0/nepa_mcp/registry.py +74 -0
- nepa_mcp-0.1.0/nepa_mcp_common/__init__.py +13 -0
- nepa_mcp-0.1.0/nepa_mcp_common/arcgis.py +341 -0
- nepa_mcp-0.1.0/nepa_mcp_common/http.py +52 -0
- nepa_mcp-0.1.0/nepa_mcp_common/spatial.py +438 -0
- nepa_mcp-0.1.0/nepa_mcp_common/validation.py +114 -0
- nepa_mcp-0.1.0/noaa/requirements.txt +16 -0
- nepa_mcp-0.1.0/noaa/server.py +127 -0
- nepa_mcp-0.1.0/noaa/src/__init__.py +0 -0
- nepa_mcp-0.1.0/noaa/src/apis/__init__.py +0 -0
- nepa_mcp-0.1.0/noaa/src/apis/noaa_api.py +354 -0
- nepa_mcp-0.1.0/noaa/src/core/__init__.py +0 -0
- nepa_mcp-0.1.0/noaa/src/core/constants.py +19 -0
- nepa_mcp-0.1.0/nrhp/requirements.txt +15 -0
- nepa_mcp-0.1.0/nrhp/server.py +121 -0
- nepa_mcp-0.1.0/nrhp/src/__init__.py +0 -0
- nepa_mcp-0.1.0/nrhp/src/apis/__init__.py +0 -0
- nepa_mcp-0.1.0/nrhp/src/apis/nrhp_api.py +227 -0
- nepa_mcp-0.1.0/nrhp/src/core/__init__.py +0 -0
- nepa_mcp-0.1.0/nrhp/src/core/constants.py +19 -0
- nepa_mcp-0.1.0/padus/requirements.txt +15 -0
- nepa_mcp-0.1.0/padus/server.py +115 -0
- nepa_mcp-0.1.0/padus/src/__init__.py +0 -0
- nepa_mcp-0.1.0/padus/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/padus/src/apis/padus_api.py +154 -0
- nepa_mcp-0.1.0/padus/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/pcsrf/requirements.txt +16 -0
- nepa_mcp-0.1.0/pcsrf/server.py +197 -0
- nepa_mcp-0.1.0/pcsrf/src/__init__.py +0 -0
- nepa_mcp-0.1.0/pcsrf/src/apis/__init__.py +0 -0
- nepa_mcp-0.1.0/pcsrf/src/apis/pcsrf_api.py +712 -0
- nepa_mcp-0.1.0/pcsrf/src/core/__init__.py +0 -0
- nepa_mcp-0.1.0/pcsrf/src/core/constants.py +33 -0
- nepa_mcp-0.1.0/pyproject.toml +130 -0
- nepa_mcp-0.1.0/tigerweb_counties/requirements.txt +15 -0
- nepa_mcp-0.1.0/tigerweb_counties/server.py +112 -0
- nepa_mcp-0.1.0/tigerweb_counties/src/__init__.py +0 -0
- nepa_mcp-0.1.0/tigerweb_counties/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/tigerweb_counties/src/apis/counties_api.py +122 -0
- nepa_mcp-0.1.0/tigerweb_counties/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/tribal/requirements.txt +15 -0
- nepa_mcp-0.1.0/tribal/server.py +112 -0
- nepa_mcp-0.1.0/tribal/src/__init__.py +0 -0
- nepa_mcp-0.1.0/tribal/src/apis/__init__.py +1 -0
- nepa_mcp-0.1.0/tribal/src/apis/tribal_api.py +162 -0
- nepa_mcp-0.1.0/tribal/src/core/__init__.py +1 -0
- nepa_mcp-0.1.0/tribal/src/core/constants.py +32 -0
- nepa_mcp-0.1.0/usace/requirements.txt +7 -0
- nepa_mcp-0.1.0/usace/server.py +183 -0
- nepa_mcp-0.1.0/usace/src/__init__.py +0 -0
- nepa_mcp-0.1.0/usace/src/apis/__init__.py +0 -0
- nepa_mcp-0.1.0/usace/src/apis/usace_api.py +480 -0
- nepa_mcp-0.1.0/usace/src/core/__init__.py +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.so
|
|
5
|
+
*.egg-info/
|
|
6
|
+
build/
|
|
7
|
+
dist/
|
|
8
|
+
.venv/
|
|
9
|
+
venv/
|
|
10
|
+
.ruff_cache/
|
|
11
|
+
.pytest_cache/
|
|
12
|
+
.playwright-cli/
|
|
13
|
+
.playwright-mcp/
|
|
14
|
+
.mypy_cache/
|
|
15
|
+
.coverage
|
|
16
|
+
coverage.xml
|
|
17
|
+
htmlcov/
|
|
18
|
+
*.log
|
|
19
|
+
|
|
20
|
+
# Local environment and credentials
|
|
21
|
+
.env
|
|
22
|
+
.env.*
|
|
23
|
+
!.env.example
|
|
24
|
+
credentials.env
|
|
25
|
+
config.toml
|
|
26
|
+
handoffs/
|
|
27
|
+
|
|
28
|
+
# Generated MCP client backups and interrupted writes
|
|
29
|
+
*.nepa-mcp.bak
|
|
30
|
+
.mcp.json.tmp
|
|
31
|
+
.vscode/mcp.json.tmp
|
|
32
|
+
|
|
33
|
+
# Legacy deployment-generated files
|
|
34
|
+
*/.bedrock_agentcore.yaml
|
|
35
|
+
*/.bedrock_agentcore/
|
|
36
|
+
|
|
37
|
+
# Local outputs
|
|
38
|
+
output/
|
|
39
|
+
tmp/
|
|
40
|
+
|
|
41
|
+
# Pre-release review material that must stay out of the public repository
|
|
42
|
+
docs/*.docx
|
|
43
|
+
EIDR/
|
|
44
|
+
|
|
45
|
+
# OS and editor files
|
|
46
|
+
.DS_Store
|
|
47
|
+
.claude/
|
|
48
|
+
.vscode/
|
|
49
|
+
!.vscode/
|
|
50
|
+
.vscode/*
|
|
51
|
+
!.vscode/mcp.json
|
|
52
|
+
.idea/
|
|
53
|
+
*.swp
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it using the metadata in this file."
|
|
3
|
+
title: "PermitAI NEPA MCP Toolkit: Federal Environmental Data, Regulatory Research, and Geospatial Screening"
|
|
4
|
+
type: software
|
|
5
|
+
authors:
|
|
6
|
+
- family-names: Chaturvedi
|
|
7
|
+
given-names: Sarthak
|
|
8
|
+
website: "https://sarthakchat.github.io/"
|
|
9
|
+
- family-names: Chintalapati
|
|
10
|
+
given-names: Renuka
|
|
11
|
+
- family-names: Nally
|
|
12
|
+
given-names: Daniel
|
|
13
|
+
website: "https://www.pnnl.gov/people/dan-nally"
|
|
14
|
+
- family-names: Parker
|
|
15
|
+
given-names: Mike
|
|
16
|
+
website: "https://www.pnnl.gov/people/mike-parker"
|
|
17
|
+
- family-names: Munikoti
|
|
18
|
+
given-names: Sai
|
|
19
|
+
website: "https://www.pnnl.gov/people/sai-munikoti"
|
|
20
|
+
- family-names: Horawalavithana
|
|
21
|
+
given-names: Sameera
|
|
22
|
+
website: "https://www.pnnl.gov/people/sameera-horawalavithana"
|
|
23
|
+
version: 0.1.0
|
|
24
|
+
date-released: 2026-08-18
|
|
25
|
+
repository-code: "https://github.com/pnnl/nepa-mcp"
|
|
26
|
+
license: BSD-3-Clause
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Contributor Covenant 3.0 Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We pledge to make our community welcoming, safe, and equitable for all.
|
|
6
|
+
|
|
7
|
+
We are committed to fostering an environment that respects and promotes the
|
|
8
|
+
dignity, rights, and contributions of all individuals, regardless of
|
|
9
|
+
characteristics including race, ethnicity, caste, color, age, physical
|
|
10
|
+
characteristics, neurodiversity, disability, sex or gender, gender identity or
|
|
11
|
+
expression, sexual orientation, language, philosophy or religion, national or
|
|
12
|
+
social origin, socio-economic position, level of education, or other status.
|
|
13
|
+
The same privileges of participation are extended to everyone who participates
|
|
14
|
+
in good faith and in accordance with this Covenant.
|
|
15
|
+
|
|
16
|
+
## Encouraged Behaviors
|
|
17
|
+
|
|
18
|
+
While acknowledging differences in social norms, we all strive to meet our
|
|
19
|
+
community's expectations for positive behavior. We also understand that our
|
|
20
|
+
words and actions may be interpreted differently than we intend based on
|
|
21
|
+
culture, background, or native language.
|
|
22
|
+
|
|
23
|
+
With these considerations in mind, we agree to behave mindfully toward each
|
|
24
|
+
other and act in ways that center our shared values, including:
|
|
25
|
+
|
|
26
|
+
1. Respecting the **purpose of our community**, our activities, and our ways of
|
|
27
|
+
gathering.
|
|
28
|
+
2. Engaging **kindly and honestly** with others.
|
|
29
|
+
3. Respecting **different viewpoints** and experiences.
|
|
30
|
+
4. **Taking responsibility** for our actions and contributions.
|
|
31
|
+
5. Gracefully giving and accepting **constructive feedback**.
|
|
32
|
+
6. Committing to **repairing harm** when it occurs.
|
|
33
|
+
7. Behaving in other ways that promote and sustain the **well-being of our
|
|
34
|
+
community**.
|
|
35
|
+
|
|
36
|
+
## Restricted Behaviors
|
|
37
|
+
|
|
38
|
+
We agree to restrict the following behaviors in our community. Instances,
|
|
39
|
+
threats, and promotion of these behaviors are violations of this Code of
|
|
40
|
+
Conduct.
|
|
41
|
+
|
|
42
|
+
1. **Harassment.** Violating explicitly expressed boundaries or engaging in
|
|
43
|
+
unnecessary personal attention after any clear request to stop.
|
|
44
|
+
2. **Character attacks.** Making insulting, demeaning, or pejorative comments
|
|
45
|
+
directed at a community member or group of people.
|
|
46
|
+
3. **Stereotyping or discrimination.** Characterizing anyone’s personality or
|
|
47
|
+
behavior on the basis of immutable identities or traits.
|
|
48
|
+
4. **Sexualization.** Behaving in a way that would generally be considered
|
|
49
|
+
inappropriately intimate in the context or purpose of the community.
|
|
50
|
+
5. **Violating confidentiality**. Sharing or acting on someone's personal or
|
|
51
|
+
private information without their permission.
|
|
52
|
+
6. **Endangerment.** Causing, encouraging, or threatening violence or other
|
|
53
|
+
harm toward any person or group.
|
|
54
|
+
7. Behaving in other ways that **threaten the well-being** of our community.
|
|
55
|
+
|
|
56
|
+
### Other Restrictions
|
|
57
|
+
|
|
58
|
+
1. **Misleading identity.** Impersonating someone else for any reason, or
|
|
59
|
+
pretending to be someone else to evade enforcement actions.
|
|
60
|
+
2. **Failing to credit sources.** Not properly crediting the sources of content
|
|
61
|
+
you contribute.
|
|
62
|
+
3. **Promotional materials**. Sharing marketing or other commercial content in
|
|
63
|
+
a way that is outside the norms of the community.
|
|
64
|
+
4. **Irresponsible communication.** Failing to responsibly present content
|
|
65
|
+
which includes, links or describes any other restricted behaviors.
|
|
66
|
+
|
|
67
|
+
## Reporting an Issue
|
|
68
|
+
|
|
69
|
+
Tensions can occur between community members even when they are trying their
|
|
70
|
+
best to collaborate. Not every conflict represents a code of conduct violation,
|
|
71
|
+
and this Code of Conduct reinforces encouraged behaviors and norms that can
|
|
72
|
+
help avoid conflicts and minimize harm.
|
|
73
|
+
|
|
74
|
+
When an incident does occur, it is important to report it promptly. To report a
|
|
75
|
+
possible violation, email
|
|
76
|
+
[policyai@pnnl.gov](mailto:policyai@pnnl.gov?subject=NEPA%20MCP%20Code%20of%20Conduct%20Report)
|
|
77
|
+
with the subject `NEPA MCP Code of Conduct Report`. Do not submit Code of
|
|
78
|
+
Conduct reports through public issues.
|
|
79
|
+
|
|
80
|
+
For this project, Community Moderators are Sarthak Chaturvedi, as primary
|
|
81
|
+
project maintainer, and designated recipients of the PermitAI mailbox. A report
|
|
82
|
+
concerning the primary maintainer will be handled by designated PermitAI
|
|
83
|
+
mailbox recipients without involving the subject of the report.
|
|
84
|
+
|
|
85
|
+
Community Moderators take reports of violations seriously and will make every
|
|
86
|
+
effort to respond in a timely manner. They will investigate all reports of code
|
|
87
|
+
of conduct violations, reviewing messages, logs, and recordings, or
|
|
88
|
+
interviewing witnesses and other participants. Community Moderators will keep
|
|
89
|
+
investigation and enforcement actions as transparent as possible while
|
|
90
|
+
prioritizing safety and confidentiality. In order to honor these values,
|
|
91
|
+
enforcement actions are carried out in private with the involved parties, but
|
|
92
|
+
communicating to the whole community may be part of a mutually agreed upon
|
|
93
|
+
resolution.
|
|
94
|
+
|
|
95
|
+
## Addressing and Repairing Harm
|
|
96
|
+
|
|
97
|
+
If an investigation by the Community Moderators finds that this Code of Conduct
|
|
98
|
+
has been violated, the following enforcement ladder may be used to determine
|
|
99
|
+
how best to repair harm, based on the incident's impact on the individuals
|
|
100
|
+
involved and the community as a whole. Depending on the severity of a
|
|
101
|
+
violation, lower rungs on the ladder may be skipped.
|
|
102
|
+
|
|
103
|
+
1. Warning
|
|
104
|
+
1. Event: A violation involving a single incident or series of incidents.
|
|
105
|
+
2. Consequence: A private, written warning from the Community Moderators.
|
|
106
|
+
3. Repair: Examples of repair include a private written apology,
|
|
107
|
+
acknowledgement of responsibility, and seeking clarification on
|
|
108
|
+
expectations.
|
|
109
|
+
2. Temporarily Limited Activities
|
|
110
|
+
1. Event: A repeated incidence of a violation that previously resulted in a
|
|
111
|
+
warning, or the first incidence of a more serious violation.
|
|
112
|
+
2. Consequence: A private, written warning with a time-limited cooldown
|
|
113
|
+
period designed to underscore the seriousness of the situation and give
|
|
114
|
+
the community members involved time to process the incident. The cooldown
|
|
115
|
+
period may be limited to particular communication channels or
|
|
116
|
+
interactions with particular community members.
|
|
117
|
+
3. Repair: Examples of repair may include making an apology, using the
|
|
118
|
+
cooldown period to reflect on actions and impact, and being thoughtful
|
|
119
|
+
about re-entering community spaces after the period is over.
|
|
120
|
+
3. Temporary Suspension
|
|
121
|
+
1. Event: A pattern of repeated violation which the Community Moderators
|
|
122
|
+
have tried to address with warnings, or a single serious violation.
|
|
123
|
+
2. Consequence: A private written warning with conditions for return from
|
|
124
|
+
suspension. In general, temporary suspensions give the person being
|
|
125
|
+
suspended time to reflect upon their behavior and possible corrective
|
|
126
|
+
actions.
|
|
127
|
+
3. Repair: Examples of repair include respecting the spirit of the
|
|
128
|
+
suspension, meeting the specified conditions for return, and being
|
|
129
|
+
thoughtful about how to reintegrate with the community when the
|
|
130
|
+
suspension is lifted.
|
|
131
|
+
4. Permanent Ban
|
|
132
|
+
1. Event: A pattern of repeated code of conduct violations that other steps
|
|
133
|
+
on the ladder have failed to resolve, or a violation so serious that the
|
|
134
|
+
Community Moderators determine there is no way to keep the community safe
|
|
135
|
+
with this person as a member.
|
|
136
|
+
2. Consequence: Access to all community spaces, tools, and communication
|
|
137
|
+
channels is removed. In general, permanent bans should be rarely used,
|
|
138
|
+
should have strong reasoning behind them, and should only be resorted to
|
|
139
|
+
if working through other remedies has failed to change the behavior.
|
|
140
|
+
3. Repair: There is no possible repair in cases of this severity.
|
|
141
|
+
|
|
142
|
+
This enforcement ladder is intended as a guideline. It does not limit the
|
|
143
|
+
ability of Community Moderators to use their discretion and judgment, in
|
|
144
|
+
keeping with the best interests of our community.
|
|
145
|
+
|
|
146
|
+
## Scope
|
|
147
|
+
|
|
148
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
|
149
|
+
an individual is officially representing the community in public or other
|
|
150
|
+
spaces. Examples of representing our community include using an official email
|
|
151
|
+
address, posting via an official social media account, or acting as an
|
|
152
|
+
appointed representative at an online or offline event.
|
|
153
|
+
|
|
154
|
+
## Attribution
|
|
155
|
+
|
|
156
|
+
This Code of Conduct is adapted from the Contributor Covenant, version 3.0,
|
|
157
|
+
permanently available at
|
|
158
|
+
[https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
|
|
159
|
+
|
|
160
|
+
Contributor Covenant is stewarded by the Organization for Ethical Source and
|
|
161
|
+
licensed under CC BY-SA 4.0. To view a copy of this license, visit
|
|
162
|
+
[https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/).
|
|
163
|
+
|
|
164
|
+
For answers to common questions about Contributor Covenant, see the FAQ at
|
|
165
|
+
[https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq).
|
|
166
|
+
Translations are provided at
|
|
167
|
+
[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations).
|
|
168
|
+
Additional enforcement and community guideline resources can be found at
|
|
169
|
+
[https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources).
|
|
170
|
+
The enforcement ladder was inspired by the work of
|
|
171
|
+
[Mozilla’s code of conduct team](https://github.com/mozilla/inclusion).
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Contributing to NEPA MCP
|
|
2
|
+
|
|
3
|
+
Thank you for contributing to NEPA MCP. This project provides research and
|
|
4
|
+
screening tools for environmental and regulatory workflows. Contributions
|
|
5
|
+
should preserve the distinction between screening information and formal
|
|
6
|
+
agency, legal, consultation, jurisdictional, or permitting determinations.
|
|
7
|
+
|
|
8
|
+
Please review the [Code of Conduct](CODE_OF_CONDUCT.md),
|
|
9
|
+
[Security policy](SECURITY.md), [Support policy](SUPPORT.md), and
|
|
10
|
+
[project roles](MAINTAINERS.md) before participating.
|
|
11
|
+
|
|
12
|
+
## Development setup
|
|
13
|
+
|
|
14
|
+
NEPA MCP requires Python 3.12 or newer. The development environment uses
|
|
15
|
+
[`uv`](https://docs.astral.sh/uv/):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
git clone https://github.com/pnnl/nepa-mcp.git
|
|
19
|
+
cd nepa-mcp
|
|
20
|
+
uv sync --all-groups
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Do not commit credentials or private project data. Optional Census and EPA AQS
|
|
24
|
+
credentials should be supplied through environment variables or the private
|
|
25
|
+
per-user configuration described in the README. Repository `.env` files,
|
|
26
|
+
generated credential files, and client-config backups are ignored by Git.
|
|
27
|
+
|
|
28
|
+
## Repository structure
|
|
29
|
+
|
|
30
|
+
Each domain server has its own top-level directory:
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
server_name/
|
|
34
|
+
├── requirements.txt
|
|
35
|
+
├── server.py
|
|
36
|
+
└── src/
|
|
37
|
+
├── apis/
|
|
38
|
+
└── core/
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The installable command, server registry, loader, client configuration, and
|
|
42
|
+
aggregate test proxy live in `nepa_mcp/`. Shared HTTP, ArcGIS, spatial, and
|
|
43
|
+
validation utilities live in `nepa_mcp_common/`.
|
|
44
|
+
|
|
45
|
+
When adding or renaming a server or tool, update every affected distribution
|
|
46
|
+
surface: the registry, package configuration, client examples, plugin
|
|
47
|
+
configuration, documentation, and tests.
|
|
48
|
+
|
|
49
|
+
## Generated files
|
|
50
|
+
|
|
51
|
+
`docs/mcp-tool-catalog.md` is generated from the live MCP contracts. Do not
|
|
52
|
+
edit it manually. Regenerate and verify it with:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
uv run python scripts/generate_tool_catalog.py
|
|
56
|
+
uv run python scripts/generate_tool_catalog.py --check
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`uv.lock` is generated by `uv`. Commit lockfile changes when project or
|
|
60
|
+
development dependencies change, and avoid unrelated dependency refreshes.
|
|
61
|
+
|
|
62
|
+
## Tests and quality checks
|
|
63
|
+
|
|
64
|
+
Run the following checks before opening a pull request:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
uv run ruff format --check .
|
|
68
|
+
uv run ruff check .
|
|
69
|
+
uv run python -m compileall -q .
|
|
70
|
+
uv run pytest -q
|
|
71
|
+
uv run pip-audit --progress-spinner off
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Add focused tests for behavioral changes. Tests should cover relevant MCP tool
|
|
75
|
+
contracts, validation and failure behavior, and partial or empty upstream
|
|
76
|
+
responses. Keep the default test suite reproducible without optional API
|
|
77
|
+
credentials.
|
|
78
|
+
|
|
79
|
+
Changes to external data integrations should preserve source URLs, retrieval
|
|
80
|
+
status, truncation or partial-result warnings, and other provenance needed to
|
|
81
|
+
review the result. Do not convert unavailable or incomplete source retrieval
|
|
82
|
+
into an apparently authoritative no-feature result.
|
|
83
|
+
|
|
84
|
+
## Pull requests
|
|
85
|
+
|
|
86
|
+
Keep pull requests scoped and explain:
|
|
87
|
+
|
|
88
|
+
- the user or analyst problem being addressed;
|
|
89
|
+
- the affected servers, tools, and external sources;
|
|
90
|
+
- important behavioral or schema changes;
|
|
91
|
+
- tests and manual validation performed; and
|
|
92
|
+
- known limitations or follow-up work.
|
|
93
|
+
|
|
94
|
+
Update user-facing documentation when installation, configuration, tool
|
|
95
|
+
contracts, data behavior, or package metadata changes. Avoid combining
|
|
96
|
+
unrelated formatting, generated-file, and behavioral changes when they can be
|
|
97
|
+
reviewed independently.
|
|
98
|
+
|
|
99
|
+
Maintainers may request changes before merging. Submitting a contribution does
|
|
100
|
+
not imply that it will be accepted or included in a release.
|
|
101
|
+
|
|
102
|
+
## Developer Certificate of Origin
|
|
103
|
+
|
|
104
|
+
Every commit must include a `Signed-off-by` line certifying compliance with the
|
|
105
|
+
[Developer Certificate of Origin 1.1](https://developercertificate.org/).
|
|
106
|
+
Sign off a commit with:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
git commit -s -m "Describe the change"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The resulting commit message includes:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
Signed-off-by: Your Name <your.email@example.com>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The sign-off certifies that you have the right to submit the contribution under
|
|
119
|
+
the project's open-source license. It is not a copyright assignment or a
|
|
120
|
+
Contributor License Agreement. The name and email in the sign-off become part
|
|
121
|
+
of the public Git history.
|
|
122
|
+
|
|
123
|
+
If a commit is missing the sign-off, amend it before review:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
git commit --amend --signoff --no-edit
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Reporting concerns
|
|
130
|
+
|
|
131
|
+
Use public issues only for non-sensitive bugs and usage questions. Do not place
|
|
132
|
+
credentials, controlled information, private project data, suspected
|
|
133
|
+
vulnerability details, or Code of Conduct reports in a public issue.
|
|
134
|
+
|
|
135
|
+
Code of Conduct reports should follow the private contact instructions in
|
|
136
|
+
`CODE_OF_CONDUCT.md`. Suspected vulnerabilities should follow the private
|
|
137
|
+
reporting instructions in `SECURITY.md`.
|
nepa_mcp-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright Battelle Memorial Institute 2026
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its contributors
|
|
16
|
+
may be used to endorse or promote products derived from this software without
|
|
17
|
+
specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
20
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
21
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Project Roles
|
|
2
|
+
|
|
3
|
+
This file records current repository-governance roles. It does not determine
|
|
4
|
+
legal inventorship, employment authority, or ownership.
|
|
5
|
+
|
|
6
|
+
## Maintainer
|
|
7
|
+
|
|
8
|
+
### Sarthak Chaturvedi
|
|
9
|
+
|
|
10
|
+
Primary maintainer, responsible for technical direction, reviewing and merging
|
|
11
|
+
changes, and coordinating package releases.
|
|
12
|
+
|
|
13
|
+
## Contributor
|
|
14
|
+
|
|
15
|
+
### Renuka Chintalapati
|
|
16
|
+
|
|
17
|
+
Project contributor. Contributor status recognizes development contributions
|
|
18
|
+
but does not by itself grant authority to merge changes or publish releases.
|
|
19
|
+
|
|
20
|
+
## Updating roles
|
|
21
|
+
|
|
22
|
+
Changes to maintainer or release authority should be recorded through a
|
|
23
|
+
reviewed repository change. Security reports are received through the route in
|
|
24
|
+
`SECURITY.md`; the primary maintainer coordinates technical triage with
|
|
25
|
+
designated recipients of the PermitAI project mailbox.
|
nepa_mcp-0.1.0/NOTICE
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
DISCLAIMER
|
|
2
|
+
This material was prepared as an account of work sponsored by an agency of the
|
|
3
|
+
United States Government. Neither the United States Government nor the United
|
|
4
|
+
States Department of Energy, nor Battelle, nor any of their employees, nor any
|
|
5
|
+
jurisdiction or organization that has cooperated in the development of these
|
|
6
|
+
materials, makes any warranty, express or implied, or assumes any legal
|
|
7
|
+
liability or responsibility for the accuracy, completeness, or usefulness or
|
|
8
|
+
any information, apparatus, product, software, or process disclosed, or
|
|
9
|
+
represents that its use would not infringe privately owned rights.
|
|
10
|
+
|
|
11
|
+
Reference herein to any specific commercial product, process, or service by
|
|
12
|
+
trade name, trademark, manufacturer, or otherwise does not necessarily
|
|
13
|
+
constitute or imply its endorsement, recommendation, or favoring by the United
|
|
14
|
+
States Government or any agency thereof, or Battelle Memorial Institute. The
|
|
15
|
+
views and opinions of authors expressed herein do not necessarily state or
|
|
16
|
+
reflect those of the United States Government or any agency thereof.
|
|
17
|
+
|
|
18
|
+
PACIFIC NORTHWEST NATIONAL LABORATORY
|
|
19
|
+
operated by
|
|
20
|
+
BATTELLE
|
|
21
|
+
for the
|
|
22
|
+
UNITED STATES DEPARTMENT OF ENERGY
|
|
23
|
+
under Contract DE-AC05-76RL01830
|