octo-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@octo-mcp-serverecho back the message 'Hello, the system is operational!'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
octo-mcp-server
A Python MCP server hosted with the Azure Functions MCP extension. The app exposes National Weather Service tools through Azure Functions MCP tool triggers.
This repository follows the Azure Functions MCP extension model, not the self-hosted custom-handler model.
Tools
Tool | Description |
| Returns a message unchanged |
| Gets a NWS forecast for a US latitude and longitude |
| Gets current NWS observations for a US latitude and longitude |
| Gets active NWS alerts for a two-letter US state |
The weather tools use the public National Weather Service API. No API key is required, but locations must be in the United States.
Project Structure
function_app.py # Azure Functions MCP tool triggers
host.json # Azure Functions host config with experimental MCP extension bundle
local.settings.example.json # Local settings template; copy to local.settings.json
requirements.txt # Azure deployment dependencies
pyproject.toml # Local uv project metadata
.funcignore # Files excluded from deployment packages
README.mdThe important files for this deployment model are:
function_app.pyhost.jsonlocal.settings.jsonrequirements.txt.funcignore
Azure Setup
Create the Function App in the Azure Portal.
Use these settings:
Setting | Value |
Hosting plan | Flex Consumption |
Operating system | Linux |
Instance memory | 512 MB is fine for this sample |
Runtime stack | Python |
Python version | 3.11 or 3.12 |
Storage | Create or select an Azure Storage account |
Application Insights | Recommended |
Authentication level | Function |
After creating the app, confirm the Overview page shows:
A domain like
<your-function-name>.azurewebsites.netLinux as the operating system
Flex Consumption as the plan
Local Setup
Install prerequisites:
Python 3.11 or 3.12
Azure Functions Core Tools v4
Azure CLI
uv
Node.js
Podman or Docker
Copy local settings:
Copy-Item local.settings.example.json local.settings.jsonCreate the Python environment:
uv venv
uv pip install -r requirements.txtIf you prefer to add packages through uv:
uv add azure-functions httpxRun Local Storage
Azure Functions needs storage even when running locally. This example uses Azurite through Podman.
Start the Podman machine:
podman machine startRun Azurite:
podman run -d --name azurite `
-p 10000:10000 `
-p 10001:10001 `
-p 10002:10002 `
mcr.microsoft.com/azure-storage/azuriteCheck the container:
podman ps -aIf the container already exists but is stopped:
podman start azuriteRun Locally
Start the function host:
func startExpected output includes a line similar to:
MCP server SSE endpoint: http://localhost:7071/runtime/webhooks/mcp/sseThe local MCP endpoint is:
http://localhost:7071/runtime/webhooks/mcp/sseTest Locally
Start MCP Inspector:
npx @modelcontextprotocol/inspectorOpen the Inspector URL that prints in the terminal, usually:
http://127.0.0.1:6274Connect to:
http://localhost:7071/runtime/webhooks/mcp/sseClick List Tools. You should see the four tools listed above.
Deploy To Azure
Sign in:
az loginSet the Function App values:
$FUNCTION_APP_NAME = "<your-function-name>"
$RESOURCE_GROUP = "<your-resource-group>"
$ZIP_FILE = "octo-mcp.zip"Create the deployment zip:
Remove-Item $ZIP_FILE -Force -ErrorAction SilentlyContinue
$exclude = @(
".venv",
".git",
".vscode",
".azurite",
"local.settings.json",
"__pycache__",
$ZIP_FILE
)
Get-ChildItem -Force |
Where-Object { $exclude -notcontains $_.Name } |
Compress-Archive -DestinationPath $ZIP_FILE -ForceConfirm the zip contains the required files:
tar -tf $ZIP_FILE | Select-String "function_app.py|host.json|requirements.txt|.funcignore"Deploy the zip with remote build:
az functionapp deployment source config-zip `
--src $ZIP_FILE `
--name $FUNCTION_APP_NAME `
--resource-group $RESOURCE_GROUP `
--build-remote trueAfter deployment, check the Function App in the Azure Portal. Under Functions, you should see:
echoget_weather_forecastget_current_conditionsget_weather_alerts
Test In Azure
In the Azure Portal, open the Function App.
Go to:
Functions > App keysUnder System keys, copy the key named:
mcp_extensionThe cloud MCP endpoint is:
https://<your-function-name>.azurewebsites.net/runtime/webhooks/mcp/sse?code=<mcp_extension_key>Start MCP Inspector:
npx @modelcontextprotocol/inspectorConnect to the cloud endpoint above and click List Tools.
Useful PowerShell Commands
View Function App deployment logs:
az webapp log tail `
--name $FUNCTION_APP_NAME `
--resource-group $RESOURCE_GROUPList app settings:
az functionapp config appsettings list `
--name $FUNCTION_APP_NAME `
--resource-group $RESOURCE_GROUP `
--output tableRestart the Function App:
az functionapp restart `
--name $FUNCTION_APP_NAME `
--resource-group $RESOURCE_GROUPTroubleshooting
Symptom | Fix |
| Install Azure Functions Core Tools v4 |
Local storage error | Start Azurite with Podman and confirm |
Tools do not appear locally | Confirm |
Tools do not appear in Azure | Confirm deployment succeeded and the Functions list shows the tool functions |
Cloud Inspector cannot connect | Confirm the URL includes |
| Confirm |
Notes
Do not set
FUNCTIONS_WORKER_RUNTIMEin Azure app settings for Flex Consumption through CLI commands. The portal/runtime stack config handles the cloud runtime. Keep it inlocal.settings.jsonfor local development.Do not use the old
/mcpendpoint for this repository. The MCP extension endpoint is/runtime/webhooks/mcp/sse.Do not deploy
local.settings.json.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/bscarberry/octo_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server