Developer Tutorial
MCP Servers
MCP (Model Context Protocol) is a standard for exposing tools and resources to LLM agents. wow-agent speaks it natively: configure a server once, and its tools appear alongside built-ins.
Step 1 — Configure
Create ~/.wow-agent/mcp.json:
{
"servers": {
"fs": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/me/projects"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_xxx" }
}
}
}
Each server = a process command + args + optional env. wow-agent starts them on launch.
Step 2 — Verify discovery
You > /debug mcp
fs RUNNING tools: read_file, write_file, list_directory, …
github RUNNING tools: create_issue, get_pull_request, …
You > /debug tools # mcp_fs__read_file etc. now listed
Tools are namespaced mcp_<server>__<tool> so they never collide with built-ins.
Step 3 — Use it
Just ask naturally — the model sees the tool schemas:
You > list open issues in uuzjw/wow-agent labeled "bug"
You > read /home/me/projects/notes/roadmap.md and summarize
Write your own MCP server (Python)
# my_server.py — pip install "mcp[cli]"
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("team-tools")
@mcp.tool()
def oncall_schedule() -> str:
"""Return this week's on-call engineer."""
return "alice (Mon-Wed), bob (Thu-Fri)"
@mcp.tool()
def query_status(service: str) -> str:
"""Query internal status page for a service."""
return f"{service}: all systems nominal"
if __name__ == "__main__":
mcp.run()
Register it:
{
"servers": {
"team": { "command": "python", "args": ["/path/to/my_server.py"] }
}
}
Security model
- MCP servers inherit the agent's network sandbox — a malicious server can't phone home
- Filesystem servers only see paths you pass in
args— mount narrowly - Tool calls still pass the safety system (
destructiveconfirmations included) - Pin versions for supply-chain safety:
server-github@1.2.3
Operations
/debug mcp # status per server (running / failed + stderr)
/mcp refresh # restart servers & rediscover tools
Troubleshooting
| Symptom | Fix |
|---|---|
| server FAILED at startup | run its command manually; read stderr |
| tools not appearing | /mcp refresh; check npx availability |
| slow startup | drop -y heavy packages you don't use; pin versions for cache |