GraphQL Schema Embedder MCP Server
MCP-сервер для встраивания GraphQL-схем
Python MCP-сервер для LLM, который индексирует GraphQL-схему, сохраняет эмбеддинги для каждого type->field через эндпоинт эмбеддингов и обеспечивает быстрый поиск, а также выполнение run_query после идентификации соответствующих типов для получения данных из вашего GraphQL-эндпоинта.
Архитектура
GraphQL-схема: предоставьте файл схемы (SDL) для выполнения парсинга и индексации.
Индексатор:
schema_indexer.pyстроит индекс навигации по узлам полей GraphQL, включая метаданные полей, псевдонимы для нечеткого поиска и координаты корня запроса (Query-root), затем встраивает сгенерированный поисковый текст и сохраняет его вdata/metadata.json+data/vectors.npz.Сервер:
server.pyпредоставляет MCP-инструментыlist_typesиrun_query. Сервер гарантирует наличие индекса схемы при запуске; он вызывает эндпоинт эмбеддингов только при переиндексации или встраивании нового запроса.Персистентность:
data/добавлена в.gitignore, поэтому вы можете пересоздавать данные локально, не засоряя репозиторий.
Related MCP server: GraphQL Schema Explorer
Настройка
Установите переменные окружения. Вы можете начать с .env.example.
Конфигурация окружения:
GRAPHQL_EMBED_API_KEY(илиOPENAI_API_KEY)GRAPHQL_EMBEDDINGS_URL(полный URL для эмбеддингов)GRAPHQL_EMBED_MODELGRAPHQL_EMBED_API_KEY_HEADER/GRAPHQL_EMBED_API_KEY_PREFIXGRAPHQL_EMBED_HEADERS(строка JSON-объекта для дополнительных заголовков) Авторизация эндпоинта (при использованииGRAPHQL_ENDPOINT_URL):GRAPHQL_ENDPOINT_HEADERS(строка JSON-объекта, объединяется с любыми флагами--header)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 src/server.pyЗапуск MCP-сервера
python3 src/server.py # SSE on 127.0.0.1:8000/sse by default
python3 src/server.py --transport sse # explicit SSE
python3 src/server.py --transport streamable-http # Streamable HTTP on 127.0.0.1:8000/mcp
# Or: point at a live GraphQL endpoint (requires introspection enabled)
python3 src/server.py --endpoint https://api.example.com/graphql
# Endpoint auth headers (repeat --header)
python3 src/src/server.py --endpoint https://api.example.com/graphql --header "Authorization: Bearer $TOKEN"
# Options: --host 0.0.0.0 --port 9000 --log-level DEBUG --mount-path /myappТест локального эндпоинта (пример сервера в репозитории):
# Terminal 1
python3 examples/graphql_test_server/server.py
# Terminal 2
python3 src/server.py --transport sse --endpoint http://127.0.0.1:4000/graphqlИнструменты:
list_types(query, limit=5)— поиск по сходству эмбеддингов среди узлов полей GraphQL. Результаты возвращаются по оценке косинусного сходства и включаютcoordinates(массив шагов пути отQuery), а такжеqueryдля полейQueryиselectдля вложенных полей объектов.run_query(query)— если установлен--endpoint, проксирует запрос к эндпоинту; в противном случае проверяет/выполняет его относительно локальной схемы (без резолверов; в основном для проверки валидации/структуры, данные возвращаются как null). И индексация, и выполнение запросов используют одну и ту же модель эмбеддингов (по умолчаниюtext-embedding-3-small, можно переопределить через конфиг/окружение или--model).
Ранжирование (list_types):
Результаты ранжируются исключительно по косинусному сходству эмбеддингов поискового текста индексированных узлов полей.
Пример вывода list_types:
[
{
"field": "users",
"summary": "Query.users(limit: Int) -> [User!]!",
"coordinates": ["Query.users(limit: <Int>)"],
"query": "query { users(limit: <Int>) { id name orders { id total status } } }"
},
{
"type": "Order",
"field": "total",
"summary": "Order.total -> Float!",
"coordinates": ["Query.user(id: <ID!>)", "User.orders", "Order.total"]
},
{
"type": "User",
"field": "orders",
"summary": "User.orders -> [Order!]!",
"coordinates": ["Query.user(id: <ID!>)", "User.orders"],
"select": "orders { id total status }"
}
]Примечания:
python3 src/server.pyпо умолчанию использует транспортsse; передайте--transport streamable-http, если хотите использовать HTTP.Вы также можете установить переменные окружения с префиксом
FASTMCP_(например,FASTMCP_HOST,FASTMCP_PORT,FASTMCP_LOG_LEVEL) для переопределения значений по умолчанию.Сервер гарантирует, что индекс схемы построен при запуске; если вычисляются эмбеддинги, выводится простой индикатор выполнения. Установите
GRAPHQL_EMBED_BATCH_SIZEдля настройки размера пакета.Сервер предоставляет MCP-инструкции (переопределяются через
MCP_INSTRUCTIONS), которые описывают сервер как уровень абстракции и указывают LLM использоватьlist_types, а затемrun_queryс минимальным количеством вызовов инструментов.
Быстрый тест с помощью MCP Inspector
Требуется наличие npm/npx в PATH.
Подключение к уже запущенному SSE-серверу
В одном терминале (запуск сервера):
python3 src/server.py --transport sse --port 8000В другом терминале (запуск Inspector и указание на /sse):
npx @modelcontextprotocol/inspector --transport sse --server-url http://127.0.0.1:8000/sseНастройка в Claude Desktop / CLI
Если вы запускаете этот сервер локально через SSE (по умолчанию), укажите Claude URL /sse.
claude mcp add --transport sse graphql-mcp http://127.0.0.1:8000/sseВы также можете настроить его через JSON (например, файл конфигурации):
{
"mcpServers": {
"graphql-mcp": {
"type": "sse",
"url": "http://127.0.0.1:8000/sse"
}
}
}Если вы выставляете этот сервер за авторизацией, передайте заголовки:
claude mcp add --transport sse private-graphql http://127.0.0.1:8000/sse \
--header "Authorization: Bearer your-token-here"This server cannot be deployed
Maintenance
Related MCP Connectors
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Ingest, manage, and retrieve documents for RAG-powered AI applications
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Related MCP Servers
- AlicenseAqualityFmaintenancePowers AI agents with indexed blockchain data from The Graph, enabling them to fetch subgraph schemas and execute GraphQL queries against blockchain data.29MIT
- FlicenseNot gradedqualityDmaintenanceProvides intelligent introspection and exploration of any GraphQL API schema with fuzzy search, type discovery, and field-level information to help understand and navigate GraphQL APIs.-
- AlicenseBqualityDmaintenanceEnables AI assistants to execute GraphQL queries and retrieve schema information from any GraphQL endpoint.215 npm8MIT
- AlicenseAqualityDmaintenanceProvides comprehensive GraphQL introspection, filtering, and query/mutation execution with safety controls. Enables AI agents to explore and interact with GraphQL APIs through natural language.79 npm1MIT