{"id":48368062,"url":"https://github.com/james2doyle/godot-docs-mcp","last_synced_at":"2026-04-05T15:05:19.989Z","repository":{"id":334623927,"uuid":"1102730693","full_name":"james2doyle/godot-docs-mcp","owner":"james2doyle","description":"A hosted MCP for searching and fetching the Godot docs","archived":false,"fork":false,"pushed_at":"2026-02-21T22:27:43.000Z","size":5679,"stargazers_count":11,"open_issues_count":3,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-22T04:20:53.768Z","etag":null,"topics":["docs","godot","mcp"],"latest_commit_sha":null,"homepage":"https://godot-docs-mcp.j2d.workers.dev/mcp","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/james2doyle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-24T00:53:21.000Z","updated_at":"2026-02-21T22:27:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/james2doyle/godot-docs-mcp","commit_stats":null,"previous_names":["james2doyle/godot-docs-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/james2doyle/godot-docs-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james2doyle%2Fgodot-docs-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james2doyle%2Fgodot-docs-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james2doyle%2Fgodot-docs-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james2doyle%2Fgodot-docs-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/james2doyle","download_url":"https://codeload.github.com/james2doyle/godot-docs-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james2doyle%2Fgodot-docs-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31439464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T13:13:19.330Z","status":"ssl_error","status_checked_at":"2026-04-05T13:13:17.778Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["docs","godot","mcp"],"created_at":"2026-04-05T15:04:51.534Z","updated_at":"2026-04-05T15:05:19.975Z","avatar_url":"https://github.com/james2doyle.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Godot Docs MCP\n\n![demo.png](demo.png)\n\n*This project is [hosted on Cloudflare using their Agents framework](https://developers.cloudflare.com/agents/)*\n\n\u003e [!WARNING]\n\u003e Due to the popularity of this project, a rate limit of 15 requests per 60 second has been added. If you want to avoid that, [create a free Cloudflare account yourself and deploy this project](#deploy-to-cloudflare).\n\nLook up documentation in Godot using fuzz search. Supports `stable`, `latest`, `4.6`, `4.5`, `4.4`, and `4.3` versions. The default version is \"stable\".\n\n## Tools\n\n**search_docs** `(searchTerm: string, version: \"stable\" | \"latest\" | \"4.6\" | \"4.5\" | \"4.4\" | \"4.3\" = \"stable\")`\n\n\u003e Search the Godot docs by term. Will return URLs to the documentation for each matching term. The resulting URLs will need to have their page content fetched to see the documentation.\n\n**get_docs_page_for_term** `(searchTerm: string, version: \"stable\" | \"latest\" | \"4.6\" | \"4.5\" | \"4.4\" | \"4.3\" = \"stable\")`\n\n\u003e Get the Godot docs content by term. Will return the full documentation page for the first matching result.\n\n## Configure the MCP server\n\nTo use the hosted HTTP server:\n\n```json\n{\n  \"mcpServers\": {\n    \"godot\": {\n      \"type\": \"http\",\n      \"url\": \"https://godot-docs-mcp.j2d.workers.dev/mcp\"\n    }\n  }\n}\n```\n\nOr, to connect to the MCP server using a `stdio` server:\n\n```json\n{\n  \"mcpServers\": {\n    \"godot\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https://godot-docs-mcp.j2d.workers.dev/mcp\"\n      ]\n    }\n  }\n}\n```\n\n### How this works\n\nThe docs site uses a frontend search tool to handle the docs search. There is a file called `searchindex.js` in the docs site that contains an index of all the pages (URLs and titles, not content) on the site.\n\nThis project takes advantage of that in the following ways:\n\n- downloads each of those `searchindex.js` files for each version of the docs\n- converts the `searchindex.js` to a `searchindex.js.json` that is just json we need\n- indexes that new json using [lucaong/minisearch](https://github.com/lucaong/minisearch)\n- when a docs page is requested, the URL for the page is converted from HTML to markdown\n\n## Local development\n\n### MCP server\n\n```sh\nnpm install\nnpm run dev\n```\n\nThen, set up your tool:\n\n```json\n{\n  \"mcpServers\": {\n    \"godot\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"http://localhost:8787/mcp\"\n      ]\n    }\n  }\n}\n```\n\nTo debug the server, you can use [this browser tool](https://github.com/modelcontextprotocol/inspector):\n\n```sh\n# in another tab\nnpx @modelcontextprotocol/inspector\n```\n\nThen open http://localhost:6274/#tools.\n\nYou can also use https://www.mcpplayground.io/ to look at the tools in the live HTTP server.\n\n### Generating the docs\n\n```sh\n# create the folders\necho \"stable,latest,4.6,4.5,4.4,4.3\" | string split \",\" | xargs -I {} mkdir -p \"src/indexes/{}\"\n# download the files\necho \"stable,latest,4.6,4.5,4.4,4.3\" | string split \",\" | xargs -I {} curl -o \"src/indexes/{}/searchindex.js\" \"https://docs.godotengine.org/en/{}/searchindex.js\"\n# convert the .js to a .json\nlsd src/indexes/*/searchindex.js | xargs -n1 fish -c 'cat \"$argv\" | sd \"Search.setIndex\\(\" \"\" | sed \\'$ s/.$//\\' | jq \\'.docnames | to_entries | map({id: .key, name: .value, category: .value | split(\"/\") | first, url: \"/\\\\(.value).html\"})\\' \u003e \"$argv.json\"'\n```\n\n## Deploy to Cloudflare\n\nTo deploy your own instance (recommended to avoid rate limits):\n\n1. Create a free [Cloudflare account](https://dash.cloudflare.com/sign-up)\n2. Install and authenticate Wrangler:\n\n```sh\nnpm install -g wrangler\nwrangler login\n```\n\n3. Change the `ratelimits` settings in the `wrangler.jsonc`.\n4. Clone and deploy:\n\n```sh\ngit clone https://github.com/your-repo/godot-docs-mcp.git\ncd godot-docs-mcp\nnpm install\nnpm run deploy\n```\n\n5. Update your server URL:\n\nAfter deployment, update your MCP config with your worker URL:\n\n```json\n{\n  \"mcpServers\": {\n    \"godot\": {\n      \"type\": \"http\",\n      \"url\": \"https://godot-docs-mcp.YOUR-SUBDOMAIN.workers.dev/mcp\"\n    }\n  }\n}\n```\n\n### Adjusting the Rate Limit\n\nThe default rate limit is **15 requests per 60 seconds**. To increase or disable it, edit `wrangler.jsonc`:\n\n**Increase the limit:**\n\n```jsonc\n\"ratelimits\": [\n  {\n    \"name\": \"MCP_RATE_LIMITER\",\n    \"namespace_id\": \"1001\",\n    \"simple\": {\n      \"limit\": 1000,\n      \"period\": 60\n    }\n  }\n]\n```\n\n**Disable rate limiting entirely:**\nRemove the entire `ratelimits` array from `wrangler.jsonc`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjames2doyle%2Fgodot-docs-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjames2doyle%2Fgodot-docs-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjames2doyle%2Fgodot-docs-mcp/lists"}