
agoda-com/api-agent
API developmentЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
agoda-com/api-agent — это кандидат на MCP-сервер, импортированный из https://github.com/agoda-com/api-agent.
Обзор
agoda-com/api-agent — это кандидат на MCP-сервер, импортированный из https://github.com/agoda-com/api-agent.
Обзор (машинный перевод)
Превратить любой API в MCP-сервер. Запросить на английском. Получить результаты даже тогда, когда API не может.
Укажите на любой API GraphQL или REST. Задавайте вопросы на естественном языке. Агент забирает данные, хранит их в DuckDB и запускает постобработку SQL. Ранжирование, фильтрация и объединения по возвращённым данным работают даже если API их не поддерживает.
Что делает его особенным
** 🎯 Нулевая конфигурация.** Нет пользовательского кода MCP для каждого API. Указывайте на конечную точку GraphQL, спецификацию OpenAPI 3.x или спецификацию Swagger 2.0. Агент автоматически интроспектует/загружает схему.
** ✨ SQL-постобработка.** API возвращает 10 000 неотсортированных строк? Агент занимает топ-10. Нет GROUP BY? Агент агрегирует. Нужно соединить возвращённые таблицы? Агент объединяется. API не обязан поддерживать это — это должен агент.
** 🔒 По умолчанию безопасно.** Только для чтения. Мутации заблокированы, если это не разрешено явно.
** 🧠 Изучение рецептов.** Агент сэмплирует успешные запросы в повторно используемые рабочие процессы. Спросите один раз, повторно используйте кэшированные конвейеры, которые выполняются без рассуждений LLM. Изученные рецепты отображаются как инструменты с названием r_ .
Быстрый старт
1. Беги:
Задайте секрет OpenAI в окружающей среде:
Прямые uvx запуски используют встроенные настройки по умолчанию, если только API_AGENT_CONFIG не указывает на
Файл TOML.
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
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.
SQL runs sandboxed: no file, network, or extension access. REST calls stay under the API base URL; GraphQL allows only query operations. Recipes are scoped per target and credentials. Report vulnerabilities via SECURITY.md.
🧠 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_.
Quick Start
1. Run:
# 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:
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:
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:
{
"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):
{
"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:
{
"mcpServers": {
"myapi": {
"url": "http://localhost:3000/mcp",
"headers": {
"X-Target-URL": "https://api.example.com/graphql",
"X-API-Type": "graphql",
Установка
docker run -p 3000:3000 -e OPENAI_API_KEY=your_key api-agentКонфигурация
{
"mcpServers": {
"rickandmorty": {
"url": "http://localhost:3000/mcp",
"headers": {
"X-Target-URL": "https://rickandmortyapi.com/graphql",
"X-API-Type": "graphql"
}
}
}
}