{"id":19292139,"url":"https://github.com/nasa-pds/peppi","last_synced_at":"2026-06-15T21:00:33.551Z","repository":{"id":209505318,"uuid":"724244224","full_name":"NASA-PDS/peppi","owner":"NASA-PDS","description":"Planetary Data Explorer: Python (PEPPi) client library (pds.peppi) to access Planetary Data from the NASA Planetary Data System","archived":false,"fork":false,"pushed_at":"2026-06-01T17:46:42.000Z","size":6622,"stargazers_count":4,"open_issues_count":37,"forks_count":2,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-06-01T19:29:33.822Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://nasa-pds.github.io/peppi","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NASA-PDS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":"NOTICE.txt","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-27T17:29:05.000Z","updated_at":"2026-05-19T16:26:54.000Z","dependencies_parsed_at":"2023-11-29T05:25:12.722Z","dependency_job_id":"bd8d8bd4-90b2-4c59-b170-4c6d5cf7d5a8","html_url":"https://github.com/NASA-PDS/peppi","commit_stats":null,"previous_names":["nasa-pds-engineering-node/updart","nasa-pds/updart","nasa-pds/peppi"],"tags_count":21,"template":false,"template_full_name":"nasa-pds-engineering-node/pds-template-repo-python","purl":"pkg:github/NASA-PDS/peppi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fpeppi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fpeppi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fpeppi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fpeppi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NASA-PDS","download_url":"https://codeload.github.com/NASA-PDS/peppi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fpeppi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34379915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T22:29:26.428Z","updated_at":"2026-06-15T21:00:33.535Z","avatar_url":"https://github.com/NASA-PDS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Peppi\n\nAccess planetary datasets from the Planetary Data System (PDS)\n\n\n## Prerequisites\n\n- Python 3.12 or newer\n\n\n## User Quickstart\n\nSee https://nasa-pds.github.io/peppi/\n\n\n### Use as an MCP server with an LLM\n\n#### Claude Desktop\n\n[Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro) (MCP) servers enable natural language–based tools (such as [Claude Desktop](https://claude.ai/)) to interact with the PDS Registry through Peppi.\n\nTwo commands enable the connection of AI apps with Peppi using the Model Context Protocol (MCP) using the MCP `stdio` transport:\n\n- `pds-peppi-qb-mcp` — a comprehensive MCP server that supports a wide range of query types for accessing PDS data using the Peppi \"Query Builder\" (QB)\n- `pds-peppi-mcp-server` — a proof-of-concept MCP server that provides access to a limited subset of Peppi features (such as searches for instrument hosts and targets). It reuses the docstrings from Peppi methods, which reduces the integration overhead for each method.\n\nSelect one command and connect it to your LLM (such as Claude Desktop), for example, as described in [these instructions](https://modelcontextprotocol.io/quickstart/user#installing-the-filesystem-server); for example to connect `pds-peppi-qb-mcp` to Claude Desktop, use a configuration similar to the following:\n```json\n    {\n      \"mcpServers\": {\n        \"pds_peppi\": {\n          \"command\": \"{whereever the package is installed}/bin/pds-peppi-qb-mcp\",\n          \"args\": []\n         }\n      }\n    }\n```\nOnce you've started Claude Desktop, you can enter requests like\n\n- \"Find Mars data\"\n- \"Find calibrated Mars data\"\n- \"Find Mercury data from the year 2020 only\"\n- Etc.\n\n👉 **Note:** On macOS, \"sandboxing\" may interfere with Claude's ability to run either MCP server described above. If Claude's MCP log shows \"Operation not permitted\", try moving the `peppi` folder or the Python virtual environment to the `$HOME` directory or other location _not_ in `Documents`, `Downloads`, or `Desktop`.\n\n\n#### Claude code\n\nTo use the peppi MCP service with Claude code, you first need to start the MCP server as an HTTP API:\n\n    pds-peppi-qb-mcp --transport http\n\nThen connect it to you claude code configuration, for example for a server started on localhost port 8000, runn the following command:\n\n    claude mcp add --transport http peppi http://127.0.0.1:8000/mcp\n\nThen start your claude session:\n\n    claude\n\nWhenever the PEPPI MCP tool is used, you will get prompted, something like:\n\n    ❯ What PDS dataset target the planet Mars ?\n\n     ⏺ I'll search the Planetary Data System (PDS) for datasets related to Mars.\n\n     ⏺ peppi - querypdsdata (MCP)(query: \"has_target(\\\"Mars\\\").as_dataframe(50)\")\n\n    ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n     Tool use\n\n       peppi - querypdsdata(query: \"has_target(\\\"Mars\\\").as_dataframe(50)\") (MCP)\n       Query PDS data using natural language.\n\n       This tool allows you to query the Planetary Data System (PDS) using natural language.…\n\n     Do you want to proceed?\n     ❯ 1. Yes\n       2. Yes, and don't ask again for peppi - querypdsdata commands in /Users/loubrieu/PycharmProjects/updart\n       3. No\n`\nYou can say yes to proceed and get the results.\n\n## Code of Conduct\n\nAll users and developers of the NASA-PDS software are expected to abide by our [Code of Conduct](https://github.com/NASA-PDS/.github/blob/main/CODE_OF_CONDUCT.md). Please read this to ensure you understand the expectations of our community.\n\n\n## Development\n\nTo develop this project, use your favorite text editor, or an integrated development environment with Python support, such as [PyCharm](https://www.jetbrains.com/pycharm/).\n\n\n### Contributing\n\nFor information on how to contribute to NASA-PDS codebases please take a look at our [Contributing guidelines](https://github.com/NASA-PDS/.github/blob/main/CONTRIBUTING.md).\n\n\n### Installation\n\nInstall in editable mode and with extra developer dependencies into your virtual environment of choice:\n\n    pip install git+https://github.com/NASA-AMMOS/slim-detect-secrets.git@exp\n    pip install --editable '.[dev]'\n\nThen, configure the `pre-commit` hooks:\n\n    pre-commit install\n    pre-commit install -t pre-push\n    pre-commit install -t prepare-commit-msg\n    pre-commit install -t commit-msg\n\nThese hooks then will check for any future commits that might contain secrets. They also check code formatting, PEP8 compliance, type hints, etc.\n\n👉 **Note:** A one time setup is required both to support `detect-secerts` and in your global Git configuration. See [the wiki entry on Secrets](https://github.com/NASA-PDS/nasa-pds.github.io/wiki/Git-and-Github-Guide#detect-secrets) to learn how.\n\n\n### Tests\n\nThis section describes testing for your package.\n\nA complete \"build\" including test execution, linting (`mypy`, `black`, `flake8`, etc.), and documentation build is executed via:\n\n    tox\n\n\n## Build\n\n    pip install build\n    python3 -m build .\n\n\n## Publication\n\nNASA PDS packages can publish automatically using the [Roundup Action](https://github.com/NASA-PDS/roundup-action), which leverages GitHub Actions to perform automated continuous integration and continuous delivery. A default workflow that includes the Roundup is provided in the `.github/workflows/unstable-cicd.yaml` file. (Unstable here means an interim release.)\n\n\n### Manual Publication\n\nCreate the package:\n\n    python3 -m build .\n\nPublish it as a Github release.\n\nPublish on PyPI (you need a PyPI account and configure `$HOME/.pypirc`):\n\n    pip install twine\n    twine upload dist/*\n\nOr publish on the Test PyPI (you need a Test PyPI account and configure `$HOME/.pypirc`):\n\n    pip install twine\n    twine upload --repository testpypi dist/*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-pds%2Fpeppi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnasa-pds%2Fpeppi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-pds%2Fpeppi/lists"}