Get Started
Quickstart: Your First Success
The fastest path to a running MCP server on your own machine. Follow each step in order. By the end, the server will answer a health check and pass the smoke test β your first concrete win.
π― What you'll be able to do
- Install the prerequisites on Windows
- Open the reference project in VS Code
- Create and activate a Python virtual environment
- Install dependencies and start the server locally
- Run the smoke test and inspect the /mcp endpoint
- Recognise exactly what success looks like
The first-success path
Terminal β New Terminal, or press Ctrl + ` (backtick).1. Install prerequisites
Install these once. The Development Environment chapter explains each in detail; for now, just get them on your machine.
| Tool | Why you need it |
|---|---|
| VS Code | Editor and integrated terminal |
| Python 3.11 or later | Runs the MCP server |
| Git | Source control |
| Node.js LTS | Runs MCP Inspector via npx |
| PowerShell 7 (or Windows PowerShell) | Runs the project scripts |
python --version. You should see Python 3.11.x or higher.2. Open the project in VS Code
Open the reference implementation folder. Always quote Windows paths that contain spaces:
cd "C:\Users\uacholonu\OneDrive - Microsoft\Documents\DevZone\CoworkDev\Plugin Projects\My MCP Builds\Microsoft Scout Opus 4.8\jira-mcp-copilot-studio"
code .3. Create and activate a virtual environment
A virtual environment (βvenvβ) is a private folder of Python packages for this project only. It stops this project's dependencies from clashing with anything else on your computer.
python -m venv .venv
.\.venv\Scripts\Activate.ps1When activation works, your prompt is prefixed with (.venv).
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned4. Install dependencies
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"The -e ".[dev]" part installs the project itself (in editable mode) plus its development tools like the test runner and linter.
5. Start the server
The included helper script does steps 3β5 for you if you skipped them: it creates .venv if missing, installs dependencies, copies .env.example to .env, and starts the server.
.\scripts\run_local.ps1Starting MCP server on http://localhost:8080/mcp ...
6. Check health
Leave the server running. Open a second terminal and ask it if it's alive:
Invoke-RestMethod http://localhost:8080/healthz
Invoke-RestMethod http://localhost:8080/readyzstatus version ------ ------- ok 1.0.0 status server ------ ------ ready microsoft-scout-jira-mcp
/healthz means βthe process is alive.β /readyz means βit's ready to take traffic.β Cloud platforms use these two probes to decide whether to route requests to your server.7. Run the smoke test
A smoke test is a tiny end-to-end check. This one confirms the essentials without needing a real Jira token.
python scripts\smoke.py| The smoke test checks⦠| Expected result |
|---|---|
/healthz | Returns 200 locally |
/mcp | Without a bearer token, returns 401 (good β it refuses anonymous calls) |
| MCP initialize | Returns 200 with a placeholder bearer |
| tools/list | Checked only when you supply a real Atlassian token |
401 Unauthorized, but it proves the server correctly refuses requests with no token. That refusal is a security feature.8. Inspect the /mcp endpoint
Use the official MCP Inspector to see the transport and discover tools:
npx @modelcontextprotocol/inspector| Inspector setting | Value |
|---|---|
| Transport | Streamable HTTP |
| URL | http://localhost:8080/mcp |
What success looks like
- The server prints its startup line and keeps running.
/healthzreturnsstatus: ok.- The smoke test reports a pass.
/mcpwithout a token returns401; with the placeholder bearer,initializereturns200.
β Concept check
You started the server and /healthz works, but the smoke test fails on the /mcp step saying it got 200 instead of 401. What does that suggest?
π Chapter summary
- A virtual environment keeps this project's packages separate from the rest of your system.
run_local.ps1automates setup and starts the server on port 8080./healthzand the smoke test prove the server is alive and that/mcpcorrectly rejects unauthenticated calls.- Hitting Jira for real needs an Atlassian token β that comes later.