Migrate ChronoLog MCP server in-tree (#647, migration only)#665
Merged
Conversation
…onfigure toolkit.iowarp.ai
- Rename directories: agent-toolkit-{mcp-servers,mcp-clients,ai-devkit,website} -> clio-kit-*
- Rename Python package: agent_toolkit -> clio_kit
- Replace all references: iowarp-agent-toolkit -> clio-kit, Agent Toolkit -> CLIO Kit
- Migrate URLs: iowarp.github.io/clio-kit -> toolkit.iowarp.ai
- Unify all package versions to 1.0.0
- Update GitHub Actions workflows with new directory paths
- Update website hero, baseUrl, custom domain (CNAME)
- Fix image paths and internal links for new baseUrl
- Regenerate all uv.lock files
Phase 1 - CI/CD fixes and bug squashing:
- Fix .codecov.yml paths (agent-toolkit -> clio-kit) and add missing flags
- Remove continue-on-error from quality_control.yml for ruff/test/security
- Delete redundant test-mcps.yml workflow
- Fix docs-and-website.yml branch target (dev -> main)
- Fix pandas: add missing hypothesis_testing import
- Fix jarvis: remove dead mcp.run(transport="sse") call
- Fix compression: add decompress_file tool
Phase 2 - Structural standardization:
- Standardize all FastMCP() names to kebab-case matching directory
- Convert 12 flat-layout servers to proper src/{name}_mcp/ packages
- Standardize build backend to hatchling across all servers
- Standardize transport to stdio/http with argparse + env var fallback
Phase 3 - FastMCP 3.0 upgrade (all 16 servers):
- Bump fastmcp dependency to >=3.0.0rc2
- Add instructions= to all FastMCP() constructors
- Add annotations= (readOnlyHint, destructiveHint, idempotentHint) to all tools
- Add tags= to all tools for categorization
- Replace ad-hoc error dicts with raise ToolError() from fastmcp.exceptions
- Add @mcp.resource() (at least 1 per server)
- Add @mcp.prompt() with Message from fastmcp.prompts (at least 1 per server)
- Trim verbose tool descriptions to 1-2 sentences
- Use Annotated[type, Field(description=...)] for parameter docs
- Add list_page_size=10 for servers with 10+ tools
- Update all tests for v3 API (no more FunctionTool/.fn() patterns)
…ini CLI Add server.json (MCP registry), .claude-plugin/plugin.json and .mcp.json (Claude Code marketplace), gemini-extension.json (Gemini CLI extension), and claude_desktop_config.json (Claude Desktop reference config) for all 16 MCP servers. - New generate_server_json.py script extracts live FastMCP metadata and produces all manifest files in one pass - Update publish.yml with MCP registry (mcp-publisher) and Smithery jobs - Update quality_control.yml with server.json validation job - Update readme_filler.py with correct Gemini CLI and Claude Code sections - Fix pandas/parquet .gitignore to allow publishing JSON files
- Remove unused imports (F401): asyncio, sys, os, ToolError across arxiv, chronolog, node-hardware, parallel-sort, plot, slurm - Apply ruff format to all server and test files - Add S104 to ndp ruff ignore (intentional 0.0.0.0 binding for HTTP)
…tall
- Update server.json format: packages[] with registryType/identifier
(replaces package{} with registry_name/name)
- Add $schema and title fields per official schema
- Fix publish.yml: correct mcp-publisher install URL (tarball format)
- Fix publish.yml: use github-oidc auth (not github)
- Add mcp-name verification comments to README for PyPI validation
- Update generate_server_json.py to produce new schema format
- Fix MyPy transport type errors: use literal "stdio"/"http" in all 16 server.py - Fix slurm MyPy: add missing partition/node params to implementation functions - Upgrade FastMCP from >=3.0.0rc2 to >=3.0.1 (locks to 3.0.2), resolving all CVEs - Regenerate all 16 uv.lock files with upgraded dependencies - Fix pandas 3.x compatibility: ChainedAssignment, frequency aliases, StringDtype - Fix hdf5 test assertion for updated config version - Update all server versions to 2.0.1 in README - Migrate docs URLs from toolkit.iowarp.ai to docs.iowarp.ai (57 occurrences) - Update clio-kit-website CNAME and config for new docs domain
- Fix pyproject.toml version from 2.0.2 to 2.0.1 (matching release tag) - Regenerate all 16 server.json with correct PyPI version 2.0.1 - MCP Registry and Smithery publish jobs now fail on errors instead of silently swallowing failures with || continue - Add SMITHERY_TOKEN verification step before Smithery publishing
Smithery was trying to scan servers via HTTP because `mcp publish <url>` treats them as external servers. Stdio servers need a smithery.yaml with startCommand config and must be published from the project directory without a URL argument.
Smithery deprecated stdio transport and now only supports hosted HTTP servers. All clio-kit servers require local access (file system, HPC, hardware) so Smithery hosting is not viable. Removed smithery.yaml files and publish job. Servers remain discoverable via MCP Registry and PyPI.
The MCP Registry displays the top-level "version" field from server.json. It was hardcoded to each server's local pyproject.toml version (1.0.0) instead of the root PyPI package version (2.0.1).
This comment was marked as resolved.
This comment was marked as resolved.
The C++ reader sources imported from clio-kit (reader.cpp, HDF5ArchiveReadingAgent.h) used a different style and failed the repo's clang-format-18 check. Reformat in place; no semantic change.
fkengun
reviewed
May 26, 2026
| raise ToolError(f"Failed to connect to ChronoLog: {ret}") | ||
|
|
||
| attrs: dict[str, str] = {} | ||
| ret = config.client.CreateChronicle(chronicle, attrs, 1) |
Contributor
There was a problem hiding this comment.
it still calls the old api. we do not have attrs and flag now. pls check all other APIs as well.
fkengun
reviewed
May 26, 2026
|
|
||
| ret, handle = config.client.AcquireStory(chronicle, story, attrs, 1) | ||
| if ret != 0: | ||
| config.client.ReleaseStory(chronicle, story) |
Contributor
There was a problem hiding this comment.
if AcquireStory() fails, no need to call ReleaseStory().
fkengun
reviewed
May 26, 2026
| # HDF5 reader binary + config file | ||
| READER_BINARY = os.getenv( | ||
| "HDF5_READER_BIN", | ||
| "/home/ssonar/chronolog/Debug/reader_script/build/hdf5_file_reader", |
fkengun
approved these changes
May 26, 2026
This was referenced May 27, 2026
Closed
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Migration half of #647. Brings the MCP server in-tree at
plugins/chrono-mcp/, imported fromiowarp/clio-kitviagit subtree splitso the original authored commits are preserved (no submodule).No improvements yet — the imported code still targets an older client API and won't run against current
developas-is. Follow-up tracked in #666.