Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Universal MCP server for GraphQL/REST APIs
| Date | Stars |
|---|---|
| 2026-07-31 | 282 |
| 2026-08-05 | 283 |
| 2026-08-06 | 283 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# API Agent
**Turn any API into an MCP server. Query in English. Get results even when the API can't.**
Point at any GraphQL or REST API. Ask questions in natural language. The agent fetches data, stores it in DuckDB, and runs SQL post-processing. Rankings, filters, and joins over returned data work **even if the API doesn't support them**.
## What Makes It Different
**🎯 Zero config.** No custom MCP code per API. Point at a GraphQL endpoint, OpenAPI 3.x spec, or Swagger 2.0 spec. The agent introspects/loads schema automatically.
**✨ SQL post-processing.** API returns 10,000 unsorted rows? Agent ranks top 10. No GROUP BY? Agent aggregates. Need to join returned tables? Agent combines. The API doesn't need to support it—the agent does.
**🔒 Safe by default.** Read-only. Mutations blocked unless explicitly allowed.
**🧠 Recipe learning.** Agent samples successful queries into reusable workflows. Ask once, reuse cached pipelines that execute without LLM reasoning. Learned recipes are exposed as tools named `r_<tool_name>`.
## Quick Start
**1. Run:**
```bash
# Direct run (no clone needed)
OPENAI_API_KEY=your_key uvx --from git+https://github.com/agoda-com/api-agent api-agent
# Or clone
git clone https://github.com/agoda-com/api-agent.git && cd api-agent
uv sync --group dev
```
Set the OpenAI secret in env:
```bash
export OPENAI_API_KEY=your_key
```
Direct `uvx` runs use built-in defaults unless `API_AGENT_CONFIG` points to a
TOML file. A cloned checkout uses `api-agent.toml` from the repository root by
default.
**2. Start local clone:**
```bash
uv run api-agent
# Or Docker
docker build -t api-agent .
docker run -p 3000:3000 -e OPENAI_API_KEY=your_key api-agent
```
**3. Add to any MCP client:**
```json
{
"mcpServers": {
"rickandmorty": {
"url": "http://localhost:3000/mcp",
"headers": {
"X-Target-URL": "https://rickandmortyapi.com/graphql",
"X-API-Type": "graphql"
}
}
}
}
```
**4. Ask questions:**
- *"Show characters from Earth, only alive ones, group by species"*
- *"Top 10 characters by episode count"*
- *"Compare alive vs dead by species, only species with 10+ characters"*
That's it. Agent introspects schema, generates calls, runs SQL post-processing.
## More Examples
**REST API (Petstore):**
```json
{
"mcpServers": {
"petstore": {
"url": "http://localhost:3000/mcp",
"headers": {
"X-Target-URL": "https://petstore3.swagger.io/api/v3/openapi.json",
"X-API-Type": "rest"
}
}
}
}
```
**Your own API with auth:**
```json
{
"mcpServers": {
"myapi": {
"url": "http://localhost:3000/mcp",
"headers": {
"X-Target-URL": "https://api.example.com/graphql",
"X-API-Type": "graphql",
"X-Target-Headers": "{\"Authorization\": \"Bearer YOUR_TOKEN\"}"
}
}
}
}
```
---
## Reference
### Headers
| Header | Required | Description |
| ---------------------- | -------- | ---------------------------------------------------------- |
| `X-Target-URL` | Yes | GraphQL endpoint OR OpenAPI/Swagger spec URL |
| `X-API-Type` | Yes | `graphql` or `rest` |
| `X-Target-Headers` | No | JSON auth headers, e.g. `{"Authorization": "Bearer xxx"}` |
| `X-Passthrough-Headers`| No | JSON array of header names to copy from this MCP request onto outbound API calls (merged after `X-Target-Headers`) |
| `X-API-Name` | No | Override tool name prefix (default: auto-generated) |
| `X-Base-URL` | No | Override base URL for REST API calls |
| `X-Allow-Unsafe-Paths` | No | JSON array of glob patterns for POST/PUT/DELETE/PATCH |
| `X-Poll-Paths` | No | JSON array of REST paths requiring polling |
| `X-Include-Result` | No | Truthy values include full `Excerpt of 17,782 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:9619533b202200d4, topic:mcp, desc:mcp server