-
Notifications
You must be signed in to change notification settings - Fork 1
Feedback Paper Submission #37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
ndaelman-hu
wants to merge
49
commits into
main
Choose a base branch
from
paper-submission
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 41 commits
Commits
Show all changes
49 commits
Select commit
Hold shift + click to select a range
44559ad
- Back up first version draft, courtesy of @QuantumChemist
ndaelman-hu 01c6106
- Big extension of intro and results
ndaelman-hu d15669d
- Add missed section from original @QuantumChemist contribution
ndaelman-hu fb7fe72
- Add acknowledgement section for FAIRmat
ndaelman-hu d6dace8
- Update author details Remya
ndaelman-hu 35c2044
- Update future work section
ndaelman-hu 0169c60
- Rotate figure to horizontal layout
ndaelman-hu 51f41a0
- Extend contributions list
ndaelman-hu 8ea10b3
- Typeset bulletpoints
ndaelman-hu 2565c56
Fix typos in the introduction section and minor changes
QuantumChemist ba44d50
very minor change
QuantumChemist b0fa645
Revise author contributions for clarity for @QuantumChemist
QuantumChemist 4cb0730
- Elaborate on community building
ndaelman-hu 2520092
Edit paper for notes
Sideboard 415885e
- Introduce the architectural solution to each problem statement
ndaelman-hu f619fa8
Update citations for MCP Registry and PyPi
QuantumChemist 3e9fd6f
Add new references to ref.bib for PyPi and MCP Registry
QuantumChemist 3fb1da4
Fix formatting in ref.bib for PyPI entry
QuantumChemist 77dbe10
Add hyperlinks to MCP Registry and PyPi references
QuantumChemist bfcf0c9
- Merge remote-tracking branch 'origin/paper-notes-sascha' into paper…
ndaelman-hu 843379e
Update contributions S.K.
ndaelman-hu 905d38c
Update mcp citation
ndaelman-hu 7e81ff9
- Swap out MCP citation
ndaelman-hu 0580f4c
Update acknowledgements
ndaelman-hu b60e7b3
Remove hyphen from Parse Patrol
ndaelman-hu 64a9a6b
- Extend the introduction, giving more explanation about what MCP is
ndaelman-hu 62715c9
Correct format specification
ndaelman-hu c04afe8
- Expand figure caption
ndaelman-hu c1097d1
Polish figure caption
ndaelman-hu 202d5b7
Add ORCID R.M. and S.K. (courtesy R.M.)
ndaelman-hu c235416
- Reduce text length:
ndaelman-hu b027a8f
- Apply feedback Calude Sonnet 4.5
ndaelman-hu 0c2aed2
- Compact phrasing with Claude Sonnet 4.5
ndaelman-hu e95c86b
- Increase figure size
ndaelman-hu 897064e
- Remove explicit mention of support for NOMAD:
ndaelman-hu 35a7d66
- Add `best_of_atomistic_ml_general` reference
ndaelman-hu 3034980
Change branch type setting to boldface in caption
ndaelman-hu f7c3da6
Correct latex command typo
ndaelman-hu abd8190
Revise draft.tex for improved content and structure
annremya 7d8d3fa
Minor text edits in draft.tex
annremya 090dc3c
Update Contributions
ndaelman-hu d03ba67
- Apply feedback reviewer R.M.:
ndaelman-hu b30138f
- Simplify and reduce text with Claude sonnet 4.5
ndaelman-hu 1170205
Clean up terminology use with Claude Sonnet 4.5
ndaelman-hu 563c12a
Review with the help of Claude Sonnet 4.5:
ndaelman-hu ffa6a46
Apply forgotten shortening. The compiled Latex text now fits on 2 pages
ndaelman-hu 24d18a4
Remove references to "our innovation", but use italics instead
ndaelman-hu d8d5cc0
- Polish text
ndaelman-hu e05c149
Add PDF submissions in FAIRmat
ndaelman-hu File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| \begin{teamsubmission}{Parse Patrol}{Parse Patrol: Dual-Mode Scientific Parsing Infrastructure via MCP Servers} | ||
| \authorsblock{ | ||
| Nathan Daelman\textsuperscript{1}\orcidlink{0000-0002-7647-1816}, | ||
| Christina Ertural\textsuperscript{2}\orcidlink{0000-0002-7696-5824}, | ||
| Rubel Mozumber\textsuperscript{1}\orcidlink{0009-0007-5926-6646}, | ||
| Sascha Klawohn\textsuperscript{1}\orcidlink{0000-0003-4850-776X}, | ||
| Remya Ann Mathews Kalapurakal\textsuperscript{3} | ||
| } | ||
| \affiliationsblock{ | ||
| \textsuperscript{1}Humboldt University of Berlin, 10117 Berlin, Germany\\ | ||
| \textsuperscript{2}Department of Materials Chemistry, Federal Institute for Materials Research and Testing, 12205 Berlin, Germany\\ | ||
| \textsuperscript{3}University of New Hampshire, 03824 Durham, NH, USA | ||
| } | ||
|
|
||
| \section*{Introduction} | ||
|
|
||
| Parsing scientific output files to extract structured data is by its very nature dependent on the input and output specifications. | ||
| These specifications may exist at a format level, a schema level, or more abstractly, an ontological one. | ||
| Being dependent on both sides, makes parser infrastructure very brittle and labor-intensive to maintain. | ||
| This is a frequent issue in materials and chemistry databases and consortia. | ||
| Centralizing standards risks breaking existing parsers, while the uncoordinated community approach leaves projects vulnerable to funding cuts.\cite{best_of_atomistic_ml_general} | ||
|
|
||
| Meanwhile, the rise of large language models (LLMs) has opened up new avenues for automating parser development. The complexity in centralizing parser infrastructure has created a natural opportunity for LLM-assisted tooling, since modern models can reason over heterogeneous file formats and dynamically adapt to evolving specifications. | ||
| Modern host environments, like IDEs, supply their LLM agents with testing, research, and other development tools. | ||
| However, effective use of LLMs requires a reliable interface for connecting models to external tools. MCP provides exactly this mechanism by standardizing how agents discover, invoke, and coordinate such tools. | ||
| Anthropic published the Model Context Protocol (MCP)\cite{mcp2024} late last year, defining a general-purpose, host-agnostic interface for such toolkits. | ||
|
ndaelman-hu marked this conversation as resolved.
Outdated
|
||
| It has since rapidly become the industry standard and is now supported by all major commercial models. | ||
| MCP defines a schema in JSON-RPC 2.0 format for communication between agents and a server that exposes several \textit{components}: software \textit{tools}, static and dynamic \textit{resources}, and specially designed system \textit{prompts}. In simple terms, MCP tells an AI agent how to request and use pre-defined tools, resources, and system instructions from a server. | ||
|
|
||
| In this work, we present Parse Patrol, an extensible parsing toolkit for AI and human developers alike. | ||
| Parse Patrol takes advantage of MCP to integrate various community parsers into a single access point. | ||
| It facilitates both (i) a discovery mode, where an agent tests various parsers for converting inputs/instructions to a user-defined schema, | ||
| as well as (ii) a direct import mode, where the parsers can be called as modules from code. | ||
|
|
||
| \section*{Results} | ||
|
|
||
| Automated parser generation faces several pitfalls: | ||
| scarce online resources for scientific specifications, model hallucinations outside training data, lengthy test iterations, and unstable software architectures. | ||
|
ndaelman-hu marked this conversation as resolved.
Outdated
|
||
| Parse Patrol addresses these issues by providing MCP-based access to specialized community parsers and their documentation, enabling wide specification coverage with multiple design options. Because MCP provides a uniform, model-agnostic interface for invoking software tools, individual parsers can be exposed as MCP tools, allowing LLM agents to orchestrate them seamlessly during parser selection, testing, and schema conversion. | ||
|
|
||
| Note that MCP does not provide any directives on how to structure tool organization: by default, one just extends the list of tools. | ||
| Our first technical innovation is thus to define a \textit{hierarchical protocol} for extending the MCP server. | ||
| Each parser is treated as its own MCP server. | ||
| This facilitates testing, as the developer can instantiate just that single server. | ||
| All MCP components are then automatically registered to the central, user-facing server. | ||
| This server predominantly adds its own engineered prompts for deploying tests or production. | ||
| Specifications are provided directly in the chat or as a separate file. | ||
| Test cases can be downloaded via database MCP servers. | ||
|
|
||
| While MCP enables interactive testing or one-off usage, production and en masse processing require actual code. | ||
| Without explicit prompting, agents generate parsers from scratch rather than using MCP servers, relying on training data or attempting to locate MCP installation paths. | ||
|
ndaelman-hu marked this conversation as resolved.
Outdated
|
||
| Therefore, we provide the MCP tools, normally reserved for the discovery phase, as code modules too. | ||
| As modules, we also guarantee their installation setup, further offloading a burden of the agent. | ||
|
|
||
| Even so, the agent will not automatically pick up on these modules. | ||
| We attribute this behavior to the underlying models not having been trained on a MCP/module hybrid. | ||
| Our solution is two-pronged: we provide instructions in the relevant prompts to use the modules. | ||
| Each parser server exposes its module path and how to call it as a resource. | ||
| These are then compiled into a list of resources at the central server. | ||
|
|
||
| Providing such a common solution that is both a MCP server and a module is challenging. | ||
| Each framework has different requirements and is distributed via different channels: \href{https://github.com/modelcontextprotocol/servers}{MCP Registry}\cite{mcp2024registry} and \href{https://pypi.org/}{PyPi}\cite{pypi}, respectively, for example. | ||
| Our second innovation, then, is the design of a \textit{dual mode} (cf. Fig.\ref{fig:parse-patrol}) that facilitates the free combination of either feature. | ||
| To the best of the authors' knowledge, no other such framework exists that bridges the divide between AI experimentation and production integration. | ||
|
|
||
| \begin{figure}[h] | ||
| \centering | ||
| \includegraphics[width=0.8\linewidth]{figures/parse-patrol.png} | ||
| \captionsetup{width=\linewidth} | ||
| \caption{ | ||
| Schematic depiction of the \textit{dual-mode} design in Parse Patrol. | ||
| \textbf{Lower branch:} Discovery mode provides a single MCP interface to several parser and database servers. | ||
| The central server further exposes pre-engineered prompts for the suggested use case. | ||
| Most hosts provide shortcuts to these prompts. | ||
| \textbf{Upper branch:} Direct Import mode exposes the same MCP components as Python modules for friction-less switching from testing to production. | ||
| Both branches are unified under a unified architecture. | ||
| } | ||
| \label{fig:parse-patrol} | ||
| \end{figure} | ||
|
|
||
| \section*{Future Work} | ||
|
|
||
| At the time of writing, the repository is seeing active development. | ||
| Given the well-defined objective of providing a computational parsers toolkit, future extensions are not excluded. | ||
| This project is under consideration for incorporation into NOMAD parser suite\cite{nomad_lab,draxl2019nomad}. | ||
|
|
||
| \section*{Open Source Materials} | ||
|
|
||
| The open source code is available on GitHub: \github{https://github.com/ndaelman-hu/parse-patrol}. | ||
| A demo video is available on YouTube: \youtube{https://www.youtube.com/watch?v=fSAyi5ubkR0}. | ||
|
|
||
| \section*{Author Contributions} | ||
|
|
||
| \textbf{N.D.}: Conceptualization, Software, Original Code Draft, Visualization - Writing of Documentation and Manuscript, Editing | ||
| \textbf{C.E.}: Conceptualization Revision, Software, Visualization, Video Editing, Writing - Original Manuscript Text Draft, Figure, Editing | ||
| \textbf{R.M.}: Implementation asynchronous servers, Extension Testing Infrastructure - Conceptualization Revision, Proof-read Manuscript | ||
| \textbf{S.K.}: Extend Parser Servers - Proof-read Manuscript | ||
| \textbf{R.A.M.K.}: Testing of Setup, Trial new Parsers - Proof-read Manuscript | ||
|
|
||
| \section*{Acknowledgements} | ||
| This work was supported by the NFDI consortium FAIRmat - Deutsche Forschungsgemeinschaft (DFG) - Project 460197019. | ||
|
|
||
| \end{teamsubmission} | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| # Contributors Overview | ||
|
|
||
| 1. ndaelman (Project Lead) | ||
|
|
||
| - Commits: 17 total | ||
| - Lines: +4,831 / -1,938 (net: +2,893) | ||
|
|
||
| Key Contributions: | ||
| - Initial project setup and structure (2025-09-07) | ||
| - Installation instructions (#33, 2025-11-07) | ||
| - NOMAD database integration (2025-09-10 to 2025-09-11) | ||
| - MCP server setup with Pydantic annotations | ||
| - Resources and prompts (#30, #25, #18) | ||
| - Project documentation and README | ||
| - Cleanup prompts (#25) | ||
| - Code organization and .data directory management | ||
|
|
||
| 2. QuantumChemist | ||
|
|
||
| - Commits: 4 total | ||
| - Lines: +2,688 / -14 (net: +2,674) | ||
|
|
||
| Key Contributions: | ||
| - Gaussian parser implementation (#17, 2025-09-11) | ||
| - Pipelines infrastructure (#22, 2025-09-12) | ||
| - Demo video addition (#31, 2025-09-19) | ||
| - UV lock exclusion | ||
|
|
||
| 3. sascha.klawohn | ||
|
|
||
| - Commits: 2 | ||
| - Lines: +470 / -334 (net: +136) | ||
|
|
||
| Key Contributions: | ||
| - cclib fixes (#28, 2025-09-12) | ||
| - IOData parser implementation (#21, 2025-09-12) | ||
|
|
||
| 4. RubelMozumder | ||
|
|
||
| - Commits: 1 | ||
| - Lines: +647 / -224 (net: +423) | ||
|
|
||
| Key Contributions: | ||
| - Async code for tools (#20, 2025-09-12) | ||
|
|
||
| Summary Statistics | ||
|
|
||
| - Total unique contributors: 4 | ||
| - Total commits on main: 24 | ||
| - Project timeline: Sept 7, 2025 - Nov 7, 2025 | ||
| - Total merged PRs: 12 (#16-#33) | ||
|
|
||
| Contribution Breakdown by PR Count | ||
|
|
||
| 1. ndaelman: 5 PRs (#33, #30, #25, #18, #16) | ||
| 2. QuantumChemist: 3 PRs (#31, #22, #17) | ||
| 3. sascha.klawohn: 2 PRs (#28, #21) | ||
| 4. RubelMozumder: 1 PR (#20) | ||
|
|
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.