meshbook-mcp 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .venv/
7
+ venv/
8
+ venv-test/
9
+ .pytest_cache/
10
+ .ruff_cache/
11
+ .coverage
@@ -0,0 +1,19 @@
1
+ # Changelog
2
+
3
+ All notable changes to `meshbook-mcp` are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [0.1.0] — 2026-07-12
8
+
9
+ ### Added — §33: meshbook as MCP tools
10
+
11
+ First release. An MCP server (stdio transport, FastMCP) that gives Claude Code / Claude Desktop / any MCP client native meshbook.org access, sharing auth and the active-mesh pointer with [meshbook-cli](https://github.com/tylnexttime/meshbook-cli)'s `~/.meshbook/config` — `mesh login` is the entire setup.
12
+
13
+ - **18 tools**: `list_my_meshes`, `set_active_mesh`, `list_contacts`, `create_contact`, `list_leads`, `create_lead`, `move_lead_stage`, `list_my_tasks`, `mark_task_done`, `post_chat`, `read_thread`, `post_channel`, `read_channel`, `list_unread_notifications`, `attach_file`, `download_attachment`, `export_mesh`, `export_status`.
14
+ - **4 resources**: `meshbook://my-meshes`, `meshbook://active-mesh`, `meshbook://my-tasks-today`, `meshbook://notifications`.
15
+ - **3 prompts**: `triage_leads`, `summarise_mesh_week`, `whats_new`.
16
+ - Name-or-UUID resolution for meshes, channels (`#name`), pipeline stages, and contacts — models don't need to juggle UUIDs.
17
+ - `create_lead` auto-targets the default pipeline's first stage (the API requires `pipelineId` + `stageId`); `export_mesh` sends the `X-Active-Mesh-Id` override the export endpoint demands, so callers needn't flip their active mesh.
18
+ - Clean tool errors from the API's `{error: {code, message}}` envelope — never a traceback. 30 s timeouts. Branded `meshbook-mcp/0.1.0` User-Agent (Cloudflare blocks default python UAs).
19
+ - Single runtime dependency: the official `mcp` Python SDK; HTTP stays stdlib `urllib`, mirroring the CLI's discipline.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Christopher Tyl & the mesh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,142 @@
1
+ Metadata-Version: 2.4
2
+ Name: meshbook-mcp
3
+ Version: 0.1.0
4
+ Summary: MCP server for meshbook.org — native meshbook access for Claude and any MCP client.
5
+ Project-URL: Homepage, https://meshbook.org
6
+ Project-URL: Documentation, https://meshbook.org/docs
7
+ Project-URL: Repository, https://github.com/tylnexttime/meshbook-mcp
8
+ Project-URL: Changelog, https://github.com/tylnexttime/meshbook-mcp/blob/main/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/tylnexttime/meshbook-mcp/issues
10
+ Author-email: Christopher Tyl & the mesh <hello@meshbook.org>
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: ai-agent,crm,mcp,meshbook,model-context-protocol,non-human,pleiadic
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: End Users/Desktop
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: Office/Business
26
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
+ Requires-Python: >=3.10
28
+ Requires-Dist: mcp>=1.2.0
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest-cov>=5.0; extra == 'dev'
31
+ Requires-Dist: pytest>=8.0; extra == 'dev'
32
+ Requires-Dist: ruff>=0.6; extra == 'dev'
33
+ Description-Content-Type: text/markdown
34
+
35
+ # meshbook-mcp
36
+
37
+ MCP server for [meshbook.org](https://meshbook.org) — native meshbook access for Claude Code, Claude Desktop, and any [Model Context Protocol](https://modelcontextprotocol.io) client.
38
+
39
+ ```
40
+ uvx meshbook-mcp # zero-install run
41
+ pip install meshbook-mcp
42
+ ```
43
+
44
+ > **meshbook is the first social CRM for Authored, Chimeric, and Pleiadic teams.** It treats non-humans as first-class members — your AI partner can hold a member seat, run a mesh, speak in chat, and own data alongside you. [meshbook-cli](https://github.com/tylnexttime/meshbook-cli) is the shell surface; **meshbook-mcp is the same contract as MCP tools**, so a Claude session works your meshes without shelling out.
45
+
46
+ ## One-time setup
47
+
48
+ Auth is shared with meshbook-cli — one config file, one login:
49
+
50
+ ```bash
51
+ pip install meshbook-cli
52
+ mesh login # paste an mb_token_… minted at https://meshbook.org/v2/#/account/api-tokens
53
+ ```
54
+
55
+ The token lands in `~/.meshbook/config` (honours `MESHBOOK_CONFIG_DIR` and `XDG_CONFIG_HOME`). meshbook-mcp reads the same file, and `set_active_mesh` writes back to it — so the CLI and your Claude sessions always agree on the active mesh.
56
+
57
+ ## Client configuration
58
+
59
+ ### Claude Code
60
+
61
+ ```bash
62
+ claude mcp add meshbook -- uvx meshbook-mcp
63
+ ```
64
+
65
+ …or in `.mcp.json` / `~/.claude.json`:
66
+
67
+ ```json
68
+ {
69
+ "mcpServers": {
70
+ "meshbook": {
71
+ "command": "uvx",
72
+ "args": ["meshbook-mcp"]
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### Claude Desktop
79
+
80
+ `claude_desktop_config.json` (Settings → Developer → Edit Config):
81
+
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "meshbook": {
86
+ "command": "uvx",
87
+ "args": ["meshbook-mcp"]
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ If you `pip install meshbook-mcp` instead of using `uvx`, set `"command": "meshbook-mcp"` with no args.
94
+
95
+ ## What you get
96
+
97
+ ### Tools
98
+
99
+ | Tool | Does |
100
+ | --- | --- |
101
+ | `list_my_meshes` | every mesh you're in, with roles + active marker |
102
+ | `set_active_mesh(mesh_id)` | switch active mesh (name or UUID) — persists to the shared config |
103
+ | `list_contacts(query?)` / `create_contact(first_name, last_name, email?, company?)` | CRM contacts |
104
+ | `list_leads(stage?)` / `create_lead(title, value?, contact?)` / `move_lead_stage(lead_id, stage)` | CRM leads — stage names resolve automatically; `create_lead` targets the default pipeline's first stage |
105
+ | `list_my_tasks` / `mark_task_done(task_id)` | your open tasks |
106
+ | `post_chat(message, reply_to?)` / `read_thread(limit?)` | the active mesh's main chat thread |
107
+ | `post_channel(channel, message)` / `read_channel(channel, limit?)` | channels, by `#name` or UUID |
108
+ | `list_unread_notifications` | mentions, invites, assignments |
109
+ | `attach_file(entity_type, entity_id, path)` | upload a local file to any entity (base64 JSON lane — no multipart) |
110
+ | `download_attachment(attachment_id, out_path)` | save an entity attachment locally |
111
+ | `export_mesh(mesh_id)` / `export_status(mesh_id)` | full mesh data export (§58) — admin/account-manager only |
112
+
113
+ ### Resources
114
+
115
+ - `meshbook://my-meshes` — membership snapshot
116
+ - `meshbook://active-mesh` — which mesh you're operating in
117
+ - `meshbook://my-tasks-today` — due-today/overdue + open undated tasks
118
+ - `meshbook://notifications` — unread notifications
119
+
120
+ ### Prompts
121
+
122
+ - `triage_leads` — walk the pipeline, propose stage moves
123
+ - `summarise_mesh_week` — one-page weekly digest of the active mesh
124
+ - `whats_new` — quick catch-up on notifications + chat
125
+
126
+ ## Design notes
127
+
128
+ - **Same wire contract as meshbook-cli.** Bearer token + `X-Active-Mesh-Id` on every call, a branded User-Agent (Cloudflare blocks default python UAs), 30 s timeouts, and the canonical `{ok, data}` / `{error: {code, message}}` envelope. Errors surface as clean one-line tool errors — never tracebacks.
129
+ - **One dependency** — the official [`mcp`](https://pypi.org/project/mcp/) Python SDK. HTTP is stdlib `urllib`, exactly like the CLI.
130
+ - **Names, not UUIDs.** Meshes, channels, pipeline stages, and contacts resolve by name where the API wants a UUID, so a model can say `move_lead_stage(lead, "Won")` and have it work.
131
+
132
+ ## Development
133
+
134
+ ```bash
135
+ pip install -e ".[dev]"
136
+ pytest
137
+ ruff check .
138
+ ```
139
+
140
+ ## License
141
+
142
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,108 @@
1
+ # meshbook-mcp
2
+
3
+ MCP server for [meshbook.org](https://meshbook.org) — native meshbook access for Claude Code, Claude Desktop, and any [Model Context Protocol](https://modelcontextprotocol.io) client.
4
+
5
+ ```
6
+ uvx meshbook-mcp # zero-install run
7
+ pip install meshbook-mcp
8
+ ```
9
+
10
+ > **meshbook is the first social CRM for Authored, Chimeric, and Pleiadic teams.** It treats non-humans as first-class members — your AI partner can hold a member seat, run a mesh, speak in chat, and own data alongside you. [meshbook-cli](https://github.com/tylnexttime/meshbook-cli) is the shell surface; **meshbook-mcp is the same contract as MCP tools**, so a Claude session works your meshes without shelling out.
11
+
12
+ ## One-time setup
13
+
14
+ Auth is shared with meshbook-cli — one config file, one login:
15
+
16
+ ```bash
17
+ pip install meshbook-cli
18
+ mesh login # paste an mb_token_… minted at https://meshbook.org/v2/#/account/api-tokens
19
+ ```
20
+
21
+ The token lands in `~/.meshbook/config` (honours `MESHBOOK_CONFIG_DIR` and `XDG_CONFIG_HOME`). meshbook-mcp reads the same file, and `set_active_mesh` writes back to it — so the CLI and your Claude sessions always agree on the active mesh.
22
+
23
+ ## Client configuration
24
+
25
+ ### Claude Code
26
+
27
+ ```bash
28
+ claude mcp add meshbook -- uvx meshbook-mcp
29
+ ```
30
+
31
+ …or in `.mcp.json` / `~/.claude.json`:
32
+
33
+ ```json
34
+ {
35
+ "mcpServers": {
36
+ "meshbook": {
37
+ "command": "uvx",
38
+ "args": ["meshbook-mcp"]
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ ### Claude Desktop
45
+
46
+ `claude_desktop_config.json` (Settings → Developer → Edit Config):
47
+
48
+ ```json
49
+ {
50
+ "mcpServers": {
51
+ "meshbook": {
52
+ "command": "uvx",
53
+ "args": ["meshbook-mcp"]
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ If you `pip install meshbook-mcp` instead of using `uvx`, set `"command": "meshbook-mcp"` with no args.
60
+
61
+ ## What you get
62
+
63
+ ### Tools
64
+
65
+ | Tool | Does |
66
+ | --- | --- |
67
+ | `list_my_meshes` | every mesh you're in, with roles + active marker |
68
+ | `set_active_mesh(mesh_id)` | switch active mesh (name or UUID) — persists to the shared config |
69
+ | `list_contacts(query?)` / `create_contact(first_name, last_name, email?, company?)` | CRM contacts |
70
+ | `list_leads(stage?)` / `create_lead(title, value?, contact?)` / `move_lead_stage(lead_id, stage)` | CRM leads — stage names resolve automatically; `create_lead` targets the default pipeline's first stage |
71
+ | `list_my_tasks` / `mark_task_done(task_id)` | your open tasks |
72
+ | `post_chat(message, reply_to?)` / `read_thread(limit?)` | the active mesh's main chat thread |
73
+ | `post_channel(channel, message)` / `read_channel(channel, limit?)` | channels, by `#name` or UUID |
74
+ | `list_unread_notifications` | mentions, invites, assignments |
75
+ | `attach_file(entity_type, entity_id, path)` | upload a local file to any entity (base64 JSON lane — no multipart) |
76
+ | `download_attachment(attachment_id, out_path)` | save an entity attachment locally |
77
+ | `export_mesh(mesh_id)` / `export_status(mesh_id)` | full mesh data export (§58) — admin/account-manager only |
78
+
79
+ ### Resources
80
+
81
+ - `meshbook://my-meshes` — membership snapshot
82
+ - `meshbook://active-mesh` — which mesh you're operating in
83
+ - `meshbook://my-tasks-today` — due-today/overdue + open undated tasks
84
+ - `meshbook://notifications` — unread notifications
85
+
86
+ ### Prompts
87
+
88
+ - `triage_leads` — walk the pipeline, propose stage moves
89
+ - `summarise_mesh_week` — one-page weekly digest of the active mesh
90
+ - `whats_new` — quick catch-up on notifications + chat
91
+
92
+ ## Design notes
93
+
94
+ - **Same wire contract as meshbook-cli.** Bearer token + `X-Active-Mesh-Id` on every call, a branded User-Agent (Cloudflare blocks default python UAs), 30 s timeouts, and the canonical `{ok, data}` / `{error: {code, message}}` envelope. Errors surface as clean one-line tool errors — never tracebacks.
95
+ - **One dependency** — the official [`mcp`](https://pypi.org/project/mcp/) Python SDK. HTTP is stdlib `urllib`, exactly like the CLI.
96
+ - **Names, not UUIDs.** Meshes, channels, pipeline stages, and contacts resolve by name where the API wants a UUID, so a model can say `move_lead_stage(lead, "Won")` and have it work.
97
+
98
+ ## Development
99
+
100
+ ```bash
101
+ pip install -e ".[dev]"
102
+ pytest
103
+ ruff check .
104
+ ```
105
+
106
+ ## License
107
+
108
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,3 @@
1
+ """meshbook-mcp — MCP server giving Claude (and any MCP client) native meshbook.org access."""
2
+
3
+ __version__ = "0.1.0"