{"id":34255105,"url":"https://github.com/jongan69/expo-react-native-fastmcp","last_synced_at":"2026-03-12T02:02:01.989Z","repository":{"id":292711664,"uuid":"981703629","full_name":"jongan69/expo-react-native-fastmcp","owner":"jongan69","description":"A Fastmcp Server for Expo React Native Documentation","archived":false,"fork":false,"pushed_at":"2025-08-26T01:57:29.000Z","size":2988,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-19T23:45:20.357Z","etag":null,"topics":["documentation","expo","llm-inference","mcp-server","react-native"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jongan69.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":"docs/support.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-11T17:51:57.000Z","updated_at":"2025-08-26T01:57:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"36182ef8-6399-4285-961c-d25c4ad3ac3b","html_url":"https://github.com/jongan69/expo-react-native-fastmcp","commit_stats":null,"previous_names":["jongan69/expo-react-native-fastmcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jongan69/expo-react-native-fastmcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fexpo-react-native-fastmcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fexpo-react-native-fastmcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fexpo-react-native-fastmcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fexpo-react-native-fastmcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jongan69","download_url":"https://codeload.github.com/jongan69/expo-react-native-fastmcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongan69%2Fexpo-react-native-fastmcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30412239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"online","status_checked_at":"2026-03-12T02:00:07.260Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["documentation","expo","llm-inference","mcp-server","react-native"],"created_at":"2025-12-16T12:31:55.887Z","updated_at":"2026-03-12T02:02:01.983Z","avatar_url":"https://github.com/jongan69.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/38b46a0b-bfca-4283-b568-e22c2c8b8152)\n\n# 📚 Expo React Native Markdown Documentation Server (MCP)\n\nA fast, extensible, and intelligent documentation server for Markdown files using React Native Expo Documentation, powered by the MCP framework.\n\n---\n\n## 🚀 Features\n\n- **Automatic Markdown Discovery:** Scans the `docs/` directory for all Markdown files and registers them as searchable resources.\n- **Metadata Extraction:** Reads YAML frontmatter for tags and versioning, and tracks last modified dates.\n- **Powerful Search Tools:**\n  - **Keyword Search:** Find documentation by exact keyword matches, with ranked results and context snippets.\n  - **Fuzzy Search:** Typo-tolerant search using rapidfuzz for partial matches.\n  - **Advanced Search:** Filter by keyword, tag, and/or last modified date.\n- **Resource API:** Exposes documentation as resources with rich metadata for integration with other tools.\n- **Logging:** All queries are logged for analytics and debugging.\n- **Simple API:** Exposes all search and retrieval tools via MCP's tool interface.\n\n---\n\n## 🏗️ Project Structure\n\n```\n.\n├── server.py         # Main server code (this file)\n├── docs/            # Place your Markdown documentation here\n│   └── *.md\n├── sitemap_scrape.py  # Scrapes Expo and React Native Sitemaps for Documentation URLS and saves to sitemaps_urls.json\n├── scrape_markdown.py  # Scrapes sitemaps_urls.json URLs and saves the data as *.md files in /docs\n└── README.md\n```\n\n---\n\n## 🛠️ Usage\n\n### 1. Add Your Documentation\n\nPlace your Markdown files in the `docs/` directory or use `sitemap_scrape.py` and `scrape_markdown.py` to generate *.md files from a sitemap url.  \n\nOptionally, add YAML frontmatter for tags and versioning:\n\n```markdown\n---\ntags: [api, quickstart]\nversion: 1.2.0\n---\n\n# My API Documentation\n\nWelcome to the docs!\n```\n\n### 2. Start the Server\n\nNote: use `source .venv/bin/activate` to activate the python enviornment \n\n```bash\n uv run mcp dev server.py \n```\n\nThe server runs using MCP's `stdio` transport by default.\n\n---\n\n## 🔍 API Overview\n\nAll tools are exposed via the MCP tool interface:\n\n### `search_docs(keyword: str)`\n\n- **Description:** Search for a keyword in all docs. Returns ranked filenames with context snippets.\n- **Returns:**\n  - `filename`\n  - `matches` (count)\n  - `snippet`\n  - `last_modified`\n  - `tags`\n  - `version`\n\n---\n\n### `fuzzy_search_docs(keyword: str, threshold: int = 70)`\n\n- **Description:** Typo-tolerant search using rapidfuzz. Returns ranked results with context.\n- **Returns:**\n  - `filename`\n  - `score`\n  - `snippet`\n  - `last_modified`\n  - `tags`\n  - `version`\n\n---\n\n### `advanced_search(keyword: str = \"\", tag: str = \"\", after: str = \"\")`\n\n- **Description:** Search by keyword, tag, or last modified date (ISO format).\n- **Returns:**\n  - `filename`\n  - `matches`\n  - `snippet`\n  - `last_modified`\n  - `tags`\n  - `version`\n\n---\n\n### `get_doc_content(filename: str)`\n\n- **Description:** Retrieve the full content of a documentation file by name.\n\n---\n\n## 📝 Example Query\n\n```python\nfrom mcp.client import MCPClient\n\nclient = MCPClient(\"http://localhost:YOUR_PORT\")\nresults = client.search_docs(\"installation\")\nprint(results)\n```\n\n---\n\n## 🍾 Adding to Cursor\n\nUse the `mcp.json` file structure for using the MCP server in Cursor \n\n## 🧩 Extending\n\n- Add new Markdown files to `docs/` — they are auto-discovered.\n- Add new search tools or resource types by extending `server.py`.\n\n---\n\n## 🛡️ Logging\n\nAll queries are logged to `mcp_server_queries.log` for traceability and analytics.\n\n---\n\n## 🧑‍💻 Requirements\n\n- Python 3.8+\n- [mcp](https://github.com/multiprocessio/mcp)\n- [PyYAML](https://pyyaml.org/)\n- [rapidfuzz](https://github.com/maxbachmann/RapidFuzz)\n\nInstall dependencies:\n\n```bash\npip install mcp pyyaml rapidfuzz\n```\n\n---\n\n## 🤝 Contributing\n\nPull requests and issues are welcome!  \nFeel free to suggest features or improvements.\n\n---\n\n## 📄 License\n\nMIT License\n\n---\n\n## ✨ Credits\n\nBuilt with [MCP](https://github.com/multiprocessio/mcp) and ❤️ by yours truly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongan69%2Fexpo-react-native-fastmcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjongan69%2Fexpo-react-native-fastmcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongan69%2Fexpo-react-native-fastmcp/lists"}