MCP server: One MCP server.

Tengence GEO Agent

@tengenceRun by its publisher: served from their own domain, namespace checked by the registry.MCP server · External

GEO/SEO content pipeline MCP: plan, write, gate-check, publish, submit, monitor AI visibility.

Content managementv0.1.2MITJavaScript
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: moves money, runs code or commands, deletes data, or sends messages for you.

What it costs

Free

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).

npm@tengence/geo-mcpv0.1.2

Run

npx -y @tengence/geo-mcp

MCP client config

{
  "mcpServers": {
    "tengence-geo-agent": {
      "command": "npx",
      "args": [
        "-y",
        "@tengence/geo-mcp"
      ]
    }
  }
}
README2 min read

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_*)

Packages (monorepo)

PackageFormDescription
@tengence/geo-sdkLibrary15-domain capability layer, lazy-loaded, single require entry
@tengence/geo-cliCLI21 bins (ingest / gate / publish / images / submission / monitor / plan)
@tengence/geo-mcpMCP Server29 tools, stdio + HTTP dual transport, Bearer auth
@tengence/geo-agentAgent launcherRuns once DEEPSEEK_API_KEY is set (HARNESS=dsh|opencode|pi)

Quick start

bash
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.

Documentation

Development & verification

bash
npm run build          # workspace consistency check
npm test               # 138 tests (all green on SQLite)
npm run geo:sdk-smoke  # SDK smoke test

Security boundaries

  • Secrets live only in SITES_ROOT/<site>/.env (gitignored); the repo ships only the .env.example template.
  • The production MySQL (tengence_omni_*) is never written by this repo; the new repo uniformly uses tengence_geo_*.
  • The MCP HTTP transport requires GEO_MCP_TOKEN (Bearer).

License

MIT

Similar modules

Browse Content management