# ElasticGraph MCP Server
This provides a Model Context Protocol (MCP) server for [ElasticGraph](https://block.github.io/elasticgraph/) using the [MCP python-sdk](https://github.com/modelcontextprotocol/python-sdk).
## Setup
1. Install dependencies:
```bash
# make install
uv sync
source .venv/bin/activate
```
2. Run the server:
The server runs on port 3000, and though there are no logs displayed, it is actively waiting for input.
```bash
# make server
uv pip install .
elasticgraph-mcp-server
```
## Development
### MCP Inspector
You can test your MCP server with Anthropic's [Inspector](https://modelcontextprotocol.io/docs/tools/inspector). To start:
1. Run the following command, which starts the server as a subprocess and launches the Inspector UI:
```bash
# make inspector
mcp dev src/elasticgraph_mcp/server.py
```
2. Open your browser and navigate to [http://localhost:5173](http://localhost:5173) to access the MCP Inspector UI.
### Goose
Add a development build to Goose:
1. In Goose, navigate to **Settings > Extensions > Add**.
2. Set **Type** to **StandardIO**.
3. Obtain the absolute path to the project’s CLI:
```bash
# Get the path and copy it to your clipboard
realpath .venv/bin/elasticgraph-mcp-server | pbcopy
```
4. Type `uv run` then paste that path
```bash
uv run </path/to/elasticgraph_mcp/.venv/bin/elasticgraph-mcp-server>
```
5. Enable the extension and verify that Goose recognizes your tools.
Ask goose: What tools and resources for ElasticGraph do you have?
## Development commands
This project uses `make` for common development tasks. To see all available commands, run:
```bash
make help
```
## Using Goose to help with development
You can use [Goose](https://block.github.io/goose/) to improve this MCP server. To teach goose about MCP, follow these steps:
### Setting Up a Goose Session
1. **Navigate to this MCP Server Directory:**
```bash
cd ai_tools/elasticgraph-mcp-server
```
2. **Prepare a Temporary Directory:**
```bash
mkdir tmp
touch tmp/.gitignore
echo "/*" > tmp/.gitignore
```
3. **Create MCP Instructions File:**
Copy MCP instructions from [MCP LLM instructions](https://modelcontextprotocol.io/llms-full.txt) to a new file:
```bash
touch tmp/mcp_for_llm_instructions.md
```
4. **Start a Goose Session:**
```bash
goose session
```
Try this prompt:
> First, learn about MCP servers from `tmp/mcp_for_llm_instructions.md`. Then, see the current MCP server I'm building in `src/elasticgraph_mcp/server.py`. Now <specify your changes>
Raw data
{
"_id": null,
"home_page": null,
"name": "elasticgraph-mcp-server",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "claude, cline, cursor, elasticgraph, mcp, model-context-protocol, windsurf",
"author": null,
"author_email": "Brian Sigafoos <briansigafoos@block.xyz>",
"download_url": "https://files.pythonhosted.org/packages/39/ec/cc01c64f3fc117013ddbccd065fec5635ec39816261f23af27bc9baa3d89/elasticgraph_mcp_server-0.1.1.tar.gz",
"platform": null,
"description": "# ElasticGraph MCP Server\n\nThis provides a Model Context Protocol (MCP) server for [ElasticGraph](https://block.github.io/elasticgraph/) using the [MCP python-sdk](https://github.com/modelcontextprotocol/python-sdk).\n\n## Setup\n\n1. Install dependencies:\n\n```bash\n# make install\nuv sync\n\nsource .venv/bin/activate\n```\n\n2. Run the server:\n\nThe server runs on port 3000, and though there are no logs displayed, it is actively waiting for input.\n\n```bash\n# make server\nuv pip install .\nelasticgraph-mcp-server\n```\n\n## Development\n\n### MCP Inspector\n\nYou can test your MCP server with Anthropic's [Inspector](https://modelcontextprotocol.io/docs/tools/inspector). To start:\n\n1. Run the following command, which starts the server as a subprocess and launches the Inspector UI:\n\n```bash\n# make inspector\nmcp dev src/elasticgraph_mcp/server.py\n```\n\n2. Open your browser and navigate to [http://localhost:5173](http://localhost:5173) to access the MCP Inspector UI.\n\n### Goose\n\nAdd a development build to Goose:\n\n1. In Goose, navigate to **Settings > Extensions > Add**.\n2. Set **Type** to **StandardIO**.\n3. Obtain the absolute path to the project\u2019s CLI:\n\n```bash\n# Get the path and copy it to your clipboard\nrealpath .venv/bin/elasticgraph-mcp-server | pbcopy\n```\n\n4. Type `uv run` then paste that path\n\n```bash\nuv run </path/to/elasticgraph_mcp/.venv/bin/elasticgraph-mcp-server>\n```\n\n5. Enable the extension and verify that Goose recognizes your tools.\n\nAsk goose: What tools and resources for ElasticGraph do you have?\n\n\n## Development commands\n\nThis project uses `make` for common development tasks. To see all available commands, run:\n\n```bash\nmake help\n```\n\n## Using Goose to help with development\n\nYou can use [Goose](https://block.github.io/goose/) to improve this MCP server. To teach goose about MCP, follow these steps:\n\n### Setting Up a Goose Session\n\n1. **Navigate to this MCP Server Directory:**\n\n```bash\ncd ai_tools/elasticgraph-mcp-server\n```\n\n2. **Prepare a Temporary Directory:**\n\n```bash\nmkdir tmp\ntouch tmp/.gitignore\necho \"/*\" > tmp/.gitignore\n```\n\n3. **Create MCP Instructions File:**\n\nCopy MCP instructions from [MCP LLM instructions](https://modelcontextprotocol.io/llms-full.txt) to a new file:\n\n```bash\ntouch tmp/mcp_for_llm_instructions.md\n```\n\n4. **Start a Goose Session:**\n\n```bash\ngoose session\n```\n\nTry this prompt:\n> First, learn about MCP servers from `tmp/mcp_for_llm_instructions.md`. Then, see the current MCP server I'm building in `src/elasticgraph_mcp/server.py`. Now <specify your changes>\n",
"bugtrack_url": null,
"license": null,
"summary": "MCP Server for ElasticGraph to allow goose, Cursor, etc to create and manage your ElasticGraph project.",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://block.github.io/elasticgraph/",
"Repository": "https://github.com/block/elasticgraph"
},
"split_keywords": [
"claude",
" cline",
" cursor",
" elasticgraph",
" mcp",
" model-context-protocol",
" windsurf"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "10e4e0df9a4215ba2d039744954abdb42a52670913a1957d15b67fd166b6c644",
"md5": "04c39ce6cdf80cd6e37efd166ab12833",
"sha256": "eaf13e3bf3cc73bed08bff305d15d182f855ba612e5614d681d8382688055626"
},
"downloads": -1,
"filename": "elasticgraph_mcp_server-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "04c39ce6cdf80cd6e37efd166ab12833",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 8177,
"upload_time": "2025-03-21T17:33:47",
"upload_time_iso_8601": "2025-03-21T17:33:47.236903Z",
"url": "https://files.pythonhosted.org/packages/10/e4/e0df9a4215ba2d039744954abdb42a52670913a1957d15b67fd166b6c644/elasticgraph_mcp_server-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "39eccc01c64f3fc117013ddbccd065fec5635ec39816261f23af27bc9baa3d89",
"md5": "0a05bee04dc263544504709da9d2dcab",
"sha256": "196834b68c8c886722c81e5fa5268a62ce0b69eb38e40ac787a577fbbcb7876b"
},
"downloads": -1,
"filename": "elasticgraph_mcp_server-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "0a05bee04dc263544504709da9d2dcab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 14078,
"upload_time": "2025-03-21T17:33:48",
"upload_time_iso_8601": "2025-03-21T17:33:48.118189Z",
"url": "https://files.pythonhosted.org/packages/39/ec/cc01c64f3fc117013ddbccd065fec5635ec39816261f23af27bc9baa3d89/elasticgraph_mcp_server-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-03-21 17:33:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "block",
"github_project": "elasticgraph",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "elasticgraph-mcp-server"
}