{"id":26746649,"url":"https://github.com/ezyang/codemcp","last_synced_at":"2025-03-28T09:02:04.707Z","repository":{"id":281439583,"uuid":"945281966","full_name":"ezyang/codemcp","owner":"ezyang","description":"Coding assistant MCP for Claude Desktop","archived":false,"fork":false,"pushed_at":"2025-03-24T11:37:42.000Z","size":1346,"stargazers_count":891,"open_issues_count":44,"forks_count":67,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-24T11:37:46.794Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/ezyang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-09T03:58:34.000Z","updated_at":"2025-03-24T11:17:16.000Z","dependencies_parsed_at":"2025-03-10T03:35:06.618Z","dependency_job_id":"2ca4a8e0-53d1-45f1-b592-4beda2dc12a1","html_url":"https://github.com/ezyang/codemcp","commit_stats":null,"previous_names":["ezyang/deskaid","ezyang/codemcp"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezyang%2Fcodemcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezyang%2Fcodemcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezyang%2Fcodemcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezyang%2Fcodemcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ezyang","download_url":"https://codeload.github.com/ezyang/codemcp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245999360,"owners_count":20707555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2025-03-28T09:02:03.659Z","updated_at":"2025-03-28T09:02:04.697Z","avatar_url":"https://github.com/ezyang.png","language":"Python","readme":"# codemcp\n\nMake Claude Desktop a pair programming assistant by installing codemcp.  With\nit, you can directly ask Claude to implement features, fix bugs and do\nrefactors on a codebase on your computer; Claude will directly edit files and\nrun tests.  Say goodbye to copying code in and out of Claude's chat window!\n\n![Screenshot of Claude Desktop with codemcp](static/screenshot.png?raw=true)\n\ncodemcp offers similar functionality to other AI coding software (Claude Code,\nCursor, Cline, Aider), but it occupies a unique point in the design space:\n\n1. It's intended to be used with Claude Pro, Anthropic's $20/mo subscription\n   offering.  **Say goodbye to giant API bills**.  (Say hello to time-based rate\n   limits.)\n\n2. It's built around **safe agentic AI** by providing a limited set of tools\n   that helpful, honest and harmless LLMs are unlikely to misuse, and enforcing\n   best practices like use of Git version control to ensure all code changes\n   can be rolled back.  As a result, you can safely **unleash the AI** and\n   only evaluate at the end if you want to accept the changes or not.\n\n3. It's **IDE agnostic**: you ask Claude to make changes, it makes them, and\n   then you can use your favorite IDE setup to review the changes and make\n   further edits.\n\n## Getting started\n\nFirst, [install uv](https://docs.astral.sh/uv/getting-started/installation/)\nand [install\ngit](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), if they\nare not installed already (on Windows, if you installed Git, I recommend\nrebooting).\n\nThen, in `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"codemcp\": {\n      \"command\": \"/Users/\u003cusername\u003e/.local/bin/uvx\",\n      \"args\": [\n        \"--from\",\n        \"git+https://github.com/ezyang/codemcp@prod\",\n        \"codemcp\"\n      ]\n    }\n  }\n}\n```\n\nOn Windows, double backslashes are necessary for the path:\n\n```\nC:\\\\Users\\\\\u003cusername\u003e\\\\.local\\\\bin\\\\uvx.exe\n```\n\nRestart the Claude Desktop app after modifying the JSON.  If the MCP\nsuccessfully loaded, a hammer icon will appear and when you click it \"codemcp\"\nwill be visible.\n\n### Global install with pip\n\nIf you don't want to use uv, you can also globally pip install the latest\ncodemcp version, assuming your global Python install is recent enough (Python\n3.12) and doesn't have Python dependencies that conflict with codemcp.  Some\nusers report this is easier to get working on Windows.\n\n1. `pip install git+https://github.com/ezyang/codemcp@prod`\n2. Add the following configuration to `claude_desktop_config.json` file\n```json\n{\n    \"mcpServers\": {\n         \"codemcp\": {\n               \"command\": \"python\",\n               \"args\": [\"-m\", \"codemcp\"]\n            }\n    }\n}\n```\n3. Restart Claude Desktop\n\nYou will need to manually upgrade codemcp to take updates using\n`pip install --upgrade git+https://github.com/ezyang/codemcp@prod`\n\n### Other tips\n\nPro tip: If the server fails to load, go to Settings \u003e Developer \u003e codemcp \u003e\nLogs to look at the MCP logs, they're very helpful for debugging. The logs on\nWindows should be loaded `C:\\Users\\\u003cuser_name\u003e\\AppData\\Roaming\\Claude\\logs`\n(replace `\u003cuser_name\u003e` with your username.\n\nPro tip: if on Windows, the logs say \"Git executable not found. Ensure that\nGit is installed and available\", and you *just* installed Git, reboot your\nmachine (the PATH update hasn't propagated.)  If this still doesn't work, open\nSystem Properties \u003e Environment Variables \u003e System variables \u003e Path and ensure\nthere is an entry for Git.\n\nPro tip: if you like to live dangerously, you can change `prod` to `main`.  If\nyou want to pin to a specific release, replace it with `0.3.0` or similar.\n\nPro tip: it is supported to specify only `uvx` as the command, but uvx must be\nin your global PATH (not just added via a shell profile); on OS X, this is\ntypically not the case if you used the self installer (unless you installed\ninto a system location like `/usr/local/bin`).\n\n## Usage\n\nFirst, you must create a `codemcp.toml` file in the Git repository checkout\nyou want to work on.  If you want the agent to be able to do things like run\nyour formatter or run tests, add the commands to execute them in the commands\nsection (note: these commands need to appropriately setup any virtual\nenvironment they need):\n\n```toml\nformat = [\"./run_format.sh\"]\ntest = [\"./run_test.sh\"]\n```\n\nNext, in Claude Desktop, we recommend creating a Project and putting this in\nthe Project Instructions:\n\n```\nInitialize codemcp with $PROJECT_DIR\n```\n\nWhere `$PROJECT_DIR` is the path to the project you want to work on.\n\nThen chat with Claude about what changes you want to make to the project.\nEvery time codemcp makes a change to your code, it will generate a commit.\n\nTo see some sample transcripts using this tool, check out:\n\n- [Implement a new feature](https://claude.ai/share/a229d291-6800-4cb8-a0df-896a47602ca0)\n- [Fix failing tests](https://claude.ai/share/2b7161ef-5683-4261-ad45-fabc3708f950)\n- [Do a refactor](https://claude.ai/share/f005b43c-a657-43e5-ad9f-4714a5cd746f)\n\ncodemcp will generate a commit per chat and amend it as it is working on your feature.\n\n## Philosophy\n\n- When you get rate limited, take the time to do something else (review\n  Claude's code, review someone else's code, make plans, do some meetings)\n\n- This is *not* an autonomous agent.  At minimum, you have to intervene after\n  every chat to review the changes and request the next change.  While you\n  *can* ask for a long list of things to be done in a single chat, you will\n  likely hit Claude Desktop's output limit and have to manually \"continue\" the\n  agent anyway.  Embrace it, and use the interruptions to make sure Claude is\n  doing the right thing.\n\n- When Claude goes off the rails, it costs you time rather than dollars.\n  Behave accordingly: if time is the bottleneck, watch Claude's incremental\n  output carefully.\n\n## Configuration\n\nHere are all the config options supported by `codemcp.toml`:\n\n```toml\nproject_prompt = \"\"\"\nBefore beginning work on this feature, write a short haiku.  Do this only once.\n\"\"\"\n\n[commands]\nformat = [\"./run_format.sh\"]\ntest = [\"./run_test.sh\"]\n```\n\nThe `project_prompt` will be loaded when you initialize the project in chats.\n\nThe `commands` section allows you to configure commands for specific tools.  The\nnames are told to the LLM, who will decide when it wants to run them.  You can add\ninstructions how to use tools in the `project_prompt`; we also support a more verbose\nsyntax where you can give specific instructions on a tool-by-tool basis:\n\n```\n[commands.test]\ncommand = [\"./run_test.sh\"]\ndoc = \"Accepts a pytest-style test selector as an argument to run a specific test.\"\n```\n\n## Troubleshooting\n\nTo run the server with inspector, use:\n\n```\nPYTHONPATH=. mcp dev codemcp/__main__.py\n```\n\nLogs are written to `~/.codemcp/codemcp.log`. The log level can be set in a global configuration file at `~/.codemcprc`:\n\n```toml\n[logger]\nverbosity = \"INFO\"  # Can be DEBUG, INFO, WARNING, ERROR, or CRITICAL\n```\n\nLogging is not configurable on a per project basis, but this shouldn't matter\nmuch because it's difficult to use Claude Desktop in parallel on multiple\nprojects anyway.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Type Checking\n\nThis project uses `pyright` for type checking with strict mode enabled. The type checking configuration is in `pyproject.toml`. We use a few strategies to maintain type safety:\n\n1. Type stubs for external libraries:\n   - Custom type stubs are in the `stubs/` directory\n   - The `stubPackages` configuration in `pyproject.toml` maps libraries to their stub packages\n\n2. File-specific ignores for challenging cases:\n   - For some files with complex dynamic typing patterns (particularly testing code), we use file-specific ignores via `tool.pyright.ignoreExtraErrors` in `pyproject.toml`\n   - This is preferable to inline ignores and lets us maintain type safety in most of the codebase\n\nWhen making changes, please ensure type checking passes by running:\n```\n./run_typecheck.sh\n```\n","funding_links":[],"categories":["AI Agents","CI/CD \u0026 DevOps Pipelines","Code Execution \u0026 Automation Mcp Servers","📚 Projects (1974 total)","MCP 服务器精选列表","🤖 AI/ML","サーバー実装","Python","HarmonyOS","Proxies \u0026 Model Integrations","服务器实现","Code Execution","Coding Agents","MCP Clients","MCP服务器与插件"],"sub_categories":["Code Assistants","🤖 Coding Agents","MCP Servers","💻 开发与代码执行","🤖 \u003ca name=\"coding-agents\"\u003e\u003c/a\u003eコーディングエージェント","Windows Manager","系统与硬件","IDE Extensions \u0026 Code Assistants"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fezyang%2Fcodemcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fezyang%2Fcodemcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fezyang%2Fcodemcp/lists"}