Skip to main content
Glama

infocepo-infra-mcp

MCP server for infocepo infrastructure services. The HTTP server exposes the current, stateless Streamable HTTP transport at /mcp, legacy SSE at /sse, and an OpenAPI facade for diagnostics and direct tool calls.

Requirements

  • Linux

  • Python 3.11 or newer

  • uv

The same installation works on x86_64 H100/DGX and aarch64 DGX Spark hosts. This project does not install or pin CUDA drivers.

Related MCP server: openclaw-tools-mcp

Install and run

./install.sh                         # safe to repeat; also upgrades dependencies
cp .env.example .env
# Edit .env, then export it into the process environment:
set -a; source .env; set +a
./run.sh 0.0.0.0 8085               # omit PORT to select a free port

The virtual environment is stored at ~/venv/infocepo-infra-mcp, or at $VENV_DIR when that variable is set. run.sh stays in the foreground and handles termination normally. It starts infocepo_mcp.sse_server, not the stdio entry point.

Confirm that the server is running:

curl http://localhost:8085/health

When API_TOKEN is configured, connect an MCP client with either supported authentication header:

URL: http://localhost:8085/mcp
Authorization: Bearer <API_TOKEN>

X-API-Key: <API_TOKEN> is accepted as an alternative. The health endpoint is always public. If API_TOKEN is unset, all endpoints are public; this is useful for local development but is not recommended on an exposed interface.

systemd example

Because .env is loaded by the Python process but shell variables in it are not automatically exported, use systemd's EnvironmentFile support:

[Service]
WorkingDirectory=/path/to/infocepo-infra-mcp
EnvironmentFile=/path/to/infocepo-infra-mcp/.env
ExecStart=/bin/bash /path/to/infocepo-infra-mcp/run.sh 127.0.0.1 8085
Restart=on-failure

Configuration

The two API keys have different purposes:

  • API_TOKEN optionally protects this server's MCP, SSE, and OpenAPI routes.

  • INFOCEPO_API_KEY authenticates calls from tools to the upstream infocepo LLM, audio, image, and diarization services. Tools that do not use those services can run without it.

Additional credentials enable service-specific tools:

Variable

Used by

Required

INFOCEPO_CHROMA_TOKEN

chromadb_*

For ChromaDB tools

INFOCEPO_S3_ACCESS_KEY

s3_*

For S3 tools

INFOCEPO_S3_SECRET_KEY

s3_*

For S3 tools

INFOCEPO_REGISTRY_USER

registry_list

Optional; defaults to user

INFOCEPO_REGISTRY_PASSWORD

registry_list

For registry access

INFOCEPO_CREDENTIALS_FILE

All upstream credentials

Optional JSON alternative to environment variables

MCP_HOST

HTTP listener

Optional; defaults to 0.0.0.0

MCP_PORT

HTTP listener

Optional; defaults to 8085 when launching the module directly

VENV_DIR

Installer and run script

Optional virtual-environment location

The credentials JSON file accepts api_key, chroma_token, s3_access_key, s3_secret_key, registry_user, and registry_password keys. Environment variables are loaded first; values present in the JSON file override them.

HTTP endpoints

Endpoint

Methods

Purpose

/health

GET

Public liveness response and tool count

/mcp

GET, POST, DELETE

Stateless Streamable HTTP MCP transport

/sse

GET

Legacy SSE MCP connection

/messages

POST

Legacy SSE client messages

/openapi.json

GET

OpenAPI description of direct tool routes

/sse/openapi.json

GET

Redirect used by Open WebUI probes

/tools/{tool_name}

POST

Invoke one tool through the OpenAPI facade

Except for /health and CORS preflight requests, all endpoints require API_TOKEN when it is configured.

Tools

The server currently publishes 19 tools:

Area

Tools

Wiki discovery

infra_list_services, infra_refresh_discovery, infra_read_wiki, infra_parse_wiki

LLM and vision

llm_chat, llm_vision

Audio

stt_transcribe, tts_speech, diarize_audio

Images and embeddings

image_generate, embeddings_create

ChromaDB

chromadb_collections, chromadb_search, chromadb_upsert

Summary

summary_text

Registry

registry_list

S3

s3_list, s3_upload, s3_download

The four discovery tools all use the same MediaWiki API. A failure reported by all four therefore normally identifies one shared wiki upstream/path problem; it does not show that the LLM, audio, image, ChromaDB, registry, or S3 tools are unavailable. Discovery responses include an upstream object containing the failing URL, HTTP status when available, and failure kind.

Open WebUI and MCPO

MCPO operations have names such as call_infra_list_services. The call_ prefix belongs to MCPO's generated OpenAPI operation and is not part of the MCP tool name (infra_list_services).

Start the provided bridge with:

docker compose -f docker-compose.mcpo.yml up -d
docker compose -f docker-compose.mcpo.yml logs -f mcpo

The sample compose file exposes MCPO at http://localhost:8000; its OpenAPI document is at /openapi.json and Swagger UI is at /docs. The checked-in mcpo-config/config.json connects MCPO to http://host.docker.internal:8085/mcp. If the MCP server has API_TOKEN set, add the same bearer token to that file's headers object, for example:

"headers": {
  "Authorization": "Bearer replace-me"
}

MCPO_API_KEY is conceptually separate from API_TOKEN: it protects MCPO's generated OpenAPI API and is configured on the MCPO process/client. The sample compose file currently passes its MCPO key directly with --api-key.

Check each layer independently:

curl http://localhost:8085/health
curl -H "Authorization: Bearer $API_TOKEN" http://localhost:8085/openapi.json
curl -H "Authorization: Bearer $MCPO_API_KEY" http://localhost:8000/openapi.json
curl "https://infocepo.com/wiki/api.php?action=query&titles=Main_Page&format=json"

Other entry points

The package also installs infocepo-mcp, the stdio transport implemented by infocepo_mcp.server, and infocepo-mcp-http, an alias for the HTTP server. For normal network operation, prefer run.sh or infocepo-mcp-http.

Tests

uv run pytest

Available Tools

19 tools
chromadb_collectionsB

List all ChromaDB collections in the vector database.

NameRequiredDescriptionDefault
envNoEnvironment: prod (default), lab
chromadb_upsertC

Upsert documents (with embeddings) into a ChromaDB collection.

NameRequiredDescriptionDefault
envNoEnvironment: prod (default), lab
idsYesList of unique IDs for each document
documentsYesList of text documents to store
metadatasNoList of metadata dicts for each document
collectionYesCollection name (created if it doesn't exist)
diarize_audioB

Speaker diarization: identify and separate different speakers in an audio file.

NameRequiredDescriptionDefault
audio_urlNoURL to download audio from
audio_pathNoLocal path to audio file (mp3, wav, etc.)
embeddings_createB

Generate text embeddings using BGE-M3 model for RAG/search. Returns vector arrays.

NameRequiredDescriptionDefault
modelNoEmbedding model (default: bge-m3)bge-m3
textsYesList of texts to embed
image_generateB

Generate images from text prompts using OpenDalle model.

NameRequiredDescriptionDefault
nNoNumber of images to generate
sizeNoImage size (e.g., '1024x1024', '1024x768')1024x1024
promptYesImage description prompt
infra_list_servicesA

List all infocepo.com infrastructure services with status and endpoints.

NameRequiredDescriptionDefault
envNoEnvironment to show endpoints for: prod, lab, devprod
include_statusNoInclude health check status (requires HTTP call)
infra_parse_wikiA

Parse wiki wikitext and return structured sections. Returns list of sections with title and content.

NameRequiredDescriptionDefault
titleYesWiki page title
infra_read_wikiB

Read a page from the infocepo.com wiki. Useful for discovering new services, configurations, or documentation.

NameRequiredDescriptionDefault
titleYesWiki page title (e.g., 'Main_Page', 'Page_Name')
sectionNoOptional: extract only this section (e.g., 'Catalogue rapide des services')
infra_refresh_discoveryA

Re-fetch and re-parse the wiki Main_Page to discover any changes to services/endpoints.

NameRequiredDescriptionDefault

No parameters

llm_chatC

Chat completions using the infocepo LLM API (OpenAI-compatible). Supports chat, reasoning, code generation.

NameRequiredDescriptionDefault
modelNoModel name: ai-default, ai-thinking, ai-fast, ai-embedding, ai-stt, ai-tts, ai-image, ai-vision
messagesYesChat messages array: [{role: 'user'|'system'|'assistant', content: 'text'}]
max_tokensNoMax tokens in response.
temperatureNoSampling temperature (0-2). Default 0.7.
llm_visionA

Image-to-text / OCR / VLM using the ai-vision model. Send an image (URL or base64) and get a description.

NameRequiredDescriptionDefault
promptNoQuestion about the image, e.g. 'Describe this image'Décris cette image.
image_b64NoBase64-encoded image content (if no image_url)
image_urlNoImage URL (http://...) or data:image/... base64
registry_listC

List Docker images from the infocepo private registry.

NameRequiredDescriptionDefault
nNoNumber of results (for pagination)
lastNoName of last entry for pagination
s3_downloadB

Download a file from S3-compatible storage.

NameRequiredDescriptionDefault
keyYesObject key (path in bucket)
bucketYesBucket name
save_pathYesLocal path to save the file
s3_listB

List objects in an S3-compatible storage bucket.

NameRequiredDescriptionDefault
bucketYesBucket name (e.g., 'ORG')
prefixNoOptional prefix/filter
s3_uploadB

Upload a file to S3-compatible storage.

NameRequiredDescriptionDefault
keyYesObject key (path in bucket)
bucketYesBucket name
file_pathYesLocal file path to upload
stt_transcribeB

Transcribe audio to text using Whisper model. Accepts file path, URL, or base64 audio.

NameRequiredDescriptionDefault
modelNoModel name (default: whisper-1)whisper-1
languageNoLanguage code (e.g., 'fr', 'en'). Auto-detect if omitted.
audio_b64NoBase64-encoded audio content
audio_urlNoURL to download audio from
audio_pathNoLocal path to audio file (opus, ogg, wav, mp3, m4a)
summary_textB

Summarize long texts using the infocepo summary API.

NameRequiredDescriptionDefault
textYesText to summarize
max_lengthNoMax summary length in characters
tts_speechA

Text-to-speech synthesis using OmniVoice model. Returns audio in opus/wav format.

NameRequiredDescriptionDefault
textYesText to synthesize
voiceNoVoice name (e.g., 'coral', 'sage'). Default 'coral'.coral
instructionsNoVoice direction (e.g., 'Speak in a cheerful tone')
response_formatNoOutput format: opus, mp3, wav, flac, pcmopus

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 19 tool updatesv0.1.0
    • First observedchromadb_collections
    • First observedchromadb_search
    • First observedchromadb_upsert
    • First observeddiarize_audio
    • First observedembeddings_create
    • First observedimage_generate
    • First observedinfra_list_services
    • First observedinfra_parse_wiki
    • First observedinfra_read_wiki
    • First observedinfra_refresh_discovery
    • First observedllm_chat
    • First observedllm_vision
    • First observedregistry_list
    • First observeds3_download
    • First observeds3_list
    • First observeds3_upload
    • First observedstt_transcribe
    • First observedsummary_text
    • First observedtts_speech

TDQS

B3.3/5.0

Scored across 19 tools

Disambiguation5/5

Each tool targets a distinct operation within its domain (wiki, LLM, audio, vector DB, registry, S3). Even tools that might seem similar (e.g., infra_read_wiki and infra_parse_wiki) have clear functional differences. No overlapping purposes.

Naming Consistency5/5

All tools follow a consistent lowercase_underscore naming pattern with domain-specific prefixes (infra_, llm_, stt_, tts_, etc.). Verbs and nouns are used predictably, making the tool surface easy to navigate.

Tool Count3/5

With 19 tools covering multiple distinct domains (infrastructure, AI, storage, registry), the count is on the high side. While each domain has a reasonable subset, the server would benefit from splitting into focused services.

Completeness2/5

The tool surface is shallow across several domains: wiki/infra is read-only, vector DB lacks collection management, S3 lacks delete/bucket operations, and Docker registry only lists images. Significant gaps exist for full lifecycle management.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers