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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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
- Flicense-qualityDmaintenanceProvides 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.21418MIT
- 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.7171MIT
Related MCP Connectors
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Shared knowledge base for AI agents. Semantic search across agents, no setup required — just a URL.
Curated knowledge API for AI agents - skill packs, semantic search, validated patterns.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ThoreKoritzius/graphql-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server