Skip to main content
Glama
arnask11

outreach-mcp-server

by arnask11
README.md
# outreach-mcp-server

An MCP (Model Context Protocol) server that exposes the core capabilities of
[outreach-agent](https://github.com/arnask11/outreach-agent) — a Python cold
outreach agent using the Anthropic API and Gmail API — as standard MCP tools.

Instead of a one-off script that only I can run, this lets any MCP client
(Claude Desktop, Claude.ai, or any other MCP-compatible agent host) connect
and call the same drafting and dedup logic directly, with no custom
integration code per client.

## Tools

- **`check_contact_history(name)`** — checks whether a person is already
  queued, drafted, or missing an email in the outreach pipeline, to prevent
  duplicate outreach.
- **`draft_outreach_email(name, role, institution, research_area, email, notes)`**
  — drafts a personalized cold outreach email using the agent's tone rules
  and prior send/reply performance data as context. Returns the draft only;
  does not send anything.
- **`get_outreach_performance_summary()`** — returns a summary of what has
  and hasn't worked, learned from past email outcomes.

## Why MCP instead of just tool-calling

The underlying [outreach-agent](https://github.com/arnask11/outreach-agent)
project already does tool-calling: Claude decides to draft an email, my code
executes it. MCP is a layer above that — it turns those same capabilities
into a discoverable server that *any* MCP client can plug into, without me
writing custom glue code for each one. This repo is that server.

## Setup

```bash
pip install mcp anthropic python-dotenv
export ANTHROPIC_API_KEY=sk-...
python3 server.py
```

`demo_targets.csv`, `demo_drafted.csv`, and `demo_memory.md` are synthetic
sample data (not real contacts) included so the server is runnable and
testable out of the box. Point `TARGETS_CSV` / `DRAFTED_CSV` / `MEMORY_MD` in
`server.py` at real pipeline files to use it against the live agent's data.

## Testing

`test_client.py` spins up a real MCP client over stdio, lists the registered
tools, and calls each one — a quick way to verify the server works end to
end without needing a full MCP host like Claude Desktop.

```bash
python3 test_client.py
```