diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..769209b --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,24 @@ +# Claude Helper Guide + +## Build and Development Commands +- Format Nix files: `nix fmt` +- Enter development shell: `nix develop` +- Check Nix flake: `nix flake check` + +## Project Structure +This is a Nix flake that bundles several MCP (Model Control Protocol) servers together for easy consumption. It uses: +- Node.js for JavaScript-based MCP servers +- uv for Python package management (for Python-based MCP servers) + +## Code Style Guidelines +- **Nix files**: Format with nixpkgs-fmt (available via `nix fmt`) +- **JavaScript/TypeScript**: Follow standard Node.js conventions +- **Python**: Use uv for dependency management +- **Error handling**: Use appropriate error handling for each language +- **Naming**: Use descriptive, clear names that reflect component purpose +- **Comments**: Add comments for complex logic or non-obvious implementations + +## Git Workflow +- Keep commits small and focused on a single change +- Write descriptive commit messages explaining the "why" not just the "what" +- Test changes locally before committing \ No newline at end of file diff --git a/README.md b/README.md index 0eeb667..d6339d8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -Base (change name for new project) +flake that bundles together a few MCPs for easy consumption --- -Basic test that this works, nothing else. +Nix flake that bundles together some node and uv based mcp servers diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..c010959 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1741851582, + "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index d45f19b..4077d4f 100644 --- a/flake.nix +++ b/flake.nix @@ -1,32 +1,46 @@ { - description = "Basic flake and files - change me"; + description = "Flake that contains an overlay with some mcp servers"; - inputs = { - nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; - flake-utils.url = "github:numtide/flake-utils"; - }; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + nix-npm-buildpackage.url = "github:serokell/nix-npm-buildpackage"; - outputs = { self, nixpkgs, ... }@inputs: - inputs.flake-utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in - { - # nix fmt formatter - formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt; + mcp-servers.url = "github:modelcontextprotocol/servers/main"; + }; - # default devshell - devShells.default = nixpkgs.legacyPackages.${system}.mkShell { - packages = [ - pkgs.pre-commit - pkgs.go-task - ]; + outputs = { self, nixpkgs, ... }@inputs: + inputs.flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}.extend( + nixpkgs.lib.composeManyExtensions([ + inputs.nix-npm-buildpackage.overlays.default + ] ++ builtins.attrValues self.overlays) + ); + mcp-servers-pkg = pkgs.buildNpmPackage { + src = inputs.mcp-servers; + }; + in + { + # nix fmt formatter + formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt; - # Will be executed before entering the shell - # or running a command - shellHook = '' - ''; - }; - } - ); + overlays.default = final: prev: { + mcp-servers = mcp-servers-pkg; + }; + + # default devshell + devShells.default = nixpkgs.legacyPackages.${system}.mkShell { + packages = [ + pkgs.uv + pkgs.nodejs + ]; + + # Will be executed before entering the shell + # or running a command + shellHook = '' + ''; + }; + } + ); }