GEO/SEO content pipeline MCP: plan, write, gate-check, publish, submit, monitor AI visibility.
Runs on your machine from its package; the steps are below.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @tengence/geo-mcp
MCP client config
{
"mcpServers": {
"tengence-geo-agent": {
"command": "npx",
"args": [
"-y",
"@tengence/geo-mcp"
]
}
}
}GEO/SEO content production & publishing engine — full-pipeline automation from content planning → writing & ingest → gate checks → WordPress publishing → search submission → GEO monitoring. Three usage modes: CLI / MCP (AI clients) / built-in agent runtime loop. Default storage is a single-file multi-tenant SQLite (auto-initialized) with optional MySQL; designed for open source and multi-site use.
AI clients (any MCP-capable harness)
│ MCP (stdio or Streamable HTTP + Bearer)
▼
@tengence/geo-mcp 29 tools (workspace/site/article/check/publish/plan/image/monitor/db/search/diagnose/util/standards)
▼
@tengence/geo-cli 21 tengence-geo-* commands
▼
@tengence/geo-sdk 15-domain capability layer (site/db/wp/content/images/search/…)
▼
SQLite (auto-init) or MySQL (tengence_geo_*, isolated from prod tengence_omni_*)
| Package | Form | Description |
|---|---|---|
@tengence/geo-sdk | Library | 15-domain capability layer, lazy-loaded, single require entry |
@tengence/geo-cli | CLI | 21 bins (ingest / gate / publish / images / submission / monitor / plan) |
@tengence/geo-mcp | MCP Server | 29 tools, stdio + HTTP dual transport, Bearer auth |
@tengence/geo-agent | Agent launcher | Runs once DEEPSEEK_API_KEY is set (HARNESS=dsh|opencode|pi) |
npm install
cp -R examples/site-template ~/tengence/sites/my-site
cd ~/tengence/sites/my-site && cp .env.example .env # fill in WP credentials / tokens
# Full CLI pipeline
export SITES_ROOT=~/tengence/sites
tengence-geo-article-ingest hello-geo ./hello-geo.md --site my-site --research ./hello-geo.research.md
tengence-geo-check-article hello-geo --site my-site
# MCP (any MCP-capable client; see docs/mcp-platforms.md)
node packages/geo-mcp/bin/geo-mcp.js # stdio
GEO_MCP_TOKEN=sk-xxx node packages/geo-mcp/bin/geo-mcp-http.js # HTTP
# Agent (runs once the API key is set)
export DEEPSEEK_API_KEY=sk-xxx
npx -y @tengence/geo-agent
Full onboarding: docs/getting-started.md.
@tengence/geo-sdk, consumed via the standards_list / standards_read / article_draft MCP tools (the requirements an article must satisfy)npm run build # workspace consistency check
npm test # 138 tests (all green on SQLite)
npm run geo:sdk-smoke # SDK smoke test
SITES_ROOT/<site>/.env (gitignored); the repo ships only the .env.example template.tengence_omni_*) is never written by this repo; the new repo uniformly uses tengence_geo_*.GEO_MCP_TOKEN (Bearer).MIT