Ultra Wiki MCP
Remote MCP server enabling ChatGPT Workspace integration with the official Ultra Group Wiki (Wiki.js). Provides read-only search_pages and get_page tools to retrieve Markdown content with metadata.
README
Ultra Wiki MCP
Remote MCP Server somente leitura para conectar o ChatGPT Workspace à Wiki oficial do Grupo Ultra, hospedada em Wiki.js 2.x.
O servidor expõe search_pages para localizar documentação por texto livre e
get_page para devolver o Markdown original com metadados de origem. A Wiki
permanece a fonte da verdade; o MCP apenas fornece uma camada segura de acesso.
Estado atual
POST /mcp: transporte MCP Streamable HTTP, compatível com clientes MCP remotos.search_pages: busca por texto livre via GraphQLpages.search, com teto seguro.get_page: leitura porpathelocalevia GraphQLpages.singleByPath.GET /health: healthcheck sem consulta nem exposição de credenciais.- Autenticação de saída para Wiki.js com token Bearer somente leitura.
- OAuth 2.1 Resource Server em produção, com descoberta RFC 9728, JWT/JWKS e escopo.
- Bearer estático (
MCP_API_KEY) restrito ao desenvolvimento e MCP Inspector. - Inputs validados, timeout e limites de payload.
- Logs estruturados sem token ou conteúdo integral da página.
list_pages permanece pendente para completar o escopo da v0.1.
Pré-requisitos
- Node.js 22 ou superior, ou Docker.
- Token de API de uma conta de serviço do Wiki.js com permissão somente de leitura.
- Para produção, uma URL HTTPS pública para o endpoint MCP.
No Wiki.js, crie uma chave dedicada em Administration > API Access. Não use uma credencial administrativa. Conceda apenas a permissão necessária para ler as páginas que o ChatGPT deve consultar.
Configuração local
Copy-Item .env.example .env
Preencha no .env:
WIKI_API_TOKEN=token-da-conta-de-servico
MCP_AUTH_MODE=api-key
MCP_API_KEY=uma-chave-longa-para-proteger-o-endpoint
Depois execute:
npm install
npm run dev
O servidor inicia por padrão em http://localhost:3001:
Invoke-RestMethod http://localhost:3001/health
Testar com MCP Inspector
Com o servidor ativo, conecte um cliente MCP Streamable HTTP a:
http://localhost:3001/mcp
Envie o header:
Authorization: Bearer <MCP_API_KEY>
Pesquise primeiro:
{
"query": "admissão",
"limit": 10,
"locale": "pt-br"
}
Use o path de um resultado para chamar get_page:
{
"path": "/caminho-da-pagina",
"locale": "pt-br"
}
A resposta contém title, path, content, contentType, source, pageId,
locale, datas e autor da última atualização. Stack traces e credenciais nunca
são retornados pelo MCP.
Docker
Defina WIKI_API_TOKEN, as variáveis OAuth e a URL pública em MCP_BASE_URL, então:
docker compose up --build
A imagem usa Node LTS, build em múltiplos estágios e usuário não-root.
Publicação para o ChatGPT Workspace
Publique o serviço atrás de HTTPS e configure como URL remota:
https://seu-dominio.example.com/mcp
O transporte segue Streamable HTTP e o serviço atua como OAuth 2.1 Resource
Server. Ele publica Protected Resource Metadata, valida access tokens JWT pelo
JWKS do provedor corporativo e exige o escopo wiki.read. O provedor externo
(por exemplo, Entra ID, Auth0 ou Keycloak) continua responsável por login,
consentimento, Authorization Code + PKCE e emissão/renovação de tokens.
Produção exige MCP_AUTH_MODE=oauth, OAUTH_ISSUER_URL, OAUTH_JWKS_URL,
OAUTH_RESOURCE_URL e OAUTH_AUTHORIZATION_SCOPES. Para Microsoft Entra ID,
este último contém o scope totalmente qualificado solicitado pelo ChatGPT;
OAUTH_REQUIRED_SCOPES continua contendo o valor curto esperado no claim scp
do JWT. Veja a configuração completa em
docs/oauth.md e o roteiro operacional em DEPLOY.md.
A documentação oficial da OpenAI descreve Remote MCP Servers por server_url e
alerta para limitar tools e revisar os dados compartilhados:
MCP e Connectors.
Qualidade
npm test
npm run typecheck
npm run lint
npm run build
O schema GraphQL efetivamente encontrado e as decisões da descoberta estão em
docs/wikijs-schema.md.
O procedimento completo para testar, publicar por HTTPS e cadastrar no ChatGPT
Workspace está em DEPLOY.md.
Segurança
- Nunca commite
.envou tokens. - Não registre cabeçalhos
Authorizationnem conteúdo integral das páginas. - Não conceda escrita à conta de serviço desta versão.
- Não exponha o endpoint MCP sem autenticação em produção.
- Não reutilize
WIKI_API_TOKENcomo token OAuth nem envie esse segredo ao ChatGPT. - Não acesse o PostgreSQL diretamente.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.