-
Notifications
You must be signed in to change notification settings - Fork 75
sync mcp.science servers #231
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
Conversation
WalkthroughAdds five new MCP server registry manifests (gpaw-computation, nemad, netket, timer, tinydb) with metadata, install instructions, tools/arguments where applicable, and examples; and updates pyproject.toml to add runtime dependency jsonschema>=4.24.0. Changes
Sequence Diagram(s)sequenceDiagram
participant Dev as Developer
participant Registry as MCP Registry
participant PM as Package Manager (uvx)
participant Server as MCP Server
Dev->>Registry: Read server manifest (metadata, args, install)
Dev->>PM: Run install command (uvx ["mcp-science","<server>"])
PM-->>Server: Fetch & install package
Dev->>Server: Invoke tool / API (with args, env)
Server-->>Dev: Return results or stream updates
sequenceDiagram
participant Client
participant Timer as Timer Server
Client->>Timer: wait(time_to_wait, notif_interval)
loop every notif_interval
Timer-->>Client: progress update (stream)
end
Timer-->>Client: completion notification
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~15–20 minutes Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. 📜 Recent review detailsConfiguration used: CodeRabbit UI ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (6)
🚧 Files skipped from review as they are similar to previous changes (6)
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (7)
pyproject.toml (1)
66-74
: Align or deduplicate jsonschema across runtime/dev to avoid split version constraintsYou now have jsonschema>=4.24.0 in runtime deps and jsonschema>=4.23.0 in the dev group. This split can cause confusion in resolution. Prefer aligning versions or removing the duplicate from dev if not strictly needed.
Apply one of these diffs:
Option A: Align dev to the same minimum.
- "jsonschema>=4.23.0", + "jsonschema>=4.24.0",Option B: Remove duplicate from dev (dev will still install runtime deps).
- "jsonschema>=4.23.0",
mcp-registry/servers/timer.json (2)
26-36
: Tighten input validation for integer durationsAdd minimum constraints so negative or zero durations aren’t accepted. Optional: provide sensible defaults.
Apply this diff:
"time_to_wait": { "type": "integer", "description": "Total duration to wait in milliseconds" + ,"minimum": 1 + ,"default": 5000 }, "notif_interval": { "type": "integer", "description": "Interval between progress updates in milliseconds" + ,"minimum": 1 + ,"default": 1000 }
19-37
: Consider documenting streaming behavior in tool metadata (if supported by registry schema)Since this server streams progress updates, if the registry supports a capability flag (e.g., supports_streaming), consider adding it so clients can surface streaming UX cues. If not supported by schema, ignore.
mcp-registry/servers/tinydb.json (2)
20-25
: Provide a default for DB_FILE to match the descriptionThe description mentions defaults to database.json; encode that as default to improve UX.
"DB_FILE": { "description": "Path to the TinyDB database file (optional, defaults to database.json)", "required": false, - "example": "/path/to/custom_database.json" + "example": "/path/to/custom_database.json", + "default": "database.json" }
26-55
: Define input schemas for tools to enable validation and better promptsRight now tools lack input schemas, which can hinder client-side validation and autocompletion. Recommend adding minimal JSON Schemas for the most common operations.
Example for two tools:
{ "name": "create_table", - "description": "Create a new table in the database" + "description": "Create a new table in the database", + "inputSchema": { + "type": "object", + "properties": { + "table_name": { "type": "string", "description": "Name of the table to create" } + }, + "required": ["table_name"] + } }, { "name": "insert_document", - "description": "Insert a document into a table" + "description": "Insert a document into a table", + "inputSchema": { + "type": "object", + "properties": { + "table_name": { "type": "string" }, + "document": { "type": "object", "additionalProperties": true } + }, + "required": ["table_name", "document"] + } },If helpful, I can provide schemas for the remaining tools.
mcp-registry/servers/nemad.json (1)
26-39
: Add input schemas for tools to clarify required inputsDefining schemas improves validation and discoverability.
Proposed minimal schemas:
{ "name": "nemad_search", - "description": "Search materials by elements in magnetic, thermoelectric, and superconductor databases" + "description": "Search materials by elements in magnetic, thermoelectric, and superconductor databases", + "inputSchema": { + "type": "object", + "properties": { + "elements": { "type": "array", "items": { "type": "string" }, "minItems": 1 }, + "database": { "type": "string", "enum": ["magnetic", "thermoelectric", "superconductor"] } + }, + "required": ["elements", "database"] + } }, { "name": "nemad_formula_search", - "description": "Search materials by exact chemical formula" + "description": "Search materials by exact chemical formula", + "inputSchema": { + "type": "object", + "properties": { + "formula": { "type": "string", "description": "Exact chemical formula, e.g., Fe2O3" } + }, + "required": ["formula"] + } }, { "name": "nemad_read_results", - "description": "Read specific ranges of search results from previous queries" + "description": "Read specific ranges of search results from previous queries", + "inputSchema": { + "type": "object", + "properties": { + "start": { "type": "integer", "minimum": 0 }, + "end": { "type": "integer", "minimum": 1 } + }, + "required": ["start", "end"] + } }mcp-registry/servers/gpaw-computation.json (1)
15-19
: Enhance discoverability with more specific tags.Add domain-specific tags so users can find this server via common queries.
Apply:
"tags": [ "quantum", - "computation" + "computation", + "gpaw", + "dft", + "ase", + "materials-science" ],
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
uv.lock
is excluded by!**/*.lock
📒 Files selected for processing (6)
mcp-registry/servers/gpaw-computation.json
(1 hunks)mcp-registry/servers/nemad.json
(1 hunks)mcp-registry/servers/netket.json
(1 hunks)mcp-registry/servers/timer.json
(1 hunks)mcp-registry/servers/tinydb.json
(1 hunks)pyproject.toml
(1 hunks)
🔇 Additional comments (12)
pyproject.toml (2)
40-41
: Good addition: runtime jsonschema dependencyAdding jsonschema as a runtime dep makes sense if you validate server manifests at runtime.
22-41
: jsonschema runtime usage confirmed
Thejsonschema
library is imported and used at runtime in the following scripts, so keeping it independencies
is appropriate:
scripts/validate_manifest.py
(imports at line 9; callsjsonschema.validate
at line 43)scripts/prepare.py
(imports at line 9; callsjsonschema.validate
at line 53)No changes needed.
mcp-registry/servers/timer.json (1)
48-54
: Verify Python module entrypoint for pip installationThe pip installation uses: command "python", args ["-m", "timer"]. Please confirm that servers/timer installs a Python package exposing a module named "timer" with a main entrypoint. If the module/package is named differently (e.g., timer_server), this will fail at runtime.
If unsure, please check the upstream package/module by inspecting the servers/timer pyproject or package folder structure in the mcp.science repo.
mcp-registry/servers/tinydb.json (1)
65-71
: Verify Python module entrypoint for pip installationThis uses args ["-m", "tinydb_server"]. Please confirm the upstream package exposes this module with a main entrypoint after installation from the subdirectory. Otherwise, clients won’t be able to start the server via pip.
mcp-registry/servers/nemad.json (2)
20-25
: Nice: clear API key argument with example and env mapping belowThe API key argument and environment mapping are clearly documented.
46-51
: Interpolation Syntax Confirmed Across All ManifestsAll server entries—including mcp-registry/servers/nemad.json—use the
"VAR": "${VAR}"
pattern in theirenv
blocks, demonstrating that the registry loader consistently supports${…}
interpolation. No changes are required.mcp-registry/servers/netket.json (3)
28-34
: High risk of module name collision for pip entrypoint (-m netket)Using python -m netket may invoke the upstream NetKet library module rather than the MCP server, depending on how the servers/netket package is named. Please verify the module path for the MCP server’s main and adjust accordingly (e.g., a dedicated module like netket_server or a package-specific name).
If the upstream package exposes a different module, update args accordingly.
36-57
: Examples look goodWell-scoped prompts covering common NetKet workflows.
14-18
: Category “AI Systems” Confirmed
I verified the list of categories across all server manifests; “AI Systems” appears in the canonical set. No changes are needed.mcp-registry/servers/gpaw-computation.json (3)
1-14
: LGTM overall: manifest fields are complete and consistent.Name, display_name, description, repository/homepage/author, license, and examples look solid.
74-75
: Verify consistency ofis_official
flagI wasn’t able to find any other server entries with
is_official: true
. Please confirm that marking this server as “official” aligns with the mcpm.sh policy and is consistent with how other mcp.science servers are flagged.• File: mcp-registry/servers/gpaw-computation.json (line 74)
21-25
: Confirm and correct Materials Project API key env var
The current var,"MPI_API_KEY"
, conflicts with MPI and doesn’t match either client’s expected name. Please verify which client this service uses and rename accordingly:
- For pymatgen’s MPRester → PMG_MAPI_KEY
- For the newer mp-api client → MP_API_KEY
Affected location:
• mcp-registry/servers/gpaw-computation.json (lines 21–25)Example diffs:
- "MPI_API_KEY": { + "PMG_MAPI_KEY": {- "MPI_API_KEY": { + "MP_API_KEY": {
96fcbab
to
3ec91a6
Compare
No diff detected between the PR’s base ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (1)
mcp-registry/servers/gpaw-computation.json (1)
20-30
: Fix uvx installation entry shape to match repo standardThe uvx entry should use type "uvx" with --from and no separate package field. Current shape risks install failures.
Apply:
- "installations": { - "python": { - "type": "python", - "command": "uvx", - "args": ["mcp-science", "gpaw-computation"], - "env": {}, - "description": "Install from GitHub using uvx", - "recommended": true - } - }, + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/pathintegral-institute/mcp.science.git#subdirectory=servers/gpaw-computation", + "gpaw-computation" + ], + "env": {}, + "description": "Install from GitHub using uvx", + "recommended": true + } + },
🧹 Nitpick comments (2)
pyproject.toml (1)
66-74
: Align dev and runtime jsonschema versions to avoid confusionDev group pins jsonschema>=4.23.0 while runtime requires >=4.24.0. Aligning these avoids resolver surprises and keeps local/dev consistent with production.
Apply this diff to bump the dev group:
dev = [ @@ - "jsonschema>=4.23.0", + "jsonschema>=4.24.0",mcp-registry/servers/nemad.json (1)
19-25
: Consider marking API key as a secret in schema if supportedIf your manifest schema supports a “secret” or “sensitive” flag for arguments, mark NEMAD_API_KEY accordingly to avoid accidental logging or display in UIs.
If supported by the registry schema, update the argument to:
"description": "API key for accessing NEMAD database from nemad.org", "required": true, + "secret": true, "example": "your-nemad-api-key"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
uv.lock
is excluded by!**/*.lock
📒 Files selected for processing (6)
mcp-registry/servers/gpaw-computation.json
(1 hunks)mcp-registry/servers/nemad.json
(1 hunks)mcp-registry/servers/netket.json
(1 hunks)mcp-registry/servers/timer.json
(1 hunks)mcp-registry/servers/tinydb.json
(1 hunks)pyproject.toml
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- mcp-registry/servers/tinydb.json
- mcp-registry/servers/timer.json
🧰 Additional context used
🧬 Code Graph Analysis (1)
mcp-registry/servers/gpaw-computation.json (2)
src/mcpm/commands/install.py (1)
global_add_server
(64-72)src/mcpm/global_config.py (1)
add_server
(104-120)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: codex
🔇 Additional comments (5)
pyproject.toml (1)
40-41
: Runtime jsonschema addition looks reasonableAdding jsonschema as a runtime dependency aligns with manifest validation goals. No API surface impact.
mcp-registry/servers/nemad.json (1)
1-18
: Metadata, tags, and categorization look goodName, display_name, repo links, and tags are consistent and clear.
mcp-registry/servers/gpaw-computation.json (1)
31-49
: Examples and metadata read wellPrompts are specific and actionable. Good coverage across use cases.
mcp-registry/servers/netket.json (2)
1-18
: Good metadata and example coverageName, description, and examples look solid and consistent with other entries.
19-35
: Refactor uvx installation block in netket.jsonOnly the
netket.json
manifest usesuvx
—no other server manifests define anuvx
block. Update its installation entry to the project’s standard pattern:mcp-registry/servers/netket.json @@ "installations": { - "python": { - "type": "python", - "command": "uvx", - "args": ["mcp-science", "netket"], - "package": "git+https://github.com/pathintegral-institute/mcp.science.git#subdirectory=servers/netket", - "description": "Install from GitHub using uvx", - "recommended": true - }, + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/pathintegral-institute/mcp.science.git#subdirectory=servers/netket", + "netket" + ], + "description": "Install from GitHub using uvx", + "recommended": true + }, "pip": { "type": "python", "command": "python", "args": ["-m", "netket"], "package": "git+https://github.com/pathintegral-institute/mcp.science.git#subdirectory=servers/netket", "description": "Install from GitHub using pip" }
"arguments": {}, | ||
"installations": { | ||
"python": { | ||
"type": "python", | ||
"command": "uvx", | ||
"args": ["mcp-science", "gpaw-computation"], | ||
"env": {}, | ||
"description": "Install from GitHub using uvx", | ||
"recommended": true | ||
} | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Add Materials Project API key argument and env forwarding
PR description states MP API integration, but no argument/env is defined. This likely breaks authenticated flows.
Proposed update adding MP_API_KEY and forwarding it:
"tags": [
"quantum",
"computation"
],
- "arguments": {},
+ "arguments": {
+ "MP_API_KEY": {
+ "description": "Materials Project API key (https://materialsproject.org)",
+ "required": true,
+ "secret": true,
+ "example": "your-mp-api-key"
+ }
+ },
"installations": {
- "uvx": {
+ "uvx": {
"type": "uvx",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/pathintegral-institute/mcp.science.git#subdirectory=servers/gpaw-computation",
"gpaw-computation"
],
- "env": {},
+ "env": {
+ "MP_API_KEY": "${MP_API_KEY}"
+ },
"description": "Install from GitHub using uvx",
"recommended": true
}
},
Run this to discover the canonical env var used across manifests for Materials Project:
🏁 Script executed:
#!/bin/bash
rg -n --pretty --hidden -S 'MP_API_KEY|MAPI_KEY|MPI_API_KEY' mcp-registry/servers || true
Length of output: 192
🏁 Script executed:
#!/bin/bash
# Display the first 100 lines of the gpaw-computation manifest for context
sed -n '1,100p' mcp-registry/servers/gpaw-computation.json
Length of output: 1666
Add MP_API_KEY argument and forward env to Python installer
To enable authenticated Materials Project API calls (per PR description), the gpaw-computation.json
manifest needs to declare the MP_API_KEY
argument and inject it into the installer’s environment. This follows the pattern in materials-project.json
, which uses MP_API_KEY
as the canonical variable name.
Targets:
- mcp-registry/servers/gpaw-computation.json
--- a/mcp-registry/servers/gpaw-computation.json
+++ b/mcp-registry/servers/gpaw-computation.json
@@
- "arguments": {},
+ "arguments": {
+ "MP_API_KEY": {
+ "description": "Materials Project API key (https://materialsproject.org)",
+ "required": true,
+ "secret": true,
+ "example": "your-mp-api-key"
+ }
+ },
@@
- "python": {
+ "python": {
"type": "python",
"command": "uvx",
"args": ["mcp-science", "gpaw-computation"],
- "env": {},
+ "env": {
+ "MP_API_KEY": "${MP_API_KEY}"
+ },
"description": "Install from GitHub using uvx",
"recommended": true
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"arguments": {}, | |
"installations": { | |
"python": { | |
"type": "python", | |
"command": "uvx", | |
"args": ["mcp-science", "gpaw-computation"], | |
"env": {}, | |
"description": "Install from GitHub using uvx", | |
"recommended": true | |
} | |
}, | |
"arguments": { | |
"MP_API_KEY": { | |
"description": "Materials Project API key (https://materialsproject.org)", | |
"required": true, | |
"secret": true, | |
"example": "your-mp-api-key" | |
} | |
}, | |
"installations": { | |
"python": { | |
"type": "python", | |
"command": "uvx", | |
"args": ["mcp-science", "gpaw-computation"], | |
"env": { | |
"MP_API_KEY": "${MP_API_KEY}" | |
}, | |
"description": "Install from GitHub using uvx", | |
"recommended": true | |
} | |
}, |
🤖 Prompt for AI Agents
In mcp-registry/servers/gpaw-computation.json around lines 20–30, the manifest
is missing the MP_API_KEY argument and does not forward that environment
variable into the Python installer; add an entry "MP_API_KEY" under the
top-level "arguments" object and add an "MP_API_KEY" key to
installations.python.env that forwards the argument value (e.g. set the env
value to the corresponding argument placeholder used in other manifests so the
installer receives MP_API_KEY at runtime).
3ec91a6
to
a0863b5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
uv.lock
is excluded by!**/*.lock
📒 Files selected for processing (6)
mcp-registry/servers/gpaw-computation.json
(1 hunks)mcp-registry/servers/nemad.json
(1 hunks)mcp-registry/servers/netket.json
(1 hunks)mcp-registry/servers/timer.json
(1 hunks)mcp-registry/servers/tinydb.json
(1 hunks)pyproject.toml
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
- mcp-registry/servers/gpaw-computation.json
- mcp-registry/servers/tinydb.json
- mcp-registry/servers/timer.json
- pyproject.toml
- mcp-registry/servers/nemad.json
🧰 Additional context used
🪛 Biome (2.1.2)
mcp-registry/servers/netket.json
[error] 27-27: Expected a property but instead found '}'.
Expected a property here.
(parse)
🪛 GitHub Actions: Test & Validate
mcp-registry/servers/netket.json
[error] 1-1: Schema validation error in step 'cardinalby/schema-validator-action@v3': Contents of 'mcp-registry/servers/netket.json' aren't a valid json: json: SyntaxError: Expected double-quoted property name in JSON at position 863.
🔇 Additional comments (1)
mcp-registry/servers/netket.json (1)
1-51
: Content LGTMBeyond the JSON comma issue, the manifest fields, examples, and installation instructions look consistent with the other servers described in the PR.
a0863b5
to
c16ecc4
Compare
🎉 This PR is included in version 2.7.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
User description
https://github.com/pathintegral-institute/mcp.science/tree/main/servers
PR Type
Enhancement
Description
Add 5 new MCP servers from mcp.science repository
Include quantum physics, materials science, and database servers
Add jsonschema dependency for validation support
Diagram Walkthrough
File Walkthrough
gpaw-computation.json
Add GPAW quantum computation server
mcp-registry/servers/gpaw-computation.json
nemad.json
Add NEMAD materials database server
mcp-registry/servers/nemad.json
netket.json
Add NetKet quantum physics server
mcp-registry/servers/netket.json
timer.json
Add timer server with streaming updates
mcp-registry/servers/timer.json
tinydb.json
Add TinyDB NoSQL database server
mcp-registry/servers/tinydb.json
pyproject.toml
Add jsonschema dependency
pyproject.toml
Summary by CodeRabbit
New Features
Chores